diff options
author | John Keller <jpk@sgi.com> | 2006-03-08 14:21:34 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-03-23 17:35:16 -0500 |
commit | 8e77af6a9a9b1eefdb538894b20ed41f65b65ab7 (patch) | |
tree | f715dc92e2f78bf450ce19b66b6171f89cecc840 /drivers | |
parent | 0afabe906539b4e8b9e895f19ea31aabdf12f30b (diff) |
[PATCH] PCI Hotplug: SN: Fix cleanup on hotplug removal of PPB
When doing a hotplug removal of a PPB, sn_bus_store_sysdata()
needs to be called for the PPB and all of its children.
Acked-by: Prarit Bhargava <prarit@sgi.com>
Signed-off-by: John Keller <jpk@sgi.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pci/hotplug/sgi_hotplug.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/pci/hotplug/sgi_hotplug.c b/drivers/pci/hotplug/sgi_hotplug.c index a32ae82e5922..c402da8e78ae 100644 --- a/drivers/pci/hotplug/sgi_hotplug.c +++ b/drivers/pci/hotplug/sgi_hotplug.c | |||
@@ -3,7 +3,7 @@ | |||
3 | * License. See the file "COPYING" in the main directory of this archive | 3 | * License. See the file "COPYING" in the main directory of this archive |
4 | * for more details. | 4 | * for more details. |
5 | * | 5 | * |
6 | * Copyright (C) 2005 Silicon Graphics, Inc. All rights reserved. | 6 | * Copyright (C) 2005-2006 Silicon Graphics, Inc. All rights reserved. |
7 | * | 7 | * |
8 | * This work was based on the 2.4/2.6 kernel development by Dick Reigner. | 8 | * This work was based on the 2.4/2.6 kernel development by Dick Reigner. |
9 | * Work to add BIOS PROM support was completed by Mike Habeck. | 9 | * Work to add BIOS PROM support was completed by Mike Habeck. |
@@ -230,6 +230,13 @@ static void sn_bus_free_data(struct pci_dev *dev) | |||
230 | list_for_each_entry(child, &subordinate_bus->devices, bus_list) | 230 | list_for_each_entry(child, &subordinate_bus->devices, bus_list) |
231 | sn_bus_free_data(child); | 231 | sn_bus_free_data(child); |
232 | } | 232 | } |
233 | /* | ||
234 | * Some drivers may use dma accesses during the | ||
235 | * driver remove function. We release the sysdata | ||
236 | * areas after the driver remove functions have | ||
237 | * been called. | ||
238 | */ | ||
239 | sn_bus_store_sysdata(dev); | ||
233 | sn_pci_unfixup_slot(dev); | 240 | sn_pci_unfixup_slot(dev); |
234 | } | 241 | } |
235 | 242 | ||
@@ -429,13 +436,6 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot) | |||
429 | PCI_DEVFN(slot->device_num + 1, | 436 | PCI_DEVFN(slot->device_num + 1, |
430 | PCI_FUNC(func))); | 437 | PCI_FUNC(func))); |
431 | if (dev) { | 438 | if (dev) { |
432 | /* | ||
433 | * Some drivers may use dma accesses during the | ||
434 | * driver remove function. We release the sysdata | ||
435 | * areas after the driver remove functions have | ||
436 | * been called. | ||
437 | */ | ||
438 | sn_bus_store_sysdata(dev); | ||
439 | sn_bus_free_data(dev); | 439 | sn_bus_free_data(dev); |
440 | pci_remove_bus_device(dev); | 440 | pci_remove_bus_device(dev); |
441 | pci_dev_put(dev); | 441 | pci_dev_put(dev); |