mbox series

[kvm-unit-tests,GIT,PULL] x86: Fixes, new tests, and more!

Message ID 20250222014232.2301713-1-seanjc@google.com (mailing list archive)
State New
Headers show
Series [kvm-unit-tests,GIT,PULL] x86: Fixes, new tests, and more! | expand

Pull-request

https://github.com/kvm-x86/kvm-unit-tests.git tags/kvm-x86-2025.02.21

Message

Sean Christopherson Feb. 22, 2025, 1:42 a.m. UTC
Please pull a pile of long-overdue changes.  Note, a few of the new tests
fail on AMD CPUs (LAM and  bus lock #DB).  I was hoping to get the KVM
fixes posted today, but I kept running into KUT failures (there's still
one more failure with apic-split when running on Turin with AVIC enabled,
but that one is pre-existing).

If someone wants a project, SEV-ES, SEV-SNP, and TDX support is still
awaiting review+merge.

The following changes since commit f77fb696cfd0e4a5562cdca189be557946bf522f:

  arm: pmu: Actually use counter 0 in test_event_counter_config() (2025-02-04 14:09:20 +0100)

are available in the Git repository at:

  https://github.com/kvm-x86/kvm-unit-tests.git tags/kvm-x86-2025.02.21

for you to fetch changes up to 8d9218bb6b7ced9e8244250b8f0d8b2090c1042a:

  x86/debug: Add a split-lock #AC / bus-lock #DB testcase (2025-02-21 17:11:29 -0800)

----------------------------------------------------------------
KVM-Unit-Tests x86 changes:

 - Expand the per-CPU data+stack area to 12KiB per CPU to reduce the
   probability of tests overflowing their stack and clobbering pre-CPU
   data.

 - Add testcases for LA57 canonical checks.

 - Add testcases for LAM.

 - Add a smoke test to make sure KVM doesn't bleed split-lock #AC/#DB into
   the guest.

 - Fix many warts and bugs in the PMU test, and prepare it for PMU version 5
   and beyond.

 - Many misc fixes and cleanups.

----------------------------------------------------------------
Aaron Lewis (1):
      x86: Increase the timeout for the test "vmx_apicv_test"

Binbin Wu (3):
      x86: Allow setting of CR3 LAM bits if LAM supported
      x86: Add test cases for LAM_{U48,U57}
      x86: Add test case for INVVPID with LAM

Dapeng Mi (17):
      x86: pmu: Remove blank line and redundant space
      x86: pmu: Refine fixed_events[] names
      x86: pmu: Align fields in pmu_counter_t to better pack the struct
      x86: pmu: Enlarge cnt[] length to 48 in check_counters_many()
      x86: pmu: Print measured event count if test fails
      x86: pmu: Fix potential out of bound access for fixed events
      x86: pmu: Fix cycles event validation failure
      x86: pmu: Use macro to replace hard-coded branches event index
      x86: pmu: Use macro to replace hard-coded ref-cycles event index
      x86: pmu: Use macro to replace hard-coded instructions event index
      x86: pmu: Enable and disable PMCs in loop() asm blob
      x86: pmu: Improve instruction and branches events verification
      x86: pmu: Improve LLC misses event verification
      x86: pmu: Adjust lower boundary of llc-misses event to 0 for legacy CPUs
      x86: pmu: Add IBPB indirect jump asm blob
      x86: pmu: Adjust lower boundary of branch-misses event
      x86: pmu: Optimize emulated instruction validation

Hang SU (1):
      x86: replace segment selector magic number with macro definition

Maxim Levitsky (6):
      pmu_lbr: drop check for MSR_LBR_TOS != 0
      x86: Add _safe() and _fep_safe() variants to segment base load instructions
      x86: Add a few functions for gdt manipulation
      x86: Move struct invpcid_desc descriptor to processor.h
      x86: Add testcases for writing (non)canonical LA57 values to MSRs and bases
      nVMX: add a test for canonical checks of various host state vmcs12 fields.

Nicolas Saenz Julienne (1):
      x86: Make set/clear_bit() atomic

Robert Hoo (1):
      x86: Add test case for LAM_SUP

Sean Christopherson (12):
      x86: Force host-phys-bits for normal maxphyaddr access tests
      nVMX: Clear A/D enable bit in EPTP after negative testcase on non-A/D host
      x86: Make per-CPU stacks page-aligned
      x86: Add a macro for the size of the per-CPU stack/data area
      x86: Increase per-CPU stack/data area to 12KiB
      x86: Expand LA57 test to 64-bit mode (to prep for canonical testing)
      x86: Drop "enabled" field from "struct kvm_vcpu_pv_apf_data"
      x86: Move descriptor table selector #defines to the top of desc.h
      x86: Commit to using __ASSEMBLER__ instead of __ASSEMBLY__
      x86: Move SMP #defines from apic-defs.h to smp.h
      x86: Include libcflat.h in atomic.h for u64 typedef
      x86/debug: Add a split-lock #AC / bus-lock #DB testcase

Xiong Zhang (1):
      x86: pmu: Remove duplicate code in pmu_init()

Zide Chen (3):
      nVMX: Account for gaps in fixed performance counters
      x86/pmu: Fixed PEBS basic record parsing issue
      x86/pmu: Execute PEBS test only if PEBSRecordFormat >= 4

 lib/x86/apic-defs.h  |   7 -
 lib/x86/apic.h       |   2 +
 lib/x86/asm/page.h   |   4 +-
 lib/x86/atomic.h     |   2 +
 lib/x86/desc.c       |  38 ++++-
 lib/x86/desc.h       | 132 ++++++++--------
 lib/x86/msr.h        |  42 +++++
 lib/x86/pmu.c        |   5 -
 lib/x86/processor.h  | 101 +++++++++++-
 lib/x86/setup.c      |   2 +-
 lib/x86/smp.c        |   2 +-
 lib/x86/smp.h        |  18 ++-
 x86/Makefile.common  |   3 +-
 x86/Makefile.i386    |   2 +-
 x86/Makefile.x86_64  |   1 +
 x86/asyncpf.c        |   1 -
 x86/cstart.S         |  11 +-
 x86/cstart64.S       |  17 ++-
 x86/debug.c          |  45 ++++++
 x86/efi/efistart64.S |   3 +-
 x86/la57.c           | 342 ++++++++++++++++++++++++++++++++++++++++-
 x86/lam.c            | 286 ++++++++++++++++++++++++++++++++++
 x86/pcid.c           |   6 -
 x86/pmu.c            | 423 +++++++++++++++++++++++++++++++++++++++++----------
 x86/pmu_lbr.c        |   1 -
 x86/pmu_pebs.c       |   6 +-
 x86/trampolines.S    |  16 +-
 x86/unittests.cfg    |  13 +-
 x86/vmx_tests.c      | 237 ++++++++++++++++++++++++++++-
 29 files changed, 1551 insertions(+), 217 deletions(-)
 create mode 100644 x86/lam.c