All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/11] [RFC] make interrupt injection lockless (almost)
@ 2009-07-16 14:03 Gleb Natapov
  2009-07-16 14:03 ` [PATCH 01/11] Move irq routing data structure to rcu locking Gleb Natapov
                   ` (10 more replies)
  0 siblings, 11 replies; 14+ messages in thread
From: Gleb Natapov @ 2009-07-16 14:03 UTC (permalink / raw)
  To: kvm; +Cc: mtosatti

Yeah I decided to change the name of the series. Since fine grained
locking is not the main objective of the series.

kvm->irq_lock protects too much stuff, but still fail to protect
everything it was design to protect (see ack notifiers call in pic). I
want to make IRQ injection fast path as lockless as possible. This patch
series split kvm->irq_lock mutex to smaller spinlocks each one protects
only one thing. Irq routing, irq notifier lists and ioapic gain their own
spinlock.  pic is already uses its own lock. This patch series also makes
interrupt injection to lapic lockless (several kvm_irq_delivery_to_apic()
may run in parallel), but access to lapic was never fully locked in the
first place. VCPU could access lapic in parallel with interrupt injection.
Patch 10 changes irq routing data structure to much more efficient one.
Patch 11 introduce API that allows to send MSI message without going
through irq routing table. This allows us among other thing to limit irq
routing table to a small number of entries.

This version of the patch series fix range checking in patch 10 and ioapic
lock is no longer dropped during irq notifiers run. Patch 11 is a new one.

Gleb Natapov (11):
  Move irq routing data structure to rcu locking
  Unregister ack notifier callback on PIT freeing.
  Move irq ack notifier list to arch independent code.
  Convert irq notifiers lists to RCU locking.
  Protect irq_sources_bitmap by kvm->lock instead of kvm->irq_lock
  Move irq routing to its own locking.
  Move irq notifiers lists to its own locking.
  Move IO APIC to its own lock.
  Drop kvm->irq_lock lock.
  Change irq routing table to use gsi indexed array.
  Introduce MSI message sending interface that bypass IRQ routing.

 arch/ia64/include/asm/kvm_host.h |    1 -
 arch/ia64/kvm/kvm-ia64.c         |   55 +++++++++--
 arch/x86/include/asm/kvm_host.h  |    3 +-
 arch/x86/kvm/i8254.c             |    6 +-
 arch/x86/kvm/i8259.c             |    2 +-
 arch/x86/kvm/lapic.c             |    7 +-
 arch/x86/kvm/x86.c               |   58 +++++++++---
 include/linux/kvm.h              |   10 ++-
 include/linux/kvm_host.h         |   21 +++-
 virt/kvm/eventfd.c               |    2 -
 virt/kvm/ioapic.c                |   53 +++++++----
 virt/kvm/ioapic.h                |    4 +-
 virt/kvm/irq_comm.c              |  195 +++++++++++++++++++++----------------
 virt/kvm/kvm_main.c              |   11 +-
 14 files changed, 275 insertions(+), 153 deletions(-)


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2009-07-21 17:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-07-16 14:03 [PATCH 00/11] [RFC] make interrupt injection lockless (almost) Gleb Natapov
2009-07-16 14:03 ` [PATCH 01/11] Move irq routing data structure to rcu locking Gleb Natapov
2009-07-16 14:03 ` [PATCH 02/11] Unregister ack notifier callback on PIT freeing Gleb Natapov
2009-07-21 17:16   ` Marcelo Tosatti
2009-07-21 17:30     ` Gleb Natapov
2009-07-16 14:03 ` [PATCH 03/11] Move irq ack notifier list to arch independent code Gleb Natapov
2009-07-16 14:03 ` [PATCH 04/11] Convert irq notifiers lists to RCU locking Gleb Natapov
2009-07-16 14:03 ` [PATCH 05/11] Protect irq_sources_bitmap by kvm->lock instead of kvm->irq_lock Gleb Natapov
2009-07-16 14:03 ` [PATCH 06/11] Move irq routing to its own locking Gleb Natapov
2009-07-16 14:03 ` [PATCH 07/11] Move irq notifiers lists " Gleb Natapov
2009-07-16 14:03 ` [PATCH 08/11] Move IO APIC to its own lock Gleb Natapov
2009-07-16 14:03 ` [PATCH 09/11] Drop kvm->irq_lock lock Gleb Natapov
2009-07-16 14:03 ` [PATCH 10/11] Change irq routing table to use gsi indexed array Gleb Natapov
2009-07-16 14:03 ` [PATCH 11/11] Introduce MSI message sending interface that bypass IRQ routing Gleb Natapov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.