|
@@ -286,8 +286,10 @@ retry:
|
|
|
* won't see this one until it exits for some other
|
|
|
* reason.
|
|
|
*/
|
|
|
- if (vcpu)
|
|
|
+ if (vcpu) {
|
|
|
+ kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
|
|
|
kvm_vcpu_kick(vcpu);
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
|
|
@@ -333,6 +335,7 @@ retry:
|
|
|
spin_unlock(&irq->irq_lock);
|
|
|
spin_unlock(&vcpu->arch.vgic_cpu.ap_list_lock);
|
|
|
|
|
|
+ kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
|
|
|
kvm_vcpu_kick(vcpu);
|
|
|
|
|
|
return true;
|
|
@@ -722,8 +725,10 @@ void vgic_kick_vcpus(struct kvm *kvm)
|
|
|
* a good kick...
|
|
|
*/
|
|
|
kvm_for_each_vcpu(c, vcpu, kvm) {
|
|
|
- if (kvm_vgic_vcpu_pending_irq(vcpu))
|
|
|
+ if (kvm_vgic_vcpu_pending_irq(vcpu)) {
|
|
|
+ kvm_make_request(KVM_REQ_IRQ_PENDING, vcpu);
|
|
|
kvm_vcpu_kick(vcpu);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|