|
|
@@ -1491,6 +1491,21 @@ static void hv_pci_assign_slots(struct hv_pcibus_device *hbus)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * Remove entries in sysfs pci slot directory.
|
|
|
+ */
|
|
|
+static void hv_pci_remove_slots(struct hv_pcibus_device *hbus)
|
|
|
+{
|
|
|
+ struct hv_pci_dev *hpdev;
|
|
|
+
|
|
|
+ list_for_each_entry(hpdev, &hbus->children, list_entry) {
|
|
|
+ if (!hpdev->pci_slot)
|
|
|
+ continue;
|
|
|
+ pci_destroy_slot(hpdev->pci_slot);
|
|
|
+ hpdev->pci_slot = NULL;
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* create_root_hv_pci_bus() - Expose a new root PCI bus
|
|
|
* @hbus: Root PCI bus, as understood by this driver
|
|
|
@@ -2685,6 +2700,7 @@ static int hv_pci_remove(struct hv_device *hdev)
|
|
|
pci_lock_rescan_remove();
|
|
|
pci_stop_root_bus(hbus->pci_bus);
|
|
|
pci_remove_root_bus(hbus->pci_bus);
|
|
|
+ hv_pci_remove_slots(hbus);
|
|
|
pci_unlock_rescan_remove();
|
|
|
hbus->state = hv_pcibus_removed;
|
|
|
}
|