|
@@ -764,7 +764,7 @@ static void __init pirq_find_router(struct irq_router *r)
|
|
|
DBG(KERN_DEBUG "PCI: Attempting to find IRQ router for %04x:%04x\n",
|
|
|
rt->rtr_vendor, rt->rtr_device);
|
|
|
|
|
|
- pirq_router_dev = pci_find_slot(rt->rtr_bus, rt->rtr_devfn);
|
|
|
+ pirq_router_dev = pci_get_bus_and_slot(rt->rtr_bus, rt->rtr_devfn);
|
|
|
if (!pirq_router_dev) {
|
|
|
DBG(KERN_DEBUG "PCI: Interrupt router not found at "
|
|
|
"%02x:%02x\n", rt->rtr_bus, rt->rtr_devfn);
|
|
@@ -784,6 +784,8 @@ static void __init pirq_find_router(struct irq_router *r)
|
|
|
pirq_router_dev->vendor,
|
|
|
pirq_router_dev->device,
|
|
|
pci_name(pirq_router_dev));
|
|
|
+
|
|
|
+ /* The device remains referenced for the kernel lifetime */
|
|
|
}
|
|
|
|
|
|
static struct irq_info *pirq_get_info(struct pci_dev *dev)
|