Commit 8e77af6a authored by John Keller's avatar John Keller Committed by Greg Kroah-Hartman

[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: default avatarPrarit Bhargava <prarit@sgi.com>
Signed-off-by: default avatarJohn Keller <jpk@sgi.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 0afabe90
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* License. See the file "COPYING" in the main directory of this archive * License. See the file "COPYING" in the main directory of this archive
* for more details. * for more details.
* *
* Copyright (C) 2005 Silicon Graphics, Inc. All rights reserved. * Copyright (C) 2005-2006 Silicon Graphics, Inc. All rights reserved.
* *
* This work was based on the 2.4/2.6 kernel development by Dick Reigner. * This work was based on the 2.4/2.6 kernel development by Dick Reigner.
* Work to add BIOS PROM support was completed by Mike Habeck. * 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,6 +230,13 @@ static void sn_bus_free_data(struct pci_dev *dev)
list_for_each_entry(child, &subordinate_bus->devices, bus_list) list_for_each_entry(child, &subordinate_bus->devices, bus_list)
sn_bus_free_data(child); sn_bus_free_data(child);
} }
/*
* Some drivers may use dma accesses during the
* driver remove function. We release the sysdata
* areas after the driver remove functions have
* been called.
*/
sn_bus_store_sysdata(dev);
sn_pci_unfixup_slot(dev); sn_pci_unfixup_slot(dev);
} }
...@@ -429,13 +436,6 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot) ...@@ -429,13 +436,6 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
PCI_DEVFN(slot->device_num + 1, PCI_DEVFN(slot->device_num + 1,
PCI_FUNC(func))); PCI_FUNC(func)));
if (dev) { if (dev) {
/*
* Some drivers may use dma accesses during the
* driver remove function. We release the sysdata
* areas after the driver remove functions have
* been called.
*/
sn_bus_store_sysdata(dev);
sn_bus_free_data(dev); sn_bus_free_data(dev);
pci_remove_bus_device(dev); pci_remove_bus_device(dev);
pci_dev_put(dev); pci_dev_put(dev);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment