Enhance x86 architecture specific code to use hotplug-safe iterators to walk PCI buses. In other words, replace pci_find_bus(), pci_find_next_bus() and pci_root_buses with pci_bus_exists(), pci_get_bus(), pci_get_next_bus() and pci_get_next_root_bus() etc. Signed-off-by: Jiang Liu <jiang.liu@xxxxxxxxxx> Acked-by: Yinghai Lu <yinghai@xxxxxxxxxx> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: "H. Peter Anvin" <hpa@xxxxxxxxx> Cc: x86@xxxxxxxxxx Cc: Myron Stowe <myron.stowe@xxxxxxxxxx> Cc: Yijing Wang <wangyijing@xxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Matthew Garrett <mjg@xxxxxxxxxx> Cc: linux-kernel@xxxxxxxxxxxxxxx --- arch/x86/pci/acpi.c | 3 ++- arch/x86/pci/common.c | 3 ++- arch/x86/pci/i386.c | 9 ++++----- arch/x86/pci/irq.c | 2 +- arch/x86/pci/legacy.c | 2 +- 5 files changed, 10 insertions(+), 9 deletions(-) diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index 3e72425..b972f04 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c @@ -526,7 +526,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) * Maybe the desired pci bus has been already scanned. In such case * it is unnecessary to scan the pci bus with the given domain,busnum. */ - bus = pci_find_bus(domain, busnum); + bus = pci_get_bus(domain, busnum); if (bus) { /* * If the desired bus exits, the content of bus->sysdata will @@ -534,6 +534,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root) */ memcpy(bus->sysdata, sd, sizeof(*sd)); kfree(info); + pci_bus_put(bus); } else { probe_pci_root_info(info, device, busnum, domain); diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index 305c68b..51cc1be 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c @@ -460,8 +460,9 @@ struct pci_bus *pcibios_scan_root(int busnum) { struct pci_bus *bus = NULL; - while ((bus = pci_find_next_bus(bus)) != NULL) { + for_each_pci_root_bus(bus) { if (bus->number == busnum) { + pci_bus_put(bus); /* Already scanned */ return bus; } diff --git a/arch/x86/pci/i386.c b/arch/x86/pci/i386.c index 94919e3..6481d25 100644 --- a/arch/x86/pci/i386.c +++ b/arch/x86/pci/i386.c @@ -343,7 +343,7 @@ static int __init pcibios_assign_resources(void) struct pci_bus *bus; if (!(pci_probe & PCI_ASSIGN_ROMS)) - list_for_each_entry(bus, &pci_root_buses, node) + for_each_pci_root_bus(bus) pcibios_allocate_rom_resources(bus); pci_assign_unassigned_resources(); @@ -371,12 +371,11 @@ void __init pcibios_resource_survey(void) DBG("PCI: Allocating resources\n"); - list_for_each_entry(bus, &pci_root_buses, node) + for_each_pci_root_bus(bus) pcibios_allocate_bus_resources(bus); - - list_for_each_entry(bus, &pci_root_buses, node) + for_each_pci_root_bus(bus) pcibios_allocate_resources(bus, 0); - list_for_each_entry(bus, &pci_root_buses, node) + for_each_pci_root_bus(bus) pcibios_allocate_resources(bus, 1); e820_reserve_resources_late(); diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c index 372e9b8..65898f6 100644 --- a/arch/x86/pci/irq.c +++ b/arch/x86/pci/irq.c @@ -137,7 +137,7 @@ static void __init pirq_peer_trick(void) } for (i = 1; i < 256; i++) { int node; - if (!busmap[i] || pci_find_bus(0, i)) + if (!busmap[i] || pci_bus_exists(0, i)) continue; node = get_mp_bus_to_node(i); if (pci_scan_bus_on_node(i, &pci_root_ops, node)) diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c index 4db96fb..1fb7922 100644 --- a/arch/x86/pci/legacy.c +++ b/arch/x86/pci/legacy.c @@ -40,7 +40,7 @@ void pcibios_scan_specific_bus(int busn) long node; u32 l; - if (pci_find_bus(0, busn)) + if (pci_bus_exists(0, busn)) return; node = get_mp_bus_to_node(busn); -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html