Messages in this thread | | | From | Thomas Gleixner <> | Subject | Re: [PATCH v3 4/6] x86/gsseg: move local_irq_save/restore() into asm_load_gs_index() | Date | Sat, 15 Oct 2022 10:51:54 +0200 |
| |
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
| |