• Dongdong Liu's avatar
    PCI: generic: Call pci_fixup_irqs() only on ARM · 3fb55618
    Dongdong Liu authored
    pci_fixup_irqs() is problematic because:
    
      - it's called when we enumerate a host bridge, so we don't fixup IRQs for
        hot-added PCI devices, and
    
      - it fixes up IRQs for all PCI devices in the system, so if we call it
        multiple times, e.g., if we have several host controllers, we may
        reallocate an IRQ for a device after a driver has already claimed it.
    
    We plan to replace pci_fixup_irqs() soon, but we still need it on ARM
    because we don't have any other generic method for doing this.
    
    On ARM64, we don't need pci_fixup_irqs() because we do IRQ setup when we
    bind a driver to the device (in the pci_device_probe() ->
    pcibios_alloc_irq() path).
    
    pci-host-common.c is currently only used on ARM and ARM64.  In principle,
    it could be used on x86, and we wouldn't want pci_fixup_irqs() there
    either, because x86 does IRQ setup in the pci_enable_device() path.
    
    [bhelgaas: changelog, use #ifdef ARM, not #ifndef ARM64]
    Signed-off-by: default avatarDongdong Liu <liudongdong3@huawei.com>
    Signed-off-by: default avatarBjorn Helgaas <bhelgaas@google.com>
    Reviewed-by: default avatarGabriele Paoloni <gabriele.paoloni@huawei.com>
    Reviewed-by: default avatarZhou Wang <wangzhou1@hisilicon.com>
    Acked-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
    3fb55618
pci-host-common.c 4.19 KB