All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	<linux-pci@vger.kernel.org>, Yinghai Lu <yinghai@kernel.org>,
	<linux-kernel@vger.kernel.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	<linux-arm-kernel@lists.infradead.org>,
	Russell King <linux@arm.linux.org.uk>, <x86@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Tony Luck <tony.luck@intel.com>, <linux-ia64@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	"Guan Xuetao" <gxt@mprc.pku.edu.cn>,
	<linux-alpha@vger.kernel.org>, <linux-m68k@vger.kernel.org>,
	Liviu Dudau <liviu@dudau.co.uk>, "Arnd Bergmann" <arnd@arndb.de>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"Yijing Wang" <wangyijing@huawei.com>,
	<linuxppc-dev@lists.ozlabs.org>
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 11:34:13 +0800	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev@lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode == PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode == PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus == NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host == NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode == PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode == PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	<linux-pci@vger.kernel.org>, Yinghai Lu <yinghai@kernel.org>,
	<linux-kernel@vger.kernel.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	<linux-arm-kernel@lists.infradead.org>,
	Russell King <linux@arm.linux.org.uk>, <x86@kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Tony Luck <tony.luck@intel.com>, <linux-ia64@vger.kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	"Guan Xuetao" <gxt@mprc.pku.edu.cn>,
	<linux-alpha@vger.kernel.org>, <linux-m68k@lists.linux-m68k.org>,
	Liviu Dudau <liviu@dudau.co.uk>, "Arnd Bergmann" <arnd@arndb.de>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	"Yijing Wang" <wangyijing@huawei.com>,
	<linuxppc-dev@lists.ozlabs.org>
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 11:34:13 +0800	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev@lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode == PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode == PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus == NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host == NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode == PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode == PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-ia64@vger.kernel.org, linux-pci@vger.kernel.org,
	Yijing Wang <wangyijing@huawei.com>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	Russell King <linux@arm.linux.org.uk>,
	x86@kernel.org, Geert Uytterhoeven <geert@linux-m68k.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	linux-m68k@lists.linux-m68k.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Yinghai Lu <yinghai@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Liviu Dudau <liviu@dudau.co.uk>, Tony Luck <tony.luck@intel.com>,
	linux-kernel@vger.kernel.org,
	Jiang Liu <jiang.liu@linux.intel.com>,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 11:34:13 +0800	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev@lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode == PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode == PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus == NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host == NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode == PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode == PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1

WARNING: multiple messages have this Message-ID (diff)
From: wangyijing@huawei.com (Yijing Wang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 11:34:13 +0800	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev at lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode == PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode == PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus == NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host == NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode == PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode == PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1

WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: Jiang Liu <jiang.liu@linux.intel.com>,
	linux-pci@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>,
	linux-kernel@vger.kernel.org, Marc Zyngier <marc.zyngier@arm.com>,
	linux-arm-kernel@lists.infradead.org,
	Russell King <linux@arm.linux.org.uk>,
	x86@kernel.org, Thomas Gleixner <tglx@linutronix.de>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Rusty Russell <rusty@rustcorp.com.au>,
	Tony Luck <tony.luck@intel.com>,
	linux-ia64@vger.kernel.org,
	"David S. Miller" <davem@davemloft.net>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	linux-alpha@vger.kernel.org, linux-m68k@vger.kernel.org,
	Liviu Dudau <liviu@dudau.co.uk>, Arnd Bergmann <arnd@arndb.de>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Yijing Wang <wangyijing@huawei.com>,
	linuxppc-dev@lists.ozlabs.org
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 03:34:13 +0000	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev@lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode = PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode = PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus = NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host = NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode = PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode = PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1


WARNING: multiple messages have this Message-ID (diff)
From: Yijing Wang <wangyijing@huawei.com>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-ia64@vger.kernel.org, linux-pci@vger.kernel.org,
	Yijing Wang <wangyijing@huawei.com>,
	Guan Xuetao <gxt@mprc.pku.edu.cn>,
	Russell King <linux@arm.linux.org.uk>,
	x86@kernel.org, Geert Uytterhoeven <geert@linux-m68k.org>,
	Arnd Bergmann <arnd@arndb.de>,
	Marc Zyngier <marc.zyngier@arm.com>,
	Rusty Russell <rusty@rustcorp.com.au>,
	linux-m68k@lists.linux-m68k.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Yinghai Lu <yinghai@kernel.org>,
	linux-arm-kernel@lists.infradead.org,
	Liviu Dudau <liviu@dudau.co.uk>, Tony Luck <tony.luck@intel.com>,
	linux-kernel@vger.kernel.org,
	Jiang Liu <jiang.liu@linux.intel.com>,
	linux-alpha@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	"David S. Miller" <davem@davemloft.net>
Subject: [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity
Date: Tue, 24 Mar 2015 11:34:13 +0800	[thread overview]
Message-ID: <1427168064-8657-20-git-send-email-wangyijing@huawei.com> (raw)
In-Reply-To: <1427168064-8657-1-git-send-email-wangyijing@huawei.com>

Now we could use pci_scan_host_bridge() to scan
pci buses, provide powerpc specific pci_host_bridge_ops.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
CC: Benjamin Herrenschmidt <benh@kernel.crashing.org>
CC: linuxppc-dev@lists.ozlabs.org
---
 arch/powerpc/kernel/pci-common.c |   60 +++++++++++++++++++++++--------------
 1 files changed, 37 insertions(+), 23 deletions(-)

diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
index 2c58200..e2b50a2 100644
--- a/arch/powerpc/kernel/pci-common.c
+++ b/arch/powerpc/kernel/pci-common.c
@@ -773,6 +773,29 @@ void pcibios_set_root_bus_speed(struct pci_host_bridge *bridge)
 		return ppc_md.pcibios_set_root_bus_speed(bridge);
 }
 
+static int pci_host_scan_bus(struct pci_host_bridge *host)
+{
+	int mode = PCI_PROBE_NORMAL;
+	struct pci_bus *bus = host->bus;
+	struct pci_controller *hose = dev_get_drvdata(&host->dev);
+
+	/* Get probe mode and perform scan */
+	if (hose->dn && ppc_md.pci_probe_mode)
+		mode = ppc_md.pci_probe_mode(bus);
+
+	pr_debug("    probe mode: %d\n", mode);
+	if (mode == PCI_PROBE_DEVTREE)
+		of_scan_bus(hose->dn, bus);
+
+	if (mode == PCI_PROBE_NORMAL) {
+		pci_bus_update_busn_res_end(bus, 255);
+		hose->last_busno = pci_scan_child_bus(bus);
+		pci_bus_update_busn_res_end(bus, hose->last_busno);
+	}
+
+	return pci_bus_child_max_busnr(bus);
+}
+
 /* This header fixup will do the resource fixup for all devices as they are
  * probed, but not for bridge ranges
  */
@@ -1585,6 +1608,11 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 	return of_node_get(hose->dn);
 }
 
+static struct pci_host_bridge_ops pci_host_ops = {
+	.set_root_bus_speed = pcibios_set_root_bus_speed,
+	.scan_bus = pci_host_scan_bus,
+};
+
 /**
  * pci_scan_phb - Given a pci_controller, setup and scan the PCI bus
  * @hose: Pointer to the PCI host controller instance structure
@@ -1592,9 +1620,8 @@ struct device_node *pcibios_get_phb_of_node(struct pci_bus *bus)
 void pcibios_scan_phb(struct pci_controller *hose)
 {
 	LIST_HEAD(resources);
-	struct pci_bus *bus;
+	struct pci_host_bridge *host;
 	struct device_node *node = hose->dn;
-	int mode;
 
 	pr_debug("PCI: Scanning PHB %s\n", of_node_full_name(node));
 
@@ -1609,31 +1636,18 @@ void pcibios_scan_phb(struct pci_controller *hose)
 	hose->busn.flags = IORESOURCE_BUS;
 	pci_add_resource(&resources, &hose->busn);
 
+	pci_host_ops.pci_ops = hose->ops;
 	/* Create an empty bus for the toplevel */
-	bus = pci_create_root_bus(hose->parent, hose->global_number,
-			hose->first_busno, hose->ops, hose, &resources);
-	if (bus == NULL) {
-		pr_err("Failed to create bus for PCI domain %04x\n",
-			hose->global_number);
+	host = pci_scan_host_bridge(hose->parent, hose->global_number,
+			hose->first_busno, hose, &resources, &pci_host_ops);
+	if (host == NULL) {
+		pr_err("Failed to create host bridge for pci%04x:%02x\n",
+			hose->global_number, hose->first_busno);
 		pci_free_resource_list(&resources);
 		return;
 	}
 	hose->bus = bus;
 
-	/* Get probe mode and perform scan */
-	mode = PCI_PROBE_NORMAL;
-	if (node && ppc_md.pci_probe_mode)
-		mode = ppc_md.pci_probe_mode(bus);
-	pr_debug("    probe mode: %d\n", mode);
-	if (mode == PCI_PROBE_DEVTREE)
-		of_scan_bus(node, bus);
-
-	if (mode == PCI_PROBE_NORMAL) {
-		pci_bus_update_busn_res_end(bus, 255);
-		hose->last_busno = pci_scan_child_bus(bus);
-		pci_bus_update_busn_res_end(bus, hose->last_busno);
-	}
-
 	/* Platform gets a chance to do some global fixups before
 	 * we proceed to resource allocation
 	 */
@@ -1641,9 +1655,9 @@ void pcibios_scan_phb(struct pci_controller *hose)
 		ppc_md.pcibios_fixup_phb(hose);
 
 	/* Configure PCI Express settings */
-	if (bus && !pci_has_flag(PCI_PROBE_ONLY)) {
+	if (host->bus && !pci_has_flag(PCI_PROBE_ONLY)) {
 		struct pci_bus *child;
-		list_for_each_entry(child, &bus->children, node)
+		list_for_each_entry(child, &host->bus->children, node)
 			pcie_bus_configure_settings(child);
 	}
 }
-- 
1.7.1

_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

  parent reply	other threads:[~2015-03-24  3:39 UTC|newest]

Thread overview: 263+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-24  3:33 [PATCH v8 00/30] Refine PCI scan interfaces and make generic pci host bridge Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` [PATCH v8 01/30] xen/PCI: Don't use deprecated function pci_scan_bus_parented() Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` [PATCH v8 02/30] PCI: Remove deprecated pci_scan_bus_parented() Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33 ` [PATCH v8 03/30] PCI: Save domain in pci_host_bridge Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33 ` [PATCH v8 04/30] PCI: Move pci_bus_assign_domain_nr() declaration into drivers/pci/pci.h Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33 ` Yijing Wang
2015-03-24  3:33 ` [PATCH v8 05/30] PCI: Introduce pci_host_assign_domain_nr() to assign domain Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:33   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 06/30] PCI: Separate pci_host_bridge creation out of pci_create_root_bus() Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 07/30] PCI: Add default bus resource in pci_host_bridge Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 08/30] PCI: Update pci_host_bridge bus resource Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 09/30] PCI: Introduce pci_host_first_busnr() function Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 10/30] PCI: Introduce pci_host_bridge_list to manage host bridges Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-25 16:42   ` Tomasz Nowicki
2015-03-25 16:42     ` Tomasz Nowicki
2015-03-25 16:42     ` Tomasz Nowicki
2015-03-25 16:42     ` Tomasz Nowicki
2015-03-26  1:34     ` Yijing Wang
2015-03-26  1:34       ` Yijing Wang
2015-03-26  1:34       ` Yijing Wang
2015-03-26  1:34       ` Yijing Wang
2015-03-26  1:34       ` Yijing Wang
2015-03-25 16:42   ` Tomasz Nowicki
2015-03-26 16:31   ` Yinghai Lu
2015-03-26 16:31   ` Yinghai Lu
2015-03-26 16:31     ` Yinghai Lu
2015-03-26 16:31     ` Yinghai Lu
2015-03-26 16:31     ` Yinghai Lu
2015-03-27  2:31     ` Yijing Wang
2015-03-27  2:31       ` Yijing Wang
2015-03-27  2:31       ` Yijing Wang
2015-03-27  2:31       ` Yijing Wang
2015-03-27  2:31       ` Yijing Wang
2015-03-27  2:31     ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 11/30] PCI: Save sysdata in pci_host_bridge drvdata Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 12/30] powerpc/PCI: Rename pcibios_root_bridge_prepare() to pcibios_set_root_bus_speed() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 13/30] PCI: Move pcibios_root_bridge_prepare() to pci_create_host_bridge() Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 14/30] PCI: Introduce pci_host_bridge_ops to support host specific operations Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 15/30] PCI: Introduce new scan function pci_scan_host_bridge() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 16/30] PCI: Introduce pci_bus_child_max_busnr() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 17/30] x86/PCI: Refine pci_acpi_scan_root() with generic pci_host_bridge Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 18/30] ia64/PCI: " Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 19/30] powerpc/pci: Use pci_scan_host_bridge() for simplicity Yijing Wang
2015-03-24  3:34 ` Yijing Wang [this message]
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24 23:58   ` Daniel Axtens
2015-03-24 23:58   ` Daniel Axtens
2015-03-24 23:58     ` Daniel Axtens
2015-03-24 23:58     ` Daniel Axtens
2015-03-24 23:58     ` Daniel Axtens
2015-03-24 23:58     ` Daniel Axtens
2015-03-25  7:42     ` Yijing Wang
2015-03-25  7:42       ` Yijing Wang
2015-03-25  7:42       ` Yijing Wang
2015-03-25  7:42       ` Yijing Wang
2015-03-25  7:42       ` Yijing Wang
2015-03-25  7:42       ` Yijing Wang
2015-03-25 22:13       ` Daniel Axtens
2015-03-25 22:13       ` Daniel Axtens
2015-03-25 22:13         ` Daniel Axtens
2015-03-25 22:13         ` Daniel Axtens
2015-03-25 22:13         ` Daniel Axtens
2015-03-25 22:13         ` Daniel Axtens
2015-03-26  1:17         ` Yijing Wang
2015-03-26  1:17           ` Yijing Wang
2015-03-26  1:17           ` Yijing Wang
2015-03-26  1:17           ` Yijing Wang
2015-03-26  1:17           ` Yijing Wang
2015-03-26  1:17           ` Yijing Wang
2015-03-26  5:19           ` Daniel Axtens
2015-03-26  5:19             ` Daniel Axtens
2015-03-26  5:19             ` Daniel Axtens
2015-03-26  5:19             ` Daniel Axtens
2015-03-26  5:19             ` Daniel Axtens
2015-03-26  6:20             ` Yijing Wang
2015-03-26  6:20               ` Yijing Wang
2015-03-26  6:20               ` Yijing Wang
2015-03-26  6:20               ` Yijing Wang
2015-03-26  6:20               ` Yijing Wang
2015-03-26  6:20               ` Yijing Wang
2015-03-26  6:20             ` Yijing Wang
2015-03-26  5:19           ` Daniel Axtens
2015-03-25  7:42     ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 20/30] PCI: Remove pcibios_root_bridge_prepare() and pcibos_set_root_bus_speed() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 21/30] sparc/PCI: Use pci_scan_host_bridge() for simplicity Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 22/30] parisc/PCI: Use pci_scan_root_bus() " Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 23/30] PCI/mvebu: Use pci_common_init_dev() to simplify code Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-25  8:55   ` Yijing Wang
2015-03-25  8:55     ` Yijing Wang
2015-03-25  8:55     ` Yijing Wang
2015-03-25  8:55     ` Yijing Wang
2015-03-25  8:55     ` Yijing Wang
2015-03-25 16:43     ` Thomas Petazzoni
2015-03-25 16:43       ` Thomas Petazzoni
2015-03-25 16:43       ` Thomas Petazzoni
2015-03-25 16:43       ` Thomas Petazzoni
2015-03-25 16:43       ` Thomas Petazzoni
2015-03-26  1:21       ` Yijing Wang
2015-03-25 16:43     ` Thomas Petazzoni
2015-03-24  3:34 ` [PATCH v8 24/30] PCI/tegra: Remove redundant tegra_pcie_scan_bus() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24 12:31   ` Thierry Reding
2015-03-24 12:31     ` Thierry Reding
2015-03-24 12:31     ` Thierry Reding
2015-03-24 12:31     ` Thierry Reding
2015-03-25  1:22     ` Yijing Wang
2015-03-25  1:22     ` Yijing Wang
2015-03-25  1:22       ` Yijing Wang
2015-03-25  1:22       ` Yijing Wang
2015-03-25  1:22       ` Yijing Wang
2015-03-25  1:22       ` Yijing Wang
2015-03-24 12:31   ` Thierry Reding
2015-03-24  3:34 ` [PATCH v8 25/30] PCI/designware: Use pci_scan_root_bus() for simplicity Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 26/30] PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus() Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 27/30] PCI: Rename __pci_create_root_bus() to pci_create_root_bus() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 28/30] PCI: Remove platform specific pci_domain_nr() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 29/30] PCI: Remove pci_bus_assign_domain_nr() Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` [PATCH v8 30/30] PCI: Clean up CONFIG_PCI_DOMAINS_GENERIC Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34   ` Yijing Wang
2015-03-24  3:34 ` Yijing Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1427168064-8657-20-git-send-email-wangyijing@huawei.com \
    --to=wangyijing@huawei.com \
    --cc=arnd@arndb.de \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=davem@davemloft.net \
    --cc=geert@linux-m68k.org \
    --cc=gxt@mprc.pku.edu.cn \
    --cc=jiang.liu@linux.intel.com \
    --cc=linux-alpha@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=liviu@dudau.co.uk \
    --cc=marc.zyngier@arm.com \
    --cc=rusty@rustcorp.com.au \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.