public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Sean Christopherson <seanjc@google.com>
To: Kevin Cheng <chengkev@google.com>
Cc: kvm@vger.kernel.org, yosryahmed@google.com,
	andrew.jones@linux.dev,  thuth@redhat.com, pbonzini@redhat.com
Subject: Re: [kvm-unit-tests PATCH V2 10/10] x86/svm: Add test for #UD when EFER.SVME=0
Date: Wed, 18 Feb 2026 12:44:04 -0800	[thread overview]
Message-ID: <aZYklHat_pun9ure@google.com> (raw)
In-Reply-To: <20260113003153.3344500-11-chengkev@google.com>

On Tue, Jan 13, 2026, Kevin Cheng wrote:
> +static void svm_ud_test_handler(struct ex_regs *regs)
> +{
> +	ud_fired = true;
> +	regs->rip += 3;
> +}
> +
> +static void svm_ud_test(void)
> +{
> +	u64 efer = rdmsr(MSR_EFER);
> +
> +	handle_exception(UD_VECTOR, svm_ud_test_handler);
> +	wrmsr(MSR_EFER, efer & ~EFER_SVME);
> +
> +	insn_invlpga();

Eh, just add proper helpers, or open code the asm.  And definitely use asm_safe()
instead of wiring up a dedicated #UD handler.  Ha!  And past me even proactively
waged war on copy+paste exception handling.

Untested, but something like this should work.

	asm_safe_report_ex("invlpga %rax, %ecx", "a"(0), "c"(0));
	asm_safe_report_ex("vmrun %rax", "a"(0));
	asm_safe_report_ex("vmsave %rax", "a"(0));
	asm_safe_report_ex("vmload %rax", "a"(0));

> diff --git a/x86/unittests.cfg b/x86/unittests.cfg
> index 118e7cdd0286d..ad447e5f82f9f 100644
> --- a/x86/unittests.cfg
> +++ b/x86/unittests.cfg
> @@ -253,11 +253,19 @@ arch = x86_64
>  [svm]
>  file = svm.flat
>  smp = 2
> -test_args = "-pause_filter_test -svm_intr_intercept_mix_smi -svm_insn_intercept_test -svm_pf_exception_test -svm_pf_exception_forced_emulation_test -svm_pf_inv_asid_test -svm_pf_inv_tlb_ctl_test -svm_event_injection"
> +test_args = "-pause_filter_test -svm_intr_intercept_mix_smi -svm_insn_intercept_test -svm_pf_exception_test -svm_pf_exception_forced_emulation_test -svm_pf_inv_asid_test -svm_pf_inv_tlb_ctl_test -svm_event_injection -svm_ud_test"
>  qemu_params = -cpu max,+svm -m 4g
>  arch = x86_64
>  groups = svm
>  
> +# Disable SKINIT and SVML to test STGI #UD when EFER.SVME=0
> +[svm_ud_test]
> +file = svm.flat
> +test_args = svm_ud_test
> +qemu_params = -cpu max,-skinit,-svm-lock,+svm -m 4g

KVM doesn't support SKINIT or SVM-LOCK, carving out a separate config just to
disable things that aren't supported is pointless.  If QEMU TCG gets false
failures due to its default model emulating the interactions with SKINIT and/or
SVM-LOCK, then I'd prefer to account for that in the test, not in the config. 

> +arch = x86_64
> +groups = svm
> +
>  [svm_event_injection]
>  file = svm.flat
>  test_args = svm_event_injection
> -- 
> 2.52.0.457.g6b5491de43-goog
> 

      reply	other threads:[~2026-02-18 20:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-13  0:31 [kvm-unit-tests PATCH V2 00/10] Improve test parity between SVM and VMX Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 01/10] x86/svm: Fix virq_inject SVM test failure Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 02/10] x86/nSVM: Add test for NPT A/D bits Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 03/10] x86/svm: Add tests for APIC passthrough Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 04/10] x86/nSVM: Add tests for instruction interrupts Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 05/10] x86/svm: Add tests for PF exception testing Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 06/10] x86/svm: Extend NPT test coverage for different page table levels Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 07/10] x86/svm: Add NPT ignored bits test Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 08/10] x86/svm: Add testing for NPT permissions on guest page tables Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 09/10] x86/svm: Add event injection check tests Kevin Cheng
2026-01-13  0:31 ` [kvm-unit-tests PATCH V2 10/10] x86/svm: Add test for #UD when EFER.SVME=0 Kevin Cheng
2026-02-18 20:44   ` Sean Christopherson [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=aZYklHat_pun9ure@google.com \
    --to=seanjc@google.com \
    --cc=andrew.jones@linux.dev \
    --cc=chengkev@google.com \
    --cc=kvm@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=thuth@redhat.com \
    --cc=yosryahmed@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox