Re: [PATCH v3 13/13] KVM: selftests: Add and use double-underscore versions of vmlaunch() and vmresume()
From: Yosry Ahmed
Date: Thu Aug 27 2026 - 02:52:22 EST
On Wed, Aug 26, 2026 at 4:39 PM Sean Christopherson <seanjc@xxxxxxxxxx> wrote:
>
> Add double-underscore helpers for VMLAUNCH and VMRESUME, and have the
> "outer" APIs assert success, as is common through KVM selftests. In
> addition to providing more familiar interfaces, this makes it more obvious
> which paths expect VM-Enter *failure*.
Nice.
>
> Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx>
Reviewed-by: Yosry Ahmed <yosry@xxxxxxxxxx>
Few semi-related comments below.
[..]
> diff --git a/tools/testing/selftests/kvm/x86/aperfmperf_test.c b/tools/testing/selftests/kvm/x86/aperfmperf_test.c
> index 11f5894d8ac7..a082658c1e48 100644
> --- a/tools/testing/selftests/kvm/x86/aperfmperf_test.c
> +++ b/tools/testing/selftests/kvm/x86/aperfmperf_test.c
> @@ -83,7 +83,7 @@ static void l1_vmx_code(struct vmx_pages *vmx)
> vmreadz(CPU_BASED_VM_EXEC_CONTROL) | CPU_BASED_USE_MSR_BITMAPS);
>
> GUEST_ASSERT(!vmwrite(GUEST_RIP, (u64)l2_guest_code));
Do we wanna give the same treatment to vmwrite()?
> - GUEST_ASSERT(!vmlaunch());
> + vmlaunch();
> }
>
> static void guest_code(void *nested_test_data)
[..]
> diff --git a/tools/testing/selftests/kvm/x86/nested_emulation_test.c b/tools/testing/selftests/kvm/x86/nested_emulation_test.c
> index 2b38eff4f516..11fe4a31eda0 100644
> --- a/tools/testing/selftests/kvm/x86/nested_emulation_test.c
> +++ b/tools/testing/selftests/kvm/x86/nested_emulation_test.c
> @@ -102,7 +102,7 @@ static void guest_code(void *test_data)
> exit_insn_len = vmcb->control.next_rip - vmcb->save.rip;
> GUEST_ASSERT_EQ(vmcb->save.rip, (u64)l2_instruction);
> } else {
> - GUEST_ASSERT_EQ(i ? vmresume() : vmlaunch(), 0);
> + i ? vmresume() : vmlaunch();
Ewww
> exit_reason = vmreadz(VM_EXIT_REASON);
> exit_insn_len = vmreadz(VM_EXIT_INSTRUCTION_LEN);
> GUEST_ASSERT_EQ(vmreadz(GUEST_RIP), (u64)l2_instruction);
> diff --git a/tools/testing/selftests/kvm/x86/nested_exceptions_test.c b/tools/testing/selftests/kvm/x86/nested_exceptions_test.c
> index 50c271a03692..c36c11b5f518 100644
> --- a/tools/testing/selftests/kvm/x86/nested_exceptions_test.c
> +++ b/tools/testing/selftests/kvm/x86/nested_exceptions_test.c
> @@ -112,7 +112,7 @@ static void vmx_run_l2(void *l2_code, int vector, u32 error_code)
> {
> GUEST_ASSERT(!vmwrite(GUEST_RIP, (u64)l2_code));
>
> - GUEST_ASSERT_EQ(vector == SS_VECTOR ? vmlaunch() : vmresume(), 0);
> + vector == SS_VECTOR ? vmlaunch() : vmresume();
Ewwwww
Can we make these if/else statements? It was already ugly, but it
looks even more ugly outside of GUEST_ASSERT_EQ().
>
> if (vector == FAKE_TRIPLE_FAULT_VECTOR)
> return;