[PATCH 00/17] KVM: PPC: In-kernel MPIC support with irqfd v3

Alexander Graf
2013-04-19T14:06:11Z

Hi,

This patch set contains a fully working implementation of the in-kernel MPIC
from Scott with a few fixups and a new version of my irqfd generalization
patch set.

v1 -> v2:

- depend on CONFIG_ defines rather than __KVM defines
- fix compile issues
- fix the kvm_irqchip{,s} typo

v2 -> v3:

- make mpic pointer type safe
- add wmb before setting global mpic variable
- make eoi notification happen unlockedly
- add IRQ routing documentation
- announce mpic availability after its creation
- fix pr_debug again

I have refrained from touching IA64 at all in this patch set. It's marked
as BROKEN, I doubt it even compiles at all today. The only sensible thing
to do would be to remove all of IA64 kvm code from the kernel tree, but
that is out of scope for this patch set and definitely should not gate it.

Alex

Alexander Graf (11):
KVM: Add KVM_IRQCHIP_NUM_PINS in addition to KVM_IOAPIC_NUM_PINS
KVM: Introduce CONFIG_HAVE_KVM_IRQ_ROUTING
KVM: Drop __KVM_HAVE_IOAPIC condition on irq routing
KVM: Remove kvm_get_intr_delivery_bitmask
KVM: Move irq routing to generic code
KVM: Extract generic irqchip logic into irqchip.c
KVM: Move irq routing setup to irqchip.c
KVM: Move irqfd resample cap handling to generic code
KVM: PPC: Support irq routing and irqfd for in-kernel MPIC
KVM: PPC: MPIC: Add support for KVM_IRQ_LINE
KVM: PPC: MPIC: Restrict to e500 platforms

Scott Wood (6):
kvm: add device control API
kvm/ppc/mpic: import hw/openpic.c from QEMU
kvm/ppc/mpic: remove some obviously unneeded code
kvm/ppc/mpic: adapt to kernel style and environment
kvm/ppc/mpic: in-kernel MPIC emulation
kvm/ppc/mpic: add KVM_CAP_IRQ_MPIC

Documentation/virtual/kvm/api.txt | 78 ++
Documentation/virtual/kvm/devices/README | 1 +
Documentation/virtual/kvm/devices/mpic.txt | 48 +
arch/powerpc/include/asm/kvm_host.h | 24 +-
arch/powerpc/include/asm/kvm_ppc.h | 30 +
arch/powerpc/include/uapi/asm/kvm.h | 9 +
arch/powerpc/kvm/Kconfig | 12 +
arch/powerpc/kvm/Makefile | 3 +
arch/powerpc/kvm/booke.c | 12 +-
arch/powerpc/kvm/irq.h | 17 +
arch/powerpc/kvm/mpic.c | 1876 ++++++++++++++++++++++++++++
arch/powerpc/kvm/powerpc.c | 55 +-
arch/x86/include/asm/kvm_host.h | 2 +
arch/x86/kvm/Kconfig | 1 +
arch/x86/kvm/Makefile | 2 +-
arch/x86/kvm/x86.c | 1 -
include/linux/kvm_host.h | 53 +-
include/trace/events/kvm.h | 12 +-
include/uapi/linux/kvm.h | 33 +-
virt/kvm/Kconfig | 3 +
virt/kvm/assigned-dev.c | 30 -
virt/kvm/eventfd.c | 6 +-
virt/kvm/irq_comm.c | 194 +---
virt/kvm/irqchip.c | 237 ++++
virt/kvm/kvm_main.c | 170 +++-
25 files changed, 2659 insertions(+), 250 deletions(-)
create mode 100644 Documentation/virtual/kvm/devices/README
create mode 100644 Documentation/virtual/kvm/devices/mpic.txt
create mode 100644 arch/powerpc/kvm/irq.h
create mode 100644 arch/powerpc/kvm/mpic.c
create mode 100644 virt/kvm/irqchip.c