mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
KVM: selftests: hyperv_features: test write of 1 to HV_X64_MSR_RESET
Writing 1 to HV_X64_MSR_RESET triggers a real vCPU reset; the test was writing 0 because the host loop was not prepared to handle the resulting KVM_EXIT_SYSTEM_EVENT. Add the missing handling and write 1 to actually exercise the reset path. Signed-off-by: Piotr Zarycki <piotr.zarycki@gmail.com> Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Link: https://patch.msgid.link/20260523111857.195396-1-piotr.zarycki@gmail.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
4e0fdd9b0d
commit
5bd0387e3b
|
|
@ -26,6 +26,7 @@ struct msr_data {
|
|||
bool fault_expected;
|
||||
bool write;
|
||||
u64 write_val;
|
||||
bool reset_expected;
|
||||
};
|
||||
|
||||
struct hcall_data {
|
||||
|
|
@ -267,14 +268,9 @@ static void guest_test_msrs_access(void)
|
|||
case 16:
|
||||
msr->idx = HV_X64_MSR_RESET;
|
||||
msr->write = true;
|
||||
/*
|
||||
* TODO: the test only writes '0' to HV_X64_MSR_RESET
|
||||
* at the moment, writing some other value there will
|
||||
* trigger real vCPU reset and the code is not prepared
|
||||
* to handle it yet.
|
||||
*/
|
||||
msr->write_val = 0;
|
||||
msr->write_val = 1;
|
||||
msr->fault_expected = false;
|
||||
msr->reset_expected = true;
|
||||
break;
|
||||
|
||||
case 17:
|
||||
|
|
@ -497,6 +493,15 @@ static void guest_test_msrs_access(void)
|
|||
msr->idx, msr->write ? "write" : "read");
|
||||
|
||||
vcpu_run(vcpu);
|
||||
|
||||
if (msr->reset_expected) {
|
||||
TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_SYSTEM_EVENT);
|
||||
TEST_ASSERT(vcpu->run->system_event.type == KVM_SYSTEM_EVENT_RESET,
|
||||
"Expected reset system event, got type %u",
|
||||
vcpu->run->system_event.type);
|
||||
goto next_stage;
|
||||
}
|
||||
|
||||
TEST_ASSERT_KVM_EXIT_REASON(vcpu, KVM_EXIT_IO);
|
||||
|
||||
switch (get_ucall(vcpu, &uc)) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user