extern int rpaphp_claim_resource(struct pci_dev *dev, int resource);
 extern int rpaphp_enable_pci_slot(struct slot *slot);
 extern int register_pci_slot(struct slot *slot);
-extern int rpaphp_unconfig_pci_adapter(struct slot *slot);
 extern int rpaphp_get_pci_adapter_status(struct slot *slot, int is_init, u8 * value);
+
 extern int rpaphp_config_pci_adapter(struct pci_bus *bus);
+extern int rpaphp_unconfig_pci_adapter(struct pci_bus *bus);
 
 /* rpaphp_core.c */
 extern int rpaphp_add_slot(struct device_node *dn);
 
 
        dbg("DISABLING SLOT %s\n", slot->name);
        down(&rpaphp_sem);
-       retval = rpaphp_unconfig_pci_adapter(slot);
+       retval = rpaphp_unconfig_pci_adapter(slot->bus);
        up(&rpaphp_sem);
+       slot->state = NOT_CONFIGURED;
+       info("%s: devices in slot[%s] unconfigured.\n", __FUNCTION__,
+            slot->name);
 exit:
        dbg("%s - Exit: rc[%d]\n", __FUNCTION__, retval);
        return retval;
 
        return;
 }
 
-int rpaphp_unconfig_pci_adapter(struct slot *slot)
+int rpaphp_unconfig_pci_adapter(struct pci_bus *bus)
 {
        struct pci_dev *dev, *tmp;
-       int retval = 0;
 
-       list_for_each_entry_safe(dev, tmp, slot->pci_devs, bus_list) {
+       list_for_each_entry_safe(dev, tmp, &bus->devices, bus_list) {
                rpaphp_eeh_remove_bus_device(dev);
                pci_remove_bus_device(dev);
        }
-
-       slot->state = NOT_CONFIGURED;
-       info("%s: devices in slot[%s] unconfigured.\n", __FUNCTION__,
-            slot->name);
-       return retval;
+       return 0;
 }
 
 static int setup_pci_hotplug_slot_info(struct slot *slot)