summaryrefslogtreecommitdiff
path: root/drivers/pci/probe.c
diff options
context:
space:
mode:
authorAlex Chiang <achiang@hp.com>2009-03-20 14:56:31 -0600
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-03-20 14:57:58 -0700
commit705b1aaa823e800490f157cd9366ad8cff385f5f (patch)
tree634ea8ba227a305074938f49c110fea8e68e8bb3 /drivers/pci/probe.c
parent3ed4fd96b3188406ac5357d9290bcffa08c65cf6 (diff)
downloadlwn-705b1aaa823e800490f157cd9366ad8cff385f5f.tar.gz
lwn-705b1aaa823e800490f157cd9366ad8cff385f5f.zip
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.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 60a8e5fec6c5..56c71e585f3d 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)
max = pci_scan_child_bus(bus);
- up_read(&pci_bus_sem);
+ down_read(&pci_bus_sem);
list_for_each_entry(dev, &bus->devices, bus_list)
if (dev->hdr_type == PCI_HEADER_TYPE_BRIDGE ||
dev->hdr_type == PCI_HEADER_TYPE_CARDBUS)
if (dev->subordinate)
pci_bus_size_bridges(dev->subordinate);
- down_read(&pci_bus_sem);
+ up_read(&pci_bus_sem);
pci_bus_assign_resources(bus);
pci_enable_bridges(bus);