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

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
...@@ -1034,15 +1034,12 @@ static int avic_ga_log_notifier(u32 ga_tag) ...@@ -1034,15 +1034,12 @@ static int avic_ga_log_notifier(u32 ga_tag)
} }
spin_unlock_irqrestore(&svm_vm_data_hash_lock, flags); spin_unlock_irqrestore(&svm_vm_data_hash_lock, flags);
if (!vcpu)
return 0;
/* Note: /* Note:
* At this point, the IOMMU should have already set the pending * At this point, the IOMMU should have already set the pending
* bit in the vAPIC backing page. So, we just need to schedule * bit in the vAPIC backing page. So, we just need to schedule
* in the vcpu. * in the vcpu.
*/ */
if (vcpu->mode == OUTSIDE_GUEST_MODE) if (vcpu)
kvm_vcpu_wake_up(vcpu); kvm_vcpu_wake_up(vcpu);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment