• Y
    PCI: Setup disabled bridges even if buses are added · 296ccb08
    Yuji Shimada 提交于
    This patch sets up disabled bridges even if buses have already been
    added.
    
    pci_assign_unassigned_resources is called after buses are added.
    pci_assign_unassigned_resources calls pci_bus_assign_resources.
    pci_bus_assign_resources calls pci_setup_bridge to configure BARs of
    bridges.
    
    Currently pci_setup_bridge returns immediately if the bus have already
    been added. So pci_assign_unassigned_resources can't configure BARs of
    bridges that were added in a disabled state; this patch fixes the issue.
    
    On logical hot-add, we need to prevent the kernel from re-initializing
    bridges that have already been initialized. To achieve this,
    pci_setup_bridge returns immediately if the bridge have already been
    enabled.
    
    We don't need to check whether the specified bus is a root bus or not.
    pci_setup_bridge is not called on a root bus, because a root bus does
    not have a bridge.
    
    The patch adds a new helper function, pci_is_enabled. I made the
    function name similar to pci_is_managed. The codes which use
    enable_cnt directly are changed to use pci_is_enabled.
    Acked-by: NAlex Chiang <achiang@hp.com>
    Signed-off-by: NYuji Shimada <shimada-yxb@necst.nec.co.jp>
    Signed-off-by: NJesse Barnes <jbarnes@virtuousgeek.org>
    296ccb08
setup-bus.c 16.3 KB