aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci/hotplug/sgi_hotplug.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/pci/hotplug/sgi_hotplug.c')
-rw-r--r--drivers/pci/hotplug/sgi_hotplug.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/pci/hotplug/sgi_hotplug.c b/drivers/pci/hotplug/sgi_hotplug.c
index 5b05a68cca6c..613043f7576f 100644
--- a/drivers/pci/hotplug/sgi_hotplug.c
+++ b/drivers/pci/hotplug/sgi_hotplug.c
@@ -459,12 +459,15 @@ static int enable_slot(struct hotplug_slot *bss_hotplug_slot)
459 acpi_scan_lock_release(); 459 acpi_scan_lock_release();
460 } 460 }
461 461
462 pci_lock_rescan_remove();
463
462 /* Call the driver for the new device */ 464 /* Call the driver for the new device */
463 pci_bus_add_devices(slot->pci_bus); 465 pci_bus_add_devices(slot->pci_bus);
464 /* Call the drivers for the new devices subordinate to PPB */ 466 /* Call the drivers for the new devices subordinate to PPB */
465 if (new_ppb) 467 if (new_ppb)
466 pci_bus_add_devices(new_bus); 468 pci_bus_add_devices(new_bus);
467 469
470 pci_unlock_rescan_remove();
468 mutex_unlock(&sn_hotplug_mutex); 471 mutex_unlock(&sn_hotplug_mutex);
469 472
470 if (rc == 0) 473 if (rc == 0)
@@ -540,6 +543,7 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
540 acpi_scan_lock_release(); 543 acpi_scan_lock_release();
541 } 544 }
542 545
546 pci_lock_rescan_remove();
543 /* Free the SN resources assigned to the Linux device.*/ 547 /* Free the SN resources assigned to the Linux device.*/
544 list_for_each_entry_safe(dev, temp, &slot->pci_bus->devices, bus_list) { 548 list_for_each_entry_safe(dev, temp, &slot->pci_bus->devices, bus_list) {
545 if (PCI_SLOT(dev->devfn) != slot->device_num + 1) 549 if (PCI_SLOT(dev->devfn) != slot->device_num + 1)
@@ -550,6 +554,7 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
550 pci_stop_and_remove_bus_device(dev); 554 pci_stop_and_remove_bus_device(dev);
551 pci_dev_put(dev); 555 pci_dev_put(dev);
552 } 556 }
557 pci_unlock_rescan_remove();
553 558
554 /* Remove the SSDT for the slot from the ACPI namespace */ 559 /* Remove the SSDT for the slot from the ACPI namespace */
555 if (SN_ACPI_BASE_SUPPORT() && ssdt_id) { 560 if (SN_ACPI_BASE_SUPPORT() && ssdt_id) {