• Benjamin Herrenschmidt's avatar
    [POWERPC] Fix irq routing on some 32-bit PowerMacs · dae4828d
    Benjamin Herrenschmidt authored
    The changes to use pci_read_irq_line() broke interrupt parsing
    on some 32-bit powermacs (oops).  The reason is a bit obscure.
    The code to parse interrupts happens earlier now, during
    pcibios_fixup() as the PCI bus is being probed.  However, the
    current implementation pci_device_to_OF_node() for 32-bit
    powerpc relies, on machines like PowerMac which renumber PCI buses,
    on a table called pci_OF_bus_map containing a map of bus numbers
    between the kernel and the firmware which is setup only later.
    Thus, it fails to match the device node.  In addition, some of
    Apple internal PCI devices lack a proper PCI_INTERRUPT_PIN, thus
    preventing the fallback mapping code to work.
    
    This patch fixes it by making pci_device_to_OF_node() 32-bit
    implementation use a different algorithm that works without
    using the pci_OF_bus_map thing (which I intend to deprecate
    anyway). It's a bit slower but that function isn't called in
    any hot path hopefully.
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    dae4828d
pci_32.c 51.5 KB