From: Jake Oshins <ja...@microsoft.com> The patch series updates the one sent about a month ago in three ways. It integrated with other IRQ domain work done in linux-next in that time, it distributes interrupts to multiple virtual processors in the guest VM, and it incorporates feedback from Thomas Gleixner and others.
These patches change the IRQ domain code so that an IRQ domain can match on both bus type and on the PCI domain. The IRQ domain match code is modified so that IRQ domains can have a "rank," allowing for a default one which matches every x86 PC and more specific ones that replace the default. The next step is to make it possible to implement an IRQ domain in a module, by exporting a few functions. This seems to make sense here, rather than linking it into the kernel, because pulling it into the kernel would involve pulling a lot of other Hyper-V-related code into the kernel, since the IRQ domain implementation has to send messages to and receive messages from the hypervisor, and those facilities are currently built as modules. After that, a couple of new Hyper-V-related facilities are exported from hv_vmbus.ko, so that the PCI front end can correlate Linux CPUs with virtual processor IDs and to make hypercalls. The last patch is a new front-end driver that exposes new root PCI buses that (virtually) contain devices being passed through into the VM. Jake Oshins (12): kernel:irq: Change signature of irq_domain_ops match() method, adding *bus_data kernel:irq: Change signature of irq_find_matching_host() kernel:irq: Allow for ranked matches on IRQ domains drivers:pci: Add IRQ domain lookup by PCI domain drivers:hv: Export a function that maps Linux CPU num onto Hyper-V proc num drivers:hv: Export do_hypercall() drivers:x86:pci: Make it possible to implement a PCI MSI IRQ Domain in a module. drivers:pci:msi: Store PCI domain (segment) as part of IRQ domain kernel:irq: Implement msi match function kernel:irq: Return a higher ranked match when the IRQ domain matches a specific PCI domain drivers:hv: Define the channel type for Hyper-V PCI Express pass-through drivers:pci:hv: New paravirtual PCI front-end for Hyper-V VMs MAINTAINERS | 1 + arch/powerpc/platforms/512x/mpc5121_ads_cpld.c | 2 +- arch/powerpc/platforms/cell/interrupt.c | 2 +- arch/powerpc/platforms/embedded6xx/flipper-pic.c | 3 +- arch/powerpc/platforms/powermac/pic.c | 3 +- arch/powerpc/platforms/powernv/opal-irqchip.c | 2 +- arch/powerpc/platforms/ps3/interrupt.c | 2 +- arch/powerpc/sysdev/ehv_pic.c | 3 +- arch/powerpc/sysdev/i8259.c | 2 +- arch/powerpc/sysdev/ipic.c | 2 +- arch/powerpc/sysdev/mpic.c | 2 +- arch/powerpc/sysdev/qe_lib/qe_ic.c | 2 +- arch/powerpc/sysdev/xics/xics-common.c | 2 +- arch/x86/include/asm/msi.h | 4 + arch/x86/kernel/apic/msi.c | 5 +- arch/x86/kernel/apic/vector.c | 2 + drivers/hv/hv.c | 3 +- drivers/hv/vmbus_drv.c | 17 + drivers/irqchip/irq-gic-v3-its-pci-msi.c | 2 +- drivers/irqchip/irq-gic-v3-its-platform-msi.c | 2 +- drivers/of/irq.c | 2 +- drivers/pci/Kconfig | 7 + drivers/pci/host/Makefile | 1 + drivers/pci/host/hv_pcifront.c | 2244 ++++++++++++++++++++++ drivers/pci/msi.c | 2 + drivers/pci/of.c | 2 +- drivers/pci/probe.c | 11 + include/linux/hyperv.h | 14 + include/linux/irqdomain.h | 9 +- include/linux/msi.h | 4 + kernel/irq/chip.c | 1 + kernel/irq/irqdomain.c | 48 +- kernel/irq/msi.c | 24 + 33 files changed, 2394 insertions(+), 38 deletions(-) create mode 100644 drivers/pci/host/hv_pcifront.c -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/