• Benjamin Herrenschmidt's avatar
    powerpc/pci: Split pcibios_fixup_bus() into bus setup and device setup · 8b8da358
    Benjamin Herrenschmidt authored
    Currently, our PCI code uses the pcibios_fixup_bus() callback, which
    is called by the generic code when probing PCI buses, for two
    different things.
    
    One is to set up things related to the bus itself, such as reading
    bridge resources for P2P bridges, fixing them up, or setting up the
    iommu's associated with bridges on some platforms.
    
    The other is some setup for each individual device under that bridge,
    mostly setting up DMA mappings and interrupts.
    
    The problem is that this approach doesn't work well with PCI hotplug
    when an existing bus is re-probed for new children.  We fix this
    problem by splitting pcibios_fixup_bus into two routines:
    
    	pcibios_setup_bus_self() is now called to setup the bus itself
    
    	pcibios_setup_bus_devices() is now called to setup devices
    
    pcibios_fixup_bus() is then modified to call these two after reading the
    bridge bases, and the OF based PCI probe is modified to avoid calling
    into the first one when rescanning an existing bridge.
    
    [paulus@samba.org - fixed eeh.h for 32-bit compile now that pci-common.c
    is including it unconditionally.]
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    8b8da358
pci_64.c 16.2 KB