x86/entry/64: Use native swapgs in asm_load_gs_index()
authorThomas Gleixner <tglx@linutronix.de>
Tue, 12 May 2020 12:54:14 +0000 (14:54 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 11 Jun 2020 13:14:42 +0000 (15:14 +0200)
When PARAVIRT_XXL is in use, then load_gs_index() uses xen_load_gs_index()
and asm_load_gs_index() is unused.

It's therefore pointless to use the paravirtualized SWAPGS implementation
in asm_load_gs_index(). Switch it to a plain swapgs.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Acked-by: Juergen Gross <jgross@suse.com>
Acked-by: Peter Zijlstra <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20200512213809.583980272@linutronix.de
arch/x86/entry/entry_64.S

index be8ed3a..9747b42 100644 (file)
@@ -1043,11 +1043,11 @@ idtentry simd_coprocessor_error         do_simd_coprocessor_error       has_error_code=0
  */
 SYM_FUNC_START(asm_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_load_gs_index)
@@ -1057,7 +1057,7 @@ EXPORT_SYMBOL(asm_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