On Tue, Aug 23, 2022, Vasant Karasulli wrote: > Reading or writing MSR_IA32_APICBASE is typically an intercepted > operation and causes #VC exception when the test is launched as > an SEV-ES guest. > > So calling pre_boot_apic_id() and reset_apic() before the IDT is > set up in setup_idt() and load_idt() might cause problems. > > Hence move percpu data setup and reset_apic() call after > setup_idt() and load_idt(). > > Fixes: 3c50214c97f173f5e0f82c7f248a7c62707d8748 (x86: efi: Provide percpu storage) > Signed-off-by: Vasant Karasulli <vkarasulli@xxxxxxx> > --- Reviewed-by: Sean Christopherson <seanjc@xxxxxxxxxx> > lib/x86/setup.c | 20 ++++++++++++-------- > 1 file changed, 12 insertions(+), 8 deletions(-) > > diff --git a/lib/x86/setup.c b/lib/x86/setup.c > index 7df0256..712e292 100644 > --- a/lib/x86/setup.c > +++ b/lib/x86/setup.c > @@ -192,8 +192,6 @@ static void setup_segments64(void) > write_gs(KERNEL_DS); > write_ss(KERNEL_DS); > > - /* Setup percpu base */ > - wrmsr(MSR_GS_BASE, (u64)&__percpu_data[pre_boot_apic_id()]); > > /* > * Update the code segment by putting it on the stack before the return > @@ -322,7 +320,7 @@ efi_status_t setup_efi(efi_bootinfo_t *efi_bootinfo) > } > return status; > } > - > + Huh. This causes a conflict for me. My local repo has a tab here that is presumably being removed, but this patch doesn't have anything. If I manually add back the tab, all is well. I suspect your client may be stripping trailing whitespace.