Subject: [PATCH] PCI: Add dummy bus_type for pci_host_bridge Need to use it for looping registered host_bridges, and kill pci_root_buses list later. Signed-off-by: Yinghai Lu --- drivers/pci/pci-driver.c | 10 ++++++++++ drivers/pci/probe.c | 1 + include/linux/pci.h | 2 ++ 3 files changed, 13 insertions(+) Index: linux-2.6/include/linux/pci.h =================================================================== --- linux-2.6.orig/include/linux/pci.h +++ linux-2.6/include/linux/pci.h @@ -735,6 +735,7 @@ enum pcie_bus_config_types { extern enum pcie_bus_config_types pcie_bus_config; +extern struct bus_type pci_host_bridge_bus_type; extern struct bus_type pci_bus_type; /* Do NOT directly access these two variables, unless you are arch-specific PCI @@ -808,6 +809,7 @@ void pci_stop_root_bus(struct pci_bus *b void pci_remove_root_bus(struct pci_bus *bus); void pci_setup_cardbus(struct pci_bus *bus); void pci_sort_breadthfirst(void); +#define dev_is_pci_host_bridge(d) ((d)->bus == &pci_host_bridge_bus_type) #define dev_is_pci(d) ((d)->bus == &pci_bus_type) #define dev_is_pf(d) ((dev_is_pci(d) ? to_pci_dev(d)->is_physfn : false)) #define dev_num_vf(d) ((dev_is_pci(d) ? pci_num_vf(to_pci_dev(d)) : 0)) Index: linux-2.6/drivers/pci/pci-driver.c =================================================================== --- linux-2.6.orig/drivers/pci/pci-driver.c +++ linux-2.6/drivers/pci/pci-driver.c @@ -1408,6 +1408,16 @@ struct bus_type pci_bus_type = { }; EXPORT_SYMBOL(pci_bus_type); +struct bus_type pci_host_bridge_bus_type = { + .name = "pci_host_bridge", +}; + +static int __init pci_host_bridge_driver_init(void) +{ + return bus_register(&pci_host_bridge_bus_type); +} +postcore_initcall(pci_host_bridge_driver_init); + static int __init pci_driver_init(void) { return bus_register(&pci_bus_type); Index: linux-2.6/drivers/pci/probe.c =================================================================== --- linux-2.6.orig/drivers/pci/probe.c +++ linux-2.6/drivers/pci/probe.c @@ -1949,6 +1949,7 @@ struct pci_bus *pci_create_root_bus(stru goto err_out; bridge->dev.parent = parent; + bridge->dev.bus = &pci_host_bridge_bus_type; bridge->dev.release = pci_release_host_bridge_dev; dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus); error = pcibios_root_bridge_prepare(bridge);