Enhance PPC architecture specific code to use hotplug-safe iterators to walk PCI buses. Signed-off-by: Jiang Liu <jiang.liu@xxxxxxxxxx> Cc: Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx> Cc: Paul Mackerras <paulus@xxxxxxxxx> Bjorn Helgaas <bhelgaas@xxxxxxxxxx> Cc: Gavin Shan <shangw@xxxxxxxxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Grant Likely <grant.likely@xxxxxxxxxxxx> Cc: Bill Pemberton <wfp5p@xxxxxxxxxxxx> Cc: Yinghai Lu <yinghai@xxxxxxxxxx> Cc: linuxppc-dev@xxxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx --- arch/powerpc/kernel/pci-common.c | 4 ++-- arch/powerpc/kernel/pci_64.c | 13 +++++-------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c index fa12ae4..26fca09 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -1400,7 +1400,7 @@ void __init pcibios_resource_survey(void) struct pci_bus *b; /* Allocate and assign resources */ - list_for_each_entry(b, &pci_root_buses, node) + for_each_pci_root_bus(b) pcibios_allocate_bus_resources(b); pcibios_allocate_resources(0); pcibios_allocate_resources(1); @@ -1410,7 +1410,7 @@ void __init pcibios_resource_survey(void) * bus available resources to avoid allocating things on top of them */ if (!pci_has_flag(PCI_PROBE_ONLY)) { - list_for_each_entry(b, &pci_root_buses, node) + for_each_pci_root_bus(b) pcibios_reserve_legacy_regions(b); } diff --git a/arch/powerpc/kernel/pci_64.c b/arch/powerpc/kernel/pci_64.c index 51a133a..a41c6dd 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c @@ -208,7 +208,6 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus, unsigned long in_devfn) { struct pci_controller* hose; - struct list_head *ln; struct pci_bus *bus = NULL; struct device_node *hose_node; @@ -229,18 +228,16 @@ long sys_pciconfig_iobase(long which, unsigned long in_bus, /* That syscall isn't quite compatible with PCI domains, but it's * used on pre-domains setup. We return the first match */ - - for (ln = pci_root_buses.next; ln != &pci_root_buses; ln = ln->next) { - bus = pci_bus_b(ln); - if (in_bus >= bus->number && in_bus <= bus->busn_res.end) + for_each_pci_root_bus(bus) + if (in_bus >= bus->number && in_bus <= bus->busn_res.end && + bus->dev.of_node) break; - bus = NULL; - } - if (bus == NULL || bus->dev.of_node == NULL) + if (bus == NULL) return -ENODEV; hose_node = bus->dev.of_node; hose = PCI_DN(hose_node)->phb; + pci_bus_put(bus); switch (which) { case IOBASE_BRIDGE_NUMBER: -- 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