diff options
author | Alex Chiang <achiang@hp.com> | 2009-03-20 16:56:31 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2009-03-20 17:57:58 -0400 |
commit | 705b1aaa823e800490f157cd9366ad8cff385f5f (patch) | |
tree | 634ea8ba227a305074938f49c110fea8e68e8bb3 /drivers/pci/probe.c | |
parent | 3ed4fd96b3188406ac5357d9290bcffa08c65cf6 (diff) |
PCI: Introduce /sys/bus/pci/rescan
This interface allows the user to force a rescan of all PCI buses
in system, and rediscover devices that have been removed earlier.
pci_bus_attrs implementation from Trent Piepho.
Thanks to Vegard Nossum for discovering locking issues with the
sysfs interface.
Cc: Trent Piepho <xyzzy@speakeasy.org>
Signed-off-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/probe.c')
-rw-r--r-- | drivers/pci/probe.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 60a8e5fec6c..56c71e585f3 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -1228,13 +1228,13 @@ unsigned int __devinit pci_rescan_bus(struct pci_bus *bus) | |||
1228 | 1228 | ||
1229 | max = pci_scan_child_bus(bus); | 1229 | max = pci_scan_child_bus(bus); |
1230 | 1230 | ||
1231 | up_read(&pci_bus_sem); | 1231 | down_read(&pci_bus_sem); |
1232 | list_for_each_entry(dev, &bus->devices, bus_list) | 1232 | list_for_each_entry(dev, &bus->devices, bus_list) |
1233 | if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || | 1233 | if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE || |
1234 | dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) | 1234 | dev->hdr_type == PCI_HEADER_TYPE_CARDBUS) |
1235 | if (dev->subordinate) | 1235 | if (dev->subordinate) |
1236 | pci_bus_size_bridges(dev->subordinate); | 1236 | pci_bus_size_bridges(dev->subordinate); |
1237 | down_read(&pci_bus_sem); | 1237 | up_read(&pci_bus_sem); |
1238 | 1238 | ||
1239 | pci_bus_assign_resources(bus); | 1239 | pci_bus_assign_resources(bus); |
1240 | pci_enable_bridges(bus); | 1240 | pci_enable_bridges(bus); |