On Tue, 12 May 2020 23:01:01 +0200 Thomas Gleixner <[email protected]> wrote:
> When PARAVIRT_XXL is in use, then load_gs_index() uses > xen_load_gs_index() and (asm_))native_load_gs_index() is unused. > > It's therefore pointless to use the paravirtualized SWAPGS implementation > in asm_native_load_gs_index(). Switch it to a plain swapgs. > > Signed-off-by: Thomas Gleixner <[email protected]> > Cc: Juergen Gross <[email protected]> > --- > arch/x86/entry/entry_64.S | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > --- a/arch/x86/entry/entry_64.S > +++ b/arch/x86/entry/entry_64.S > @@ -1043,11 +1043,11 @@ idtentry simd_coprocessor_error do_simd > */ > SYM_FUNC_START(asm_native_load_gs_index) Small nit, but I would just call this: asm_load_gs_index. The "native" word is usually reserved for functions that are for bare metal and have a paravirt counterpart. As there is a native_load_gs_index(), I don't envision a need for a paravirt version of the asm function. Other than that. Reviewed-by: Steven Rostedt (VMware) <[email protected]> -- Steve > FRAME_BEGIN > - SWAPGS > + swapgs > .Lgs_change: > movl %edi, %gs > 2: ALTERNATIVE "", "mfence", X86_BUG_SWAPGS_FENCE > - SWAPGS > + swapgs > FRAME_END > ret > SYM_FUNC_END(asm_native_load_gs_index) > @@ -1057,7 +1057,7 @@ EXPORT_SYMBOL(asm_native_load_gs_index) > .section .fixup, "ax" > /* running with kernelgs */ > SYM_CODE_START_LOCAL_NOALIGN(.Lbad_gs) > - SWAPGS /* switch back to user gs */ > + swapgs /* switch back to user gs */ > .macro ZAP_GS > /* This can't be a string because the preprocessor needs to see it. */ > movl $__USER_DS, %eax

