Messages in this thread | | | Date | Fri, 07 Oct 2022 10:45:14 -0700 | From | "H. Peter Anvin" <> | Subject | Re: [PATCH 6/6] x86/gsseg: use the LKGS in struction if available for load gs index() |
| |
On October 7, 2022 7:47:09 AM PDT, Peter Zijlstra <peterz@infradead.org> wrote: >On Thu, Oct 06, 2022 at 08:40:41AM -0700, Xin Li wrote: > >> static inline void native_load_gs_index(unsigned int selector) >> { >> + u16 sel = selector; >> + >> + /* >> + * Note: the fixup is used for the LKGS instruction, but >> + * it needs to be attached to the primary instruction sequence >> + * as it isn't something that gets patched. >> + * >> + * %rax is provided to the assembly routine as a scratch >> + * register. >> + */ >> + alternative_io("1: call asm_load_gs_index\n" >> + ".pushsection \".fixup\",\"ax\"\n" >> + "2: xorl %k[sel], %k[sel]\n" >> + " jmp 1b\n" >> + ".popsection\n" >> + _ASM_EXTABLE(1b, 2b), >> + _ASM_BYTES(0x3e) LKGS_DI, >> + X86_FEATURE_LKGS, >> + ASM_OUTPUT2([sel] "+D" (sel), ASM_CALL_CONSTRAINT), >> + ASM_NO_INPUT_CLOBBER(_ASM_AX)); >> } > >I'm very sure none of this was tested... the .fixup section hasn't >existed for almost a year now. > > e5eefda5aa51 ("x86: Remove .fixup section")
Xin, what did you use as the forward-porting baseline?
| |