| (1 << VCPU_EXREG_CR3));
        vcpu->arch.regs_dirty = 0;
 
-       vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
-
-       vmx->loaded_vmcs->launched = 1;
-
-       vmx->exit_reason = vmcs_read32(VM_EXIT_REASON);
-
        /*
         * eager fpu is enabled if PKEY is supported and CR4 is switched
         * back on host, so it is safe to read guest PKRU from current
                kvm_make_request(KVM_REQ_EVENT, vcpu);
 
        vmx->nested.nested_run_pending = 0;
+       vmx->idt_vectoring_info = 0;
+
+       vmx->exit_reason = vmx->fail ? 0xdead : vmcs_read32(VM_EXIT_REASON);
+       if (vmx->fail || (vmx->exit_reason & VMX_EXIT_REASONS_FAILED_VMENTRY))
+               return;
+
+       vmx->loaded_vmcs->launched = 1;
+       vmx->idt_vectoring_info = vmcs_read32(IDT_VECTORING_INFO_FIELD);
 
        vmx_complete_atomic_exit(vmx);
        vmx_recover_nmi_blocking(vmx);