KVM: selftests: Extend state_test to check next_rip

Similar to vGIF, extend state_test to make sure that next_rip is saved
correctly in nested state. GUEST_SYNC() in L2 causes IO emulation by
KVM, which advances the RIP to the value of next_rip. Hence, if next_rip
is saved correctly, its value should match the saved RIP value.

Signed-off-by: Yosry Ahmed <yosry@kernel.org>
Link: https://patch.msgid.link/20260225005950.3739782-5-yosry@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
Yosry Ahmed 2026-02-25 00:59:46 +00:00 committed by Sean Christopherson
parent 2303ca26fb
commit e5cdd34b5f

View File

@ -236,6 +236,17 @@ void svm_check_nested_state(int stage, struct kvm_x86_state *state)
if (stage == 6)
TEST_ASSERT_EQ(!!(vmcb->control.int_ctl & V_GIF_MASK), 0);
}
if (kvm_cpu_has(X86_FEATURE_NRIPS)) {
/*
* GUEST_SYNC() causes IO emulation in KVM, in which case the
* RIP is advanced before exiting to userspace. Hence, the RIP
* in the saved state should be the same as nRIP saved by the
* CPU in the VMCB.
*/
if (stage == 6)
TEST_ASSERT_EQ(vmcb->control.next_rip, state->regs.rip);
}
}
void check_nested_state(int stage, struct kvm_x86_state *state)