diff options
Diffstat (limited to 'drivers/pci/hotplug/sgi_hotplug.c')
-rw-r--r-- | drivers/pci/hotplug/sgi_hotplug.c | 5 |
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) { |