On Jul 9, 2017 2:04 PM, "Eric Auger" <eric.au...@redhat.com> wrote:
This series implements INTx to gsi routing for ARM VIRT/Gpex. This is a respin of [1] which was lost in limbo. ARM virt uses GPEX PCIe bridge. This latter does not implement INTx to GSI routing. PCIe/INTx assignment works but the consequence is irqfd is not used along with INTx interrupts and VFIO INTx handlers are executed on userspace leading to an important performance degradation. This issue is witnessed by the following messages; qemu-system-aarch64: -device vfio-pci,host=0006:90:00.0: PCI: Bug - unimplemented PCI INTx routing (gpex-pcihost) qemu-system-aarch64: PCI: Bug - unimplemented PCI INTx routing (gpex-pcihost) qemu-system-aarch64: PCI: Bug - unimplemented PCI INTx routing (gpex-pcihost) So with this series, irqfd is set up for PCIe/INTx passthrough and we get the optimal performance. Also we get rid of the above messages. This series can be found at: https://github.com/eauger/qemu/tree/v2.9-gpex-intx-v3 References: [1] Generic PCIe host bridge INTx determination for INTx routing https://lists.gnu.org/archive/html/qemu-devel/2015-09/msg04975.html Pranavkumar Sawargaonkar (3): hw/pci-host/gpex: Set INTx index/gsi mapping hw/arm/virt: Set INTx/gsi mapping hw/pci-host/gpex: Implement PCI INTx routing hw/arm/virt.c | 4 ++++ hw/pci-host/gpex.c | 22 ++++++++++++++++++++++ include/hw/pci-host/gpex.h | 3 +++ 3 files changed, 29 insertions(+) -- 2.5.5 Tested-by: Feng Kan <f...@apm.com> Works for APM XGene systems. Thanks!