lkml.org 
[lkml]   [2022]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v3 4/6] x86/gsseg: move local_irq_save/restore() into asm_load_gs_index()
Date
On Thu, Oct 13 2022 at 13:01, Xin Li wrote:
> From: "H. Peter Anvin (Intel)" <hpa@zytor.com>
>
> The need to disable/enable interrupts around asm_load_gs_index() is a
> consequence of the implementation. Prepare for using the LKGS
> instruction, which is locally atomic and therefore doesn't need
> interrupts disabled.

*Shudder*. We want less ASM not more.

> static inline void native_load_gs_index(unsigned int selector)
> {
> - unsigned long flags;
> -
> - local_irq_save(flags);
> asm_load_gs_index(selector);
> - local_irq_restore(flags);
> }

static inline void native_load_gs_index(unsigned int selector)
{
unsigned long flags;

if (cpu_feature_enabled(LKGS)) {
native_lkgs(selector);
} else {
local_irq_save(flags);
asm_load_gs_index(selector);
local_irq_restore(flags);
}
}

For paravirt enabled kernels we want during feature detection:

if (cpu_feature_enabled(LKGS)))
pv_ops.cpu.load_gs_index = native_lkgs;

No?

Thanks,

tglx

\
 
 \ /
  Last update: 2022-10-15 10:52    [W:1.833 / U:0.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site