• Yinghai Lu's avatar
    PCI: Fix pci cardbus removal · 3682a394
    Yinghai Lu authored
    During test busn_res allocation with cardbus, found pci card removal is not
    working anymore, and it turns out it is broken by:
    
    |commit 79cc9601
    |Date:   Tue Nov 22 21:06:53 2011 -0800
    |
    |    PCI: Only call pci_stop_bus_device() one time for child devices at remove
    
    The above changed the behavior of pci_remove_behind_bridge that
    yenta_cardbus depended on.  So restore the old behavoir of
    pci_remove_behind_bridge (which requires stopping and removing of all
    devices) by:
    
    1. rename pci_remove_behind_bridge to __pci_remove_behind_bridge, and let
       __pci_remove_bus_device() call it instead.
    2. add pci_stop_behind_bridge that will stop devices behind a bridge
    3. add back pci_remove_behind_bridge that will stop and remove devices
       under bridge.
    
    -v2: update commit description a little bit.
    Tested-by: default avatarDominik Brodowski <linux@dominikbrodowski.net>
    Signed-off-by: default avatarYinghai Lu <yinghai@kernel.org>
    Signed-off-by: default avatarJesse Barnes <jbarnes@virtuousgeek.org>
    3682a394
remove.c 3.96 KB