Messages in this thread | | | From | Brian Gerst <> | Date | Sat, 8 Oct 2022 08:40:06 -0400 | Subject | Re: [PATCH 6/6] x86/gsseg: use the LKGS instruction if available for load_gs_index() |
| |
On Sat, Oct 8, 2022 at 1:40 AM Li, Xin3 <xin3.li@intel.com> wrote: > > > > + 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)); > > > } > > > > > > #endif /* CONFIG_X86_64 */ > > > -- > > > 2.34.1 > > > > There are not that many call sites, so using something like this (incorporating > > Peter Z's suggestion for the exception handler) would be better from a code > > readability perspective vs. a tiny increase in code size. > > The existing approach patches the binary code thus we don't need to check it at runtime.
static_cpu_has() uses alternatives to patch the branch, so there is no runtime check after early boot.
-- Brian Gerst
| |