diff options
author | Paolo Bonzini | 2019-04-11 15:57:14 +0200 |
---|---|---|
committer | Paolo Bonzini | 2019-04-16 15:37:39 +0200 |
commit | c68c21ca929771a1f128d886359f9229d31cf80c (patch) | |
tree | faf31ea837af5dfd50db04caf7c700a198f2be7a /tools/testing/selftests/kvm/x86_64/evmcs_test.c | |
parent | KVM: x86: Always use 32-bit SMRAM save state for 32-bit kernels (diff) | |
download | kernel-qcow2-linux-c68c21ca929771a1f128d886359f9229d31cf80c.tar.gz kernel-qcow2-linux-c68c21ca929771a1f128d886359f9229d31cf80c.tar.xz kernel-qcow2-linux-c68c21ca929771a1f128d886359f9229d31cf80c.zip |
selftests: kvm/evmcs_test: complete I/O before migrating guest state
Starting state migration after an IO exit without first completing IO
may result in test failures. We already have two tests that need this
(this patch in fact fixes evmcs_test, similar to what was fixed for
state_test in commit 0f73bbc851ed, "KVM: selftests: complete IO before
migrating guest state", 2019-03-13) and a third is coming. So, move the
code to vcpu_save_state, and while at it do not access register state
until after I/O is complete.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'tools/testing/selftests/kvm/x86_64/evmcs_test.c')
-rw-r--r-- | tools/testing/selftests/kvm/x86_64/evmcs_test.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testing/selftests/kvm/x86_64/evmcs_test.c index c49c2a28b0eb..36669684eca5 100644 --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c @@ -123,8 +123,6 @@ int main(int argc, char *argv[]) stage, run->exit_reason, exit_reason_str(run->exit_reason)); - memset(®s1, 0, sizeof(regs1)); - vcpu_regs_get(vm, VCPU_ID, ®s1); switch (get_ucall(vm, VCPU_ID, &uc)) { case UCALL_ABORT: TEST_ASSERT(false, "%s at %s:%d", (const char *)uc.args[0], @@ -144,6 +142,9 @@ int main(int argc, char *argv[]) stage, (ulong)uc.args[1]); state = vcpu_save_state(vm, VCPU_ID); + memset(®s1, 0, sizeof(regs1)); + vcpu_regs_get(vm, VCPU_ID, ®s1); + kvm_vm_release(vm); /* Restore state in a new VM. */ |