Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932588Ab3EOPRb (ORCPT ); Wed, 15 May 2013 11:17:31 -0400 Received: from mail-pa0-f45.google.com ([209.85.220.45]:61267 "EHLO mail-pa0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757321Ab3EOPR3 (ORCPT ); Wed, 15 May 2013 11:17:29 -0400 From: Jiang Liu To: Bjorn Helgaas , Yinghai Lu Cc: Jiang Liu , "Rafael J . Wysocki" , Greg Kroah-Hartman , Gu Zheng , Toshi Kani , Myron Stowe , Yijing Wang , Jiang Liu , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Benjamin Herrenschmidt , Paul Mackerras , Gavin Shan , Grant Likely , Bill Pemberton , linuxppc-dev@lists.ozlabs.org Subject: PCI, PPC: use hotplug-safe iterators to walk PCI buses Date: Wed, 15 May 2013 23:17:16 +0800 Message-Id: <1368631036-7845-1-git-send-email-jiang.liu@huawei.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1368574202.31689.54.camel@pasglop> References: <1368574202.31689.54.camel@pasglop> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3279 Lines: 97 Enhance PPC architecture specific code to use hotplug-safe iterators to walk PCI buses. Signed-off-by: Jiang Liu Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Gavin Shan Cc: Greg Kroah-Hartman Cc: Grant Likely Cc: Bill Pemberton Cc: Yinghai Lu Cc: linuxppc-dev@lists.ozlabs.org Cc: linux-kernel@vger.kernel.org --- Hi Benjamin, How about this version? Use pci_bus_to_host() instead to simplify code. Regards! Gerry --- arch/powerpc/kernel/pci-common.c | 4 ++-- arch/powerpc/kernel/pci_64.c | 22 ++++++++-------------- 2 files changed, 10 insertions(+), 16 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..8bea231 100644 --- a/arch/powerpc/kernel/pci_64.c +++ b/arch/powerpc/kernel/pci_64.c @@ -207,10 +207,8 @@ void pcibios_setup_phb_io_space(struct pci_controller *hose) 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; + struct pci_controller* hose = NULL; + struct pci_bus *bus; /* Argh ! Please forgive me for that hack, but that's the * simplest way to get existing XFree to not lockup on some @@ -229,19 +227,15 @@ 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) { + hose = pci_bus_to_host(bus); + pci_bus_put(bus); break; - bus = NULL; - } - if (bus == NULL || bus->dev.of_node == NULL) + } + if (hose == NULL) return -ENODEV; - hose_node = bus->dev.of_node; - hose = PCI_DN(hose_node)->phb; - switch (which) { case IOBASE_BRIDGE_NUMBER: return (long)hose->first_busno; -- 1.8.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/