Re: [patch V5 02/38] x86/entry/64: Use native swapgs in asm_native_load_gs_index()

From: Steven Rostedt
Date: Tue May 12 2020 - 22:02:36 EST


On Tue, 12 May 2020 23:01:01 +0200
Thomas Gleixner <tglx@xxxxxxxxxxxxx> 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 <tglx@xxxxxxxxxxxxx>
> Cc: Juergen Gross <jgross@xxxxxxxx>
> ---
> 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) <rostedt@xxxxxxxxxxx>

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