@@ -1094,8 +1094,12 @@ PCIINTxRoute pci_device_route_intx_to_irq(PCIDevice *dev, int pin)
pin = bus->map_irq(dev, pin);
dev = bus->parent_dev;
} while (dev);
- assert(bus->route_intx_to_irq);
- return bus->route_intx_to_irq(bus->irq_opaque, pin);
+
+ if (bus->route_intx_to_irq) {
+ return bus->route_intx_to_irq(bus->irq_opaque, pin);
+ }
+
+ return (PCIINTxRoute) { PCI_INTX_NOROUTE, -1 };
}
void pci_bus_fire_intx_routing_notifier(PCIBus *bus)
@@ -146,6 +146,7 @@ typedef struct PCIINTxRoute {
PCI_INTX_ENABLED,
PCI_INTX_INVERTED,
PCI_INTX_DISABLED,
+ PCI_INTX_NOROUTE,
} mode;
int irq;
} PCIINTxRoute;
pci_device_route_intx_to_irq() has no probe capability. vfio-pci can make use of KVM acceleration if this information is available, but can still operate without it. Make it non-fatal to call this on a platform or chipset where it hasn't been implemented yet. Signed-off-by: Alex Williamson <alex.williamson@redhat.com> --- hw/pci.c | 8 ++++++-- hw/pci.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-)