All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yosry Ahmed <yosry@kernel.org>
To: Sean Christopherson <seanjc@google.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	kvm@vger.kernel.org,  linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/8] KVM: selftests: Stress save+restore and #PF (ft. nested)
Date: Thu, 28 May 2026 19:26:53 +0000	[thread overview]
Message-ID: <ahiWveuSBa0NiETI@google.com> (raw)
In-Reply-To: <20260518202514.2037078-1-yosry@kernel.org>

On Mon, May 18, 2026 at 08:25:06PM +0000, Yosry Ahmed wrote:
> 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

This series will need a new version with a reworked patch 1, potentially
after some TDX selftests infrastructure lands. The .equ approach to
define offsets doesn't always work. See details here:

https://lore.kernel.org/kvm/ahiVwxm2kD0TVqxj@google.com/

>   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
> 
> 

      parent reply	other threads:[~2026-05-28 19:26 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ahiWveuSBa0NiETI@google.com \
    --to=yosry@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=seanjc@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.