Kernel KVM virtualization development
 help / color / mirror / Atom feed
* [PATCH 0/8] KVM: selftests: Stress save+restore and #PF (ft. nested)
@ 2026-05-18 20:25 Yosry Ahmed
  2026-05-18 20:25 ` [PATCH 1/8] KVM: selftests: Fix offsets in GPR switching for nSVM Yosry Ahmed
                   ` (9 more replies)
  0 siblings, 10 replies; 12+ messages in thread
From: Yosry Ahmed @ 2026-05-18 20:25 UTC (permalink / raw)
  To: Sean Christopherson; +Cc: Paolo Bonzini, kvm, linux-kernel, Yosry Ahmed

Add a stress test for save+restore while the guest is triggering and
handling #PFs, in both L1 and L2. The goal was to create a generic
selftest that would catch bugs like the one fixed by 5c247d08bc81 ("KVM:
nSVM: Use vcpu->arch.cr2 when updating vmcb12 on nested #VMEXIT"),
instead of relying on high-level testing (e.g. building GCC in L2) to
catch it.

The test tries to be as generic as possible by triggering #PFs in a
guest and installing a proper #PF handler, while the host is
continuously doing save+restore cycles. Exiting to userspace is randomly
triggered by a second thread that constantly signals the vCPU thread.

Patches (1-4) are prep patches, fixing GPR switching for nSVM and
generalizing it to cover nVMX, which is needed for the test to run
properly with nVMX. Patch 4 removes HORRIFIC_L2_UCALL_CLOBBER_HACK, as
it is no longer needed. While this series does not have the "complete"
fix added by commit 6783ca4105a7 ("KVM: selftests: Add a shameful hack
to preserve/clobber GPRs across ucall"), it's a good step in the right
direction.

Patches (5-8) add the actual test. The test is first introduced as a
simple (read: dummy) stress test that just explicitly syncs to userspace
after each #PF handling to do save+restore, then gradually evolves to
add the random signaling and nested support. After the last patch, the
test reliably reproduces the CR2 bug.

This series conflicts with reworking L2 stack allocation in [1], but the
conflict should be trivial to fix regardless of which series lands
first.

[1]https://lore.kernel.org/kvm/20260506015733.1671124-1-yosry@kernel.org/

Yosry Ahmed (8):
  KVM: selftests: Fix offsets in GPR switching for nSVM
  KVM: selftests: Move GPR load/save definitions outside of nSVM code
  KVM: selftests: Reuse GPR switching logic for nVMX
  KVM: selftests: Drop HORRIFIC_L2_UCALL_CLOBBER_HACK
  KVM: selftests: Add basic stress test for save+restore and #PF
    handling
  KVM: selftests: Trigger save+restore randomly in the #PF stress test
  KVM: selftests: Support running stress save+restore and #PF test in L2
  KVM: selftests: Trigger L2->L1 exits stress save+restore and #PF test

 tools/testing/selftests/kvm/Makefile.kvm      |   1 +
 .../selftests/kvm/include/x86/processor.h     |  65 +++-
 tools/testing/selftests/kvm/include/x86/vmx.h |  46 +--
 .../testing/selftests/kvm/lib/x86/processor.c |  13 +
 tools/testing/selftests/kvm/lib/x86/svm.c     |  29 +-
 tools/testing/selftests/kvm/lib/x86/ucall.c   |  32 +-
 .../kvm/x86/stress_save_restore_pf_test.c     | 320 ++++++++++++++++++
 7 files changed, 414 insertions(+), 92 deletions(-)
 create mode 100644 tools/testing/selftests/kvm/x86/stress_save_restore_pf_test.c


base-commit: a9512a611bd030088f13477258d1f8103cceaa40
-- 
2.54.0.563.g4f69b47b94-goog


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2026-05-28 22:12 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-18 20:25 [PATCH 0/8] KVM: selftests: Stress save+restore and #PF (ft. nested) Yosry Ahmed
2026-05-18 20:25 ` [PATCH 1/8] KVM: selftests: Fix offsets in GPR switching for nSVM Yosry Ahmed
2026-05-18 20:25 ` [PATCH 2/8] KVM: selftests: Move GPR load/save definitions outside of nSVM code Yosry Ahmed
2026-05-18 20:25 ` [PATCH 3/8] KVM: selftests: Reuse GPR switching logic for nVMX Yosry Ahmed
2026-05-18 20:25 ` [PATCH 4/8] KVM: selftests: Drop HORRIFIC_L2_UCALL_CLOBBER_HACK Yosry Ahmed
2026-05-18 20:25 ` [PATCH 5/8] KVM: selftests: Add basic stress test for save+restore and #PF handling Yosry Ahmed
2026-05-28 22:12   ` Yosry Ahmed
2026-05-18 20:25 ` [PATCH 6/8] KVM: selftests: Trigger save+restore randomly in the #PF stress test Yosry Ahmed
2026-05-18 20:25 ` [PATCH 7/8] KVM: selftests: Support running stress save+restore and #PF test in L2 Yosry Ahmed
2026-05-18 20:25 ` [PATCH 8/8] KVM: selftests: Trigger L2->L1 exits stress save+restore and #PF test Yosry Ahmed
2026-05-18 20:40 ` [PATCH 0/8] KVM: selftests: Stress save+restore and #PF (ft. nested) Yosry Ahmed
2026-05-28 19:26 ` Yosry Ahmed

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox