KVM: selftests: test enlightened vmenter with wrong eVMCS version
authorVitaly Kuznetsov <vkuznets@redhat.com>
Mon, 9 Mar 2020 15:52:15 +0000 (16:52 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 16 Mar 2020 17:19:32 +0000 (18:19 +0100)
Check that VMfailInvalid happens when eVMCS revision is is invalid.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
tools/testing/selftests/kvm/x86_64/evmcs_test.c

index 3ce575a..17da579 100644 (file)
 
 void l2_guest_code(void)
 {
-       GUEST_SYNC(6);
-
        GUEST_SYNC(7);
 
+       GUEST_SYNC(8);
+
        /* Done, exit to L1 and never come back.  */
        vmcall();
 }
@@ -50,12 +50,17 @@ void l1_guest_code(struct vmx_pages *vmx_pages)
 
        GUEST_SYNC(5);
        GUEST_ASSERT(vmptrstz() == vmx_pages->enlightened_vmcs_gpa);
+       current_evmcs->revision_id = -1u;
+       GUEST_ASSERT(vmlaunch());
+       current_evmcs->revision_id = EVMCS_VERSION;
+       GUEST_SYNC(6);
+
        GUEST_ASSERT(!vmlaunch());
        GUEST_ASSERT(vmptrstz() == vmx_pages->enlightened_vmcs_gpa);
-       GUEST_SYNC(8);
+       GUEST_SYNC(9);
        GUEST_ASSERT(!vmresume());
        GUEST_ASSERT(vmreadz(VM_EXIT_REASON) == EXIT_REASON_VMCALL);
-       GUEST_SYNC(9);
+       GUEST_SYNC(10);
 }
 
 void guest_code(struct vmx_pages *vmx_pages)