lkml.org 
[lkml]   [2012]   [Mar]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 04/23] PCI: make pci_rescan_bus_bridge_resize use pci_scan_bridge instead
    Date
    So after remove all children and then using setpci change bus register and rescan
    bridge could use new set bus number.

    Otherwise need to rescan parent bus, it would have too much overhead.

    also need to use pci_bus_add_single_device to make sure new change bus have directory
    /sys/../.../pci_bus.

    Signed-off-by: Yinghai Lu <yinghai@kernel.org>
    ---
    drivers/pci/probe.c | 10 ++++++----
    1 files changed, 6 insertions(+), 4 deletions(-)

    diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
    index 144f6f0..5e39819 100644
    --- a/drivers/pci/probe.c
    +++ b/drivers/pci/probe.c
    @@ -2043,14 +2043,16 @@ EXPORT_SYMBOL(pci_scan_bus);
    */
    unsigned int __ref pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
    {
    - unsigned int max;
    - struct pci_bus *bus = bridge->subordinate;
    + unsigned int max = 0;
    + int pass;
    + struct pci_bus *bus = bridge->bus;

    - max = pci_scan_child_bus(bus);
    + for (pass = 0; pass < 2; pass++)
    + max = pci_scan_bridge(bus, bridge, max, pass);

    pci_assign_unassigned_bridge_resources(bridge);

    - pci_bus_add_devices(bus);
    + pci_bus_add_single_device(bridge);

    return max;
    }
    --
    1.7.7


    \
     
     \ /
      Last update: 2012-03-06 08:17    [W:0.024 / U:0.832 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site