Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1cf53587 authored by Paolo Bonzini's avatar Paolo Bonzini
Browse files

KVM: SVM: unconditionally wake up VCPU on IOMMU interrupt



Checking the mode is unnecessary, and is done without a memory barrier
separating the LAPIC write from the vcpu->mode read; in addition,
kvm_vcpu_wake_up is already doing a check for waiters on the wait queue
that has the same effect.

In practice it's safe because spin_lock has full-barrier semantics on x86,
but don't be too clever.

Reviewed-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent c1bd743e
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -1034,15 +1034,12 @@ static int avic_ga_log_notifier(u32 ga_tag)
	}
	spin_unlock_irqrestore(&svm_vm_data_hash_lock, flags);

	if (!vcpu)
		return 0;

	/* Note:
	 * At this point, the IOMMU should have already set the pending
	 * bit in the vAPIC backing page. So, we just need to schedule
	 * in the vcpu.
	 */
	if (vcpu->mode == OUTSIDE_GUEST_MODE)
	if (vcpu)
		kvm_vcpu_wake_up(vcpu);

	return 0;