aboutsummaryrefslogtreecommitdiffstats
path: root/virt
diff options
context:
space:
mode:
authorJan Kiszka <jan.kiszka@siemens.com>2013-04-28 14:00:41 +0200
committerGleb Natapov <gleb@redhat.com>2013-05-14 12:09:02 +0300
commitf1ed0450a5fac7067590317cbf027f566b6ccbca (patch)
tree42002bc4ce144baf0f57882b8b042c7fd34c87a0 /virt
parente2858b4ab1f8d7ce36ae3cd96ba650664af0db5e (diff)
downloadkernel_goldelico_gta04-f1ed0450a5fac7067590317cbf027f566b6ccbca.zip
kernel_goldelico_gta04-f1ed0450a5fac7067590317cbf027f566b6ccbca.tar.gz
kernel_goldelico_gta04-f1ed0450a5fac7067590317cbf027f566b6ccbca.tar.bz2
KVM: x86: Remove support for reporting coalesced APIC IRQs
Since the arrival of posted interrupt support we can no longer guarantee that coalesced IRQs are always reported to the IRQ source. Moreover, accumulated APIC timer events could cause a busy loop when a VCPU should rather be halted. The consensus is to remove coalesced tracking from the LAPIC. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Acked-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Gleb Natapov <gleb@redhat.com>
Diffstat (limited to 'virt')
-rw-r--r--virt/kvm/irq_comm.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/virt/kvm/irq_comm.c b/virt/kvm/irq_comm.c
index e2e6b44..ef1817b 100644
--- a/virt/kvm/irq_comm.c
+++ b/virt/kvm/irq_comm.c
@@ -91,7 +91,8 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src,
if (!kvm_is_dm_lowest_prio(irq)) {
if (r < 0)
r = 0;
- r += kvm_apic_set_irq(vcpu, irq, dest_map);
+ kvm_apic_set_irq(vcpu, irq, dest_map);
+ r++;
} else if (kvm_lapic_enabled(vcpu)) {
if (!lowest)
lowest = vcpu;
@@ -100,8 +101,10 @@ int kvm_irq_delivery_to_apic(struct kvm *kvm, struct kvm_lapic *src,
}
}
- if (lowest)
- r = kvm_apic_set_irq(lowest, irq, dest_map);
+ if (lowest) {
+ kvm_apic_set_irq(lowest, irq, dest_map);
+ r = 1;
+ }
return r;
}