1
linux/virt/kvm
Avi Kivity 46a929bc15 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>
2010-03-01 12:35:46 -03:00
..
assigned-dev.c KVM: introduce kvm->srcu and convert kvm_set_memory_region to SRCU update 2010-03-01 12:35:44 -03:00
coalesced_mmio.c KVM: convert slots_lock to a mutex 2010-03-01 12:35:45 -03:00
coalesced_mmio.h KVM: Simplify coalesced mmio initialization 2010-03-01 12:35:41 -03:00
eventfd.c KVM: convert slots_lock to a mutex 2010-03-01 12:35:45 -03:00
ioapic.c KVM: avoid taking ioapic mutex for non-ioapic EOIs 2010-03-01 12:35:46 -03:00
ioapic.h KVM: avoid taking ioapic mutex for non-ioapic EOIs 2010-03-01 12:35:46 -03:00
iodev.h KVM: remove in_range from io devices 2009-09-10 08:33:05 +03:00
iommu.c KVM: introduce kvm->srcu and convert kvm_set_memory_region to SRCU update 2010-03-01 12:35:44 -03:00
irq_comm.c KVM: properly check max PIC pin in irq route setup 2010-01-25 12:26:38 -02:00
Kconfig KVM: Add KVM_MMIO kconfig item 2010-03-01 12:35:41 -03:00
kvm_main.c KVM: convert slots_lock to a mutex 2010-03-01 12:35:45 -03:00