[PATCH] PCI Hotplug: SN: Fix cleanup on hotplug removal of PPB
[pandora-kernel.git] / drivers / pci / hotplug / sgi_hotplug.c
index a32ae82..c402da8 100644 (file)
@@ -3,7 +3,7 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * 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.
  * 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)
                list_for_each_entry(child, &subordinate_bus->devices, bus_list)
                        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);
 }
 
@@ -429,13 +436,6 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
                                   PCI_DEVFN(slot->device_num + 1,
                                             PCI_FUNC(func)));
                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);
                        pci_remove_bus_device(dev);
                        pci_dev_put(dev);