|
@@ -12658,6 +12658,9 @@ static int nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu, u32 *exit_qual)
|
|
if (likely(!evaluate_pending_interrupts) && kvm_vcpu_apicv_active(vcpu))
|
|
if (likely(!evaluate_pending_interrupts) && kvm_vcpu_apicv_active(vcpu))
|
|
evaluate_pending_interrupts |= vmx_has_apicv_interrupt(vcpu);
|
|
evaluate_pending_interrupts |= vmx_has_apicv_interrupt(vcpu);
|
|
|
|
|
|
|
|
+ if (from_vmentry && check_vmentry_postreqs(vcpu, vmcs12, exit_qual))
|
|
|
|
+ return EXIT_REASON_INVALID_STATE;
|
|
|
|
+
|
|
enter_guest_mode(vcpu);
|
|
enter_guest_mode(vcpu);
|
|
|
|
|
|
if (!(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_DEBUG_CONTROLS))
|
|
if (!(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_DEBUG_CONTROLS))
|
|
@@ -12800,13 +12803,6 @@ static int nested_vmx_run(struct kvm_vcpu *vcpu, bool launch)
|
|
*/
|
|
*/
|
|
skip_emulated_instruction(vcpu);
|
|
skip_emulated_instruction(vcpu);
|
|
|
|
|
|
- ret = check_vmentry_postreqs(vcpu, vmcs12, &exit_qual);
|
|
|
|
- if (ret) {
|
|
|
|
- nested_vmx_entry_failure(vcpu, vmcs12,
|
|
|
|
- EXIT_REASON_INVALID_STATE, exit_qual);
|
|
|
|
- return 1;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
/*
|
|
/*
|
|
* We're finally done with prerequisite checking, and can start with
|
|
* We're finally done with prerequisite checking, and can start with
|
|
* the nested entry.
|
|
* the nested entry.
|