mbox series

[kvm-unit-tests,0/8] x86: APIC bug fix and cleanup

Message ID 20220121231852.1439917-1-seanjc@google.com (mailing list archive)
Headers show
Series x86: APIC bug fix and cleanup | expand

Message

Sean Christopherson Jan. 21, 2022, 11:18 p.m. UTC
Fix a bug introduced by the UEFI support where setup_tss() can race with
enable_x2apic() and crash the test due to attempting to read an x2APIC MSR
prior to enabling x2APIC (failure manifests in smptest3).

In an attempt to avoid similar bugs in the future, clean up the per-cpu
stuff and convert apic_ops into a per-cpu pointer.  32-bit KUT has a
chick-and-egg problem due to using the APIC ID to choose the selector
for GS (the per-cpu segment), so the original bug "has" to say on a
dedicated helper.

Sean Christopherson (8):
  x86: Always use legacy xAPIC to get APIC ID during TSS setup
  x86: nVMX: Load actual GS.base for both guest and host
  x86: smp: Replace spaces with tabs
  x86: desc: Replace spaces with tabs
  x86: Add proper helpers for per-cpu reads/writes
  x86: apic: Replace spaces with tabs
  x86: apic: Track APIC ops on a per-cpu basis
  x86: apic: Make xAPIC and I/O APIC pointers static

 lib/x86/apic-defs.h |   3 +-
 lib/x86/apic.c      | 157 ++++++++++++++++++++++++--------------------
 lib/x86/apic.h      |   5 +-
 lib/x86/desc.c      | 120 ++++++++++++++++-----------------
 lib/x86/desc.h      |  68 +++++++++----------
 lib/x86/setup.c     |   4 +-
 lib/x86/smp.c       | 128 +++++++++++++++++-------------------
 lib/x86/smp.h       |  67 +++++++++++++++++++
 x86/vmx.c           |   4 +-
 9 files changed, 311 insertions(+), 245 deletions(-)


base-commit: 3df301615cead4142fe28629d86142de32fc6768