]> nv-tegra.nvidia Code Review - linux-3.10.git/commit
KVM: avoid taking ioapic mutex for non-ioapic EOIs
authorAvi Kivity <avi@redhat.com>
Mon, 28 Dec 2009 12:08:30 +0000 (14:08 +0200)
committerMarcelo Tosatti <mtosatti@redhat.com>
Mon, 1 Mar 2010 15:35:46 +0000 (12:35 -0300)
commit46a929bc15fcd48e1e0e770a44040a6949cae133
tree5351d75586821e74d82c59f1e1cde10806a25237
parentf4c9e87c83a9f5bc1800db27dbb39e5cd1254c0a
KVM: avoid taking ioapic mutex for non-ioapic EOIs

When the guest acknowledges an interrupt, it sends an EOI message to the local
apic, which broadcasts it to the ioapic.  To handle the EOI, we need to take
the ioapic mutex.

On large guests, this causes a lot of contention on this mutex.  Since large
guests usually don't route interrupts via the ioapic (they use msi instead),
this is completely unnecessary.

Avoid taking the mutex by introducing a handled_vectors bitmap.  Before taking
the mutex, check if the ioapic was actually responsible for the acked vector.
If not, we can return early.

Signed-off-by: Avi Kivity <avi@redhat.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
virt/kvm/ioapic.c
virt/kvm/ioapic.h