Re: [PATCH 6/6] x86/gsseg: use the LKGS instruction if available for load_gs_index()

From: H. Peter Anvin
Date: Fri Oct 07 2022 - 16:03:55 EST


On October 7, 2022 12:24:13 PM PDT, Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:
>On Fri, Oct 07, 2022 at 06:01:06PM +0000, Li, Xin3 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));
>> > > }
>> >
>> > I'm very sure none of this was tested... the .fixup section hasn't existed for
>> > almost a year now.
>>
>> Weird, did you ever check a kernel dump?
>
>$ readelf -WS defconfig-build/vmlinux | grep fixup
>[ 5] .pci_fixup PROGBITS ffffffff826a5350 18a5350 003570 00 A 0 0 16
>[ 6] .rela.pci_fixup RELA 0000000000000000 360c388 005028 18 I 60 5 8
>
>In fact, when I add one I get:
>
>ld: warning: orphan section `.fixup' from `arch/x86/kernel/traps.o' being placed in section `.fixup'

Perhaps the two of you need to compare confugurations?