|
@@ -209,12 +209,12 @@ static int ioapic_set_irq(struct kvm_ioapic *ioapic, unsigned int irq,
|
|
|
|
|
|
old_irr = ioapic->irr;
|
|
old_irr = ioapic->irr;
|
|
ioapic->irr |= mask;
|
|
ioapic->irr |= mask;
|
|
- if (edge)
|
|
|
|
|
|
+ if (edge) {
|
|
ioapic->irr_delivered &= ~mask;
|
|
ioapic->irr_delivered &= ~mask;
|
|
- if ((edge && old_irr == ioapic->irr) ||
|
|
|
|
- (!edge && entry.fields.remote_irr)) {
|
|
|
|
- ret = 0;
|
|
|
|
- goto out;
|
|
|
|
|
|
+ if (old_irr == ioapic->irr) {
|
|
|
|
+ ret = 0;
|
|
|
|
+ goto out;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
ret = ioapic_service(ioapic, irq, line_status);
|
|
ret = ioapic_service(ioapic, irq, line_status);
|