• Krishna Kumar's avatar
    powerpc/pci: Hotplug driver bridge support · 20ce0c24
    Krishna Kumar authored
    There is an issue with the hotplug operation when it's done on the
    bridge/switch slot. The bridge-port and devices behind the bridge, which
    become offline by hot-unplug operation, don't get hot-plugged/enabled
    by doing hot-plug operation on that slot. Only the first port of the
    bridge gets enabled and the remaining port/devices remain unplugged. The
    hot plug/unplug operation is done by the hotplug driver (drivers/pci/
    hotplug/pnv_php.c).
    
    This behavior is due to missing code for the switch/bridge. The existing
    driver depends on pci_hp_add_devices() function for device enablement.
    This function calls pci_scan_slot() on only one device-node/port of the
    bridge, not on all the siblings' device-node/port.
    
    The missing code needs to be added which will find all the sibling
    device-nodes/bridge-ports and will run explicit pci_scan_slot()
    on those. A new function has been added for this purpose
    which is invoked from pci_hp_add_devices(). This new function
    traverse_siblings_and_scan_slot() gets all the sibling bridge-ports by
    traversal and explicitly invokes pci_scan_slot() on them.
    Tested-by: default avatarShawn Anastasio <sanastasio@raptorengineering.com>
    Signed-off-by: default avatarKrishna Kumar <krishnak@linux.ibm.com>
    [mpe: Move the code into pci-hotplug.c]
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://msgid.link/20240701074513.94873-3-krishnak@linux.ibm.com
    20ce0c24
pci-hotplug.c 4.84 KB