KVM: selftests: Reload "good" vCPU state if vCPU hits shutdown
authorSean Christopherson <seanjc@google.com>
Thu, 17 Aug 2023 23:34:29 +0000 (16:34 -0700)
committerSean Christopherson <seanjc@google.com>
Fri, 25 Aug 2023 16:04:11 +0000 (09:04 -0700)
commit5002b112a5ad23579b7c3a36c9748740bcdfc88e
treef8b8f9cdce31cf4b9407c25c9c6b25a7eef062d5
parent740d087e7fff2a68fb1c7f01efb239e45f217485
KVM: selftests: Reload "good" vCPU state if vCPU hits shutdown

Reload known good vCPU state if the vCPU triple faults in any of the
race_sync_regs() subtests, e.g. if KVM successfully injects an exception
(the vCPU isn't configured to handle exceptions).  On Intel, the VMCS
is preserved even after shutdown, but AMD's APM states that the VMCB is
undefined after a shutdown and so KVM synthesizes an INIT to sanitize
vCPU/VMCB state, e.g. to guard against running with a garbage VMCB.

The synthetic INIT results in the vCPU never exiting to userspace, as it
gets put into Real Mode at the reset vector, which is full of zeros (as is
GPA 0 and beyond), and so executes ADD for a very, very long time.

Fixes: 60c4063b4752 ("KVM: selftests: Extend x86's sync_regs_test to check for event vector races")
Cc: Michal Luczaj <mhal@rbox.co>
Link: https://lore.kernel.org/r/20230817233430.1416463-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
tools/testing/selftests/kvm/x86_64/sync_regs_test.c