> On Oct 11, 2020, at 6:19 PM, Qi, Yadong <yadong.qi@xxxxxxxxx> wrote: > >> On my bare-metal machine, I get a #GP on the WRMSR that writes the EOI inside >> ipi() : >> >> Test suite: vmx_sipi_signal_test >> Unhandled exception 13 #GP at ip 0000000000417eba >> error_code=0000 rflags=00010002 cs=00000008 >> rax=0000000000000000 rcx=000000000000080b rdx=0000000000000000 >> rbx=0000000000000000 >> rbp=000000000053a238 rsi=0000000000000000 rdi=000000000000000b >> r8=000000000000000a r9=00000000000003f8 r10=000000000000000d >> r11=0000000000000000 >> r12=000000000040c7a5 r13=0000000000000000 r14=0000000000000000 >> r15=0000000000000000 >> cr0=0000000080000011 cr2=0000000000000000 cr3=000000000041f000 >> cr4=0000000000000020 >> cr8=0000000000000000 >> STACK: @417eba 417f36 417481 417383 >> >> I did not dig much deeper. Could it be that there is some confusion between >> xapic/x2apic ? > > Thanks, Nadav. > I cannot reproduce the #GP issue on my bare metal machine. > And I am a little bit confused, there is no EOI MSR write in this test suite, > how the #GP comes out... > Could you provide more info for me to reproduce the issue? We might have different definitions for “bare-metal” :) I meant that I ran it directly on the machine without KVM. See [1]. You do need some access serial console through the iDRAC/ilo/etc.. Anyhow, I figured out that you forgot to setup CR3 on the AP. Doing something like: + on_cpu(1, update_cr3, (void *)read_cr3()); /* start AP */ on_cpu_async(1, sipi_test_ap_thread, NULL); Solves the problem. You may want to do it in a slightly cleaner way, or extract update_cr3() to one of the libs to avoid further code duplication. Regards, Nadav [1] https://patchwork.kernel.org/patch/11053903/