From patchwork Sun May 26 15:53:07 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jiang Liu X-Patchwork-Id: 246413 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from ozlabs.org (localhost [IPv6:::1]) by ozlabs.org (Postfix) with ESMTP id 040792C0384 for ; Mon, 27 May 2013 01:58:43 +1000 (EST) Received: from mail-pa0-f54.google.com (mail-pa0-f54.google.com [209.85.220.54]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority" (not verified)) by ozlabs.org (Postfix) with ESMTPS id 0EF6E2C00AF for ; Mon, 27 May 2013 01:58:06 +1000 (EST) Received: by mail-pa0-f54.google.com with SMTP id kx1so6030803pab.13 for ; Sun, 26 May 2013 08:58:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=+BnqekMjw7BsQqTL8jbuCagqNh2GiZ0yU6pS1mcM34E=; b=ibFDS8X9quMH/QJv1OP8Lm4KlBrIqsjp8FuWN8VZfdTN5nGm7SZ4oNqQr22Tlx6F4n E0A0kF3NfWdG6TzwS8ZqN03Zxa8YIsnFNwXVM1r7S+upUlPc5c4vEWxuNAmwY+OvpbZe CR7qJUbKER0sxyZnsbJAzTJhIUZinmUW04Fm5zlVocLVT3ZrjEZ9DlTdLotSgOEojxUF YlmTS5Sg6kdFN1KMJQX5bwza6etKbN0ARlAr1TyYWZf+F6bZS/fBW+sBFBb2WVU7lLXA MHHOM1jmJmcsfBC/rxdKgAOwQ7K5/sfgyN3Y2VoaYsw9tilGcmuwthqwapgLJVmPdVAn RqEQ== X-Received: by 10.68.194.135 with SMTP id hw7mr25732581pbc.192.1369583884427; Sun, 26 May 2013 08:58:04 -0700 (PDT) Received: from localhost.localdomain ([111.196.197.202]) by mx.google.com with ESMTPSA id ze11sm26603189pab.22.2013.05.26.08.57.58 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Sun, 26 May 2013 08:58:03 -0700 (PDT) From: Jiang Liu To: Bjorn Helgaas , Yinghai Lu Subject: [PATCH v3, part2 10/20] PCI, PPC: use hotplug-safe iterators to walk PCI buses Date: Sun, 26 May 2013 23:53:07 +0800 Message-Id: <1369583597-3801-11-git-send-email-jiang.liu@huawei.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <1369583597-3801-1-git-send-email-jiang.liu@huawei.com> References: <1369583597-3801-1-git-send-email-jiang.liu@huawei.com> Cc: Gavin Shan , Toshi Kani , Jiang Liu , Greg Kroah-Hartman , linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org, "Rafael J . Wysocki" , Yijing Wang , Bill Pemberton , linux-pci@vger.kernel.org, Gu Zheng , Paul Mackerras , Myron Stowe , Jiang Liu X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" 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 --- 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 f5c5c90..56ad3a4 100644 --- a/arch/powerpc/kernel/pci-common.c +++ b/arch/powerpc/kernel/pci-common.c @@ -1386,7 +1386,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); @@ -1396,7 +1396,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 873050d..d71249b 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;