The ultimate goal of this series is to be able to check for forced emulation support in a nVMX test that runs with a garbage IDT (the test currently assumed forced emulation is always available, which fails for obvious reasons). Getting there is a bit annoying, mostly because the EFI path happens to load the IDT after setup_idt(). I _could_ have just tweaked the EFI path, but opted for a slightly bigger overhaul, e.g. so that it's easier to see that the BSP is responsible for loading the IDT, and so that setup_idt() can _guarantee_ it can handle a #UD without exploding. Sean Christopherson (6): x86: Call setup_idt() from start{32,64}(), not from smp_init() x86: Drop protection against setup_idt() being called multiple times x86: Move call to load_idt() out of setup_tr_and_percpu macro x86: Load IDT on BSP as part of setup_idt() x86: Cache availability of forced emulation during setup_idt() nVMX: Force emulation of LGDT/LIDT in iff FEP is available lib/x86/desc.c | 29 ++++++++++++++++++++++++----- lib/x86/desc.h | 14 +------------- lib/x86/setup.c | 1 - lib/x86/smp.c | 1 - x86/access.c | 2 +- x86/cstart.S | 3 ++- x86/cstart64.S | 2 +- x86/emulator.c | 11 +++++------ x86/emulator64.c | 2 +- x86/la57.c | 2 +- x86/lam.c | 2 +- x86/msr.c | 2 +- x86/pmu.c | 2 +- x86/vmx_tests.c | 7 ++++--- 14 files changed, 43 insertions(+), 37 deletions(-) base-commit: 72d110d8286baf1b355301cc8c8bdb42be2663fb -- 2.49.0.1266.g31b7d2e469-goog