Currently platform specific PCI device IRQ assignment is run during the boot code, this results in a wide array of differing code paths and causes hot-plugged PCI devices to not be assigned IRQs, this patch removes the boot time initialisation of such IRQs and instead registers assignment functions to be run during the PCI device enable path. Signed-off-by: Matthew Minter <matt@xxxxxxxxxxxx> --- arch/sh/drivers/pci/pci.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/arch/sh/drivers/pci/pci.c b/arch/sh/drivers/pci/pci.c index d5462b7..28f8c90 100644 --- a/arch/sh/drivers/pci/pci.c +++ b/arch/sh/drivers/pci/pci.c @@ -144,16 +144,20 @@ static int __init pcibios_init(void) for (hose = hose_head; hose; hose = hose->next) pcibios_scanbus(hose); - pci_fixup_irqs(pci_common_swizzle, pcibios_map_platform_irq); - dma_debug_add_bus(&pci_bus_type); - pci_initialized = 1; return 0; } subsys_initcall(pcibios_init); +int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge) +{ + bridge->swizzle_irq = pci_common_swizzle; + bridge->map_irq = pcibios_map_platform_irq; + return 0; +} + /* * Called after each bus is probed, but before its children * are examined. -- 2.6.2 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html