#include <linux/module.h>
static void pci_free_resources(struct pci_dev *dev)
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
struct resource *res = dev->resource + i;
static void pci_stop_dev(struct pci_dev *dev)
pci_pme_active(dev, false);
if (pci_dev_is_added(dev)) {
device_release_driver(&dev->dev);
pci_proc_detach_device(dev);
pci_remove_sysfs_dev_files(dev);
pci_dev_assign_added(dev, false);
static void pci_destroy_dev(struct pci_dev *dev)
if (!dev->dev.kobj.parent)
down_write(&pci_bus_sem);
list_del(&dev->bus_list);
pcie_aspm_exit_link_state(dev);
pci_bridge_d3_update(dev);
void pci_remove_bus(struct pci_bus *bus)
pci_proc_detach_bus(bus);
down_write(&pci_bus_sem);
pci_bus_release_busn_res(bus);
pci_remove_legacy_files(bus);
if (bus->ops->remove_bus)
bus->ops->remove_bus(bus);
device_unregister(&bus->dev);
EXPORT_SYMBOL(pci_remove_bus);