Commit 4f09ebd0 authored by Sean Christopherson's avatar Sean Christopherson
Browse files

KVM: nVMX: Check for pending INIT/SIPI after entering non-root mode

Explicitly check for a pending INIT or SIPI after entering non-root mode
during nested VM-Enter emulation, as no VMCS information is quered as part
of the check, i.e. there is no need to check for INIT/SIPI while vmcs01 is
still loaded.

Link: https://lore.kernel.org/r/20241101191447.1807602-3-seanjc@google.com


Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
parent cda3960f
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -3531,8 +3531,6 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
		(CPU_BASED_INTR_WINDOW_EXITING | CPU_BASED_NMI_WINDOW_EXITING);
	if (likely(!evaluate_pending_interrupts) && kvm_vcpu_apicv_active(vcpu))
		evaluate_pending_interrupts |= vmx_has_apicv_interrupt(vcpu);
	if (!evaluate_pending_interrupts)
		evaluate_pending_interrupts |= kvm_apic_has_pending_init_or_sipi(vcpu);

	if (!vmx->nested.nested_run_pending ||
	    !(vmcs12->vm_entry_controls & VM_ENTRY_LOAD_DEBUG_CONTROLS))
@@ -3619,6 +3617,7 @@ enum nvmx_vmentry_status nested_vmx_enter_non_root_mode(struct kvm_vcpu *vcpu,
	 * unconditionally.
	 */
	if (unlikely(evaluate_pending_interrupts) ||
	    kvm_apic_has_pending_init_or_sipi(vcpu) ||
	    kvm_apic_has_interrupt(vcpu))
		kvm_make_request(KVM_REQ_EVENT, vcpu);