From patchwork Sun Jan 27 19:23:29 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yinghai Lu X-Patchwork-Id: 2052341 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) by patchwork1.kernel.org (Postfix) with ESMTP id 7E6E93FD49 for ; Sun, 27 Jan 2013 19:27:54 +0000 (UTC) Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.76 #1 (Red Hat Linux)) id 1TzXqT-0007b4-88; Sun, 27 Jan 2013 19:24:49 +0000 Received: from userp1040.oracle.com ([156.151.31.81]) by merlin.infradead.org with esmtps (Exim 4.76 #1 (Red Hat Linux)) id 1TzXqM-0007Zq-9b for linux-arm-kernel@lists.infradead.org; Sun, 27 Jan 2013 19:24:43 +0000 Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by userp1040.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id r0RJO4PE001943 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sun, 27 Jan 2013 19:24:04 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id r0RJNxrl020085 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sun, 27 Jan 2013 19:24:00 GMT Received: from abhmt120.oracle.com (abhmt120.oracle.com [141.146.116.72]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id r0RJNwJ7018480; Sun, 27 Jan 2013 13:23:58 -0600 Received: from linux-siqj.site (/75.36.243.194) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sun, 27 Jan 2013 11:23:57 -0800 From: Yinghai Lu To: Bjorn Helgaas , Jiang Liu , "Rafael J. Wysocki" , Taku Izumi , Toshi Kani Subject: [PATCH v3 02/22] PCI: Add dummy bus_type for pci_host_bridge Date: Sun, 27 Jan 2013 11:23:29 -0800 Message-Id: <1359314629-18651-3-git-send-email-yinghai@kernel.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1359314629-18651-1-git-send-email-yinghai@kernel.org> References: <1359314629-18651-1-git-send-email-yinghai@kernel.org> X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20130127_142442_499495_375120E9 X-CRM114-Status: GOOD ( 16.33 ) X-Spam-Score: -1.2 (-) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-1.2 points) pts rule name description ---- ---------------------- -------------------------------------------------- -2.3 RCVD_IN_DNSWL_MED RBL: Sender listed at http://www.dnswl.org/, medium trust [156.151.31.81 listed in list.dnswl.org] 3.0 KHOP_BIG_TO_CC Sent to 10+ recipients instaed of Bcc or a list -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 0.0 UNPARSEABLE_RELAY Informational: message has unparseable relay lines Cc: linux-ia64@vger.kernel.org, Mauro Carvalho Chehab , David Airlie , linux-pci@vger.kernel.org, dri-devel@lists.freedesktop.org, David Howells , Paul Mackerras , sparclinux@vger.kernel.org, linux-am33-list@redhat.com, Russell King , x86@kernel.org, linux-altix@sgi.com, Doug Thompson , Matt Turner , linux-edac@vger.kernel.org, Fenghua Yu , microblaze-uclinux@itee.uq.edu.au, Ivan Kokshaysky , Yinghai Lu , linux-arm-kernel@lists.infradead.org, Richard Henderson , Michal Simek , Tony Luck , Greg Kroah-Hartman , Benjamin Herrenschmidt , linux-alpha@vger.kernel.org, Koichi Yasutake , linuxppc-dev@lists.ozlabs.org, "David S. Miller" X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: linux-arm-kernel-bounces@lists.infradead.org Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org Need to use it for looping registered host_bridge, and kill pci_root_buses list. Signed-off-by: Yinghai Lu Cc: Mauro Carvalho Chehab Cc: Doug Thompson Cc: linux-edac@vger.kernel.org Cc: x86@kernel.org Cc: David Airlie Cc: dri-devel@lists.freedesktop.org Cc: "David S. Miller" Cc: sparclinux@vger.kernel.org Cc: Tony Luck Cc: Fenghua Yu Cc: linux-ia64@vger.kernel.org Cc: linux-altix@sgi.com Cc: Richard Henderson Cc: Ivan Kokshaysky Cc: Matt Turner Cc: linux-alpha@vger.kernel.org Cc: Russell King Cc: linux-arm-kernel@lists.infradead.org Cc: David Howells Cc: Michal Simek Cc: microblaze-uclinux@itee.uq.edu.au Cc: Koichi Yasutake Cc: linux-am33-list@redhat.com Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: linuxppc-dev@lists.ozlabs.org --- drivers/pci/pci-driver.c | 11 ++++++++++- drivers/pci/probe.c | 1 + include/linux/pci.h | 2 ++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c index acdcc3c..9fb004b 100644 --- a/drivers/pci/pci-driver.c +++ b/drivers/pci/pci-driver.c @@ -1278,11 +1278,20 @@ struct bus_type pci_bus_type = { .pm = PCI_PM_OPS_PTR, }; +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); } - postcore_initcall(pci_driver_init); EXPORT_SYMBOL_GPL(pci_add_dynid); diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index ef50154..04ecf0d 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -1692,6 +1692,7 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus, 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); diff --git a/include/linux/pci.h b/include/linux/pci.h index 056d3d6..9da06ec 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -669,6 +669,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 @@ -740,6 +741,7 @@ void pci_stop_root_bus(struct pci_bus *bus); void pci_remove_root_bus(struct pci_bus *bus); void pci_setup_cardbus(struct pci_bus *bus); extern 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))