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) 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

