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@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>
Subject: [PATCH v2 12/30] PCI: Introduce pci_host_bridge_ops to support host specific operations
Date: Wed, 21 Jan 2015 08:30:07 +0800	[thread overview]
Message-ID: <1421800225-26230-13-git-send-email-wangyijing__31471.8804475435$1421807971$gmane$org@huawei.com> (raw)
In-Reply-To: <1421800225-26230-1-git-send-email-wangyijing@huawei.com>

Now we have weak functions like pcibios_root_bridge_prepare()
to setup pci host bridge, We could introduce pci_host_bridge_ops
which contain host bridge specific ops to setup pci_host_bridge.
Then host bridge driver could add pci_host_bridge_ops hooks
intead of weak function to setup pci_host_bridge.
This patch add following pci_host_bridge_ops hooks:

pci_host_bridge_ops {
	/* set root bus speed, some platform need this like powerpc */
	void (*phb_set_root_bus_speed)(struct pci_host_bridge *host);
	/* setup pci_host_bridge before pci_host_bridge be added to driver core */
	int (*phb_prepare)(struct pci_host_bridge *host);
	/* platform specific of scan hook to scan pci device */
	void (*phb_of_scan_bus)(struct pci_host_bridge *);
}
We could easily extend it to support different host bridge
specific operations.

Signed-off-by: Yijing Wang <wangyijing@huawei.com>
---
 drivers/pci/host-bridge.c |   12 ++++++++++--
 drivers/pci/probe.c       |   17 +++++++++++------
 include/linux/pci.h       |   12 ++++++++++--
 3 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/drivers/pci/host-bridge.c b/drivers/pci/host-bridge.c
index 91b354b..26cefce 100644
--- a/drivers/pci/host-bridge.c
+++ b/drivers/pci/host-bridge.c
@@ -23,8 +23,8 @@ static void pci_release_host_bridge_dev(struct device *dev)
 }
 
 struct pci_host_bridge *pci_create_host_bridge(
-		struct device *parent, u32 db, 
-		struct list_head *resources, void *sysdata)
+		struct device *parent, u32 db, struct list_head *resources,
+		void *sysdata, struct pci_host_bridge_ops *ops)
 {
 	int error;
 	int bus = PCI_BUSNUM(db);
@@ -56,6 +56,7 @@ struct pci_host_bridge *pci_create_host_bridge(
 		}
 	mutex_unlock(&phb_mutex);
 
+	host->ops = ops;
 	host->dev.parent = parent;
 	INIT_LIST_HEAD(&host->windows);
 	host->dev.release = pci_release_host_bridge_dev;
@@ -63,6 +64,13 @@ struct pci_host_bridge *pci_create_host_bridge(
 	dev_set_name(&host->dev, "pci%04x:%02x", host->domain, 
 			host->busnum);
 
+	if (host->ops && host->ops->phb_prepare) {
+		error = host->ops->phb_prepare(host);
+		if(error) {
+			kfree(host);
+			return NULL;
+		}
+	}
 	error = device_register(&host->dev);
 	if (error) {
 		put_device(&host->dev);
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 103ef69..ca53c37 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1888,6 +1888,8 @@ static struct pci_bus *__pci_create_root_bus(
 
 	bridge->bus = b;
 	b->bridge = get_device(&bridge->dev);
+	if (bridge->ops && bridge->ops->phb_set_root_bus_speed)
+		bridge->ops->phb_set_root_bus_speed(bridge);
 	error = pcibios_root_bridge_prepare(bridge);
 	if (error)
 		goto err_out;
@@ -1953,7 +1955,7 @@ struct pci_bus *pci_create_root_bus(struct device *parent, u32 db,
 {
 	struct pci_host_bridge *host;
 
-	host = pci_create_host_bridge(parent, db, resources, sysdata);
+	host = pci_create_host_bridge(parent, db, resources, sysdata, NULL);
 	if (!host)
 		return NULL;
 	
@@ -2051,10 +2053,13 @@ static struct pci_bus *__pci_scan_root_bus(
 		pci_bus_insert_busn_res(b, b->number, 255);
 	}
 
-	max = pci_scan_child_bus(b);
-
-	if (!found)
-		pci_bus_update_busn_res_end(b, max);
+	if (host->ops && host->ops->phb_of_scan_bus) {
+		host->ops->phb_of_scan_bus(host);
+	} else {
+		max = pci_scan_child_bus(b);
+		if (!found)
+			pci_bus_update_busn_res_end(b, max);
+	}
 
 	return b;
 }
@@ -2064,7 +2069,7 @@ struct pci_bus *pci_scan_root_bus(struct device *parent, u32 db,
 {
 	struct pci_host_bridge *host;
 
-	host = pci_create_host_bridge(parent, db, resources, sysdata);
+	host = pci_create_host_bridge(parent, db, resources, sysdata, NULL);
 	if (!host)
 		return NULL;
 
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 3ee8436..817756a 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -401,6 +401,13 @@ struct pci_host_bridge_window {
 	resource_size_t offset;		/* bus address + offset = CPU address */
 };
 
+struct pci_host_bridge;
+struct pci_host_bridge_ops {
+	void (*phb_set_root_bus_speed)(struct pci_host_bridge *host);
+	int (*phb_prepare)(struct pci_host_bridge *host);
+	void (*phb_of_scan_bus)(struct pci_host_bridge *);
+};
+
 struct pci_host_bridge {
 	u16	domain;
 	u16 busnum;
@@ -408,6 +415,7 @@ struct pci_host_bridge {
 	struct pci_bus *bus;		/* root bus */
 	struct list_head list;
 	struct list_head windows;	/* pci_host_bridge_windows */
+	struct pci_host_bridge_ops *ops;
 	void (*release_fn)(struct pci_host_bridge *);
 	void *release_data;
 };
@@ -419,8 +427,8 @@ void pci_set_host_bridge_release(struct pci_host_bridge *bridge,
 
 int pcibios_root_bridge_prepare(struct pci_host_bridge *bridge);
 struct pci_host_bridge *pci_create_host_bridge(
-		struct device *parent, u32 dombus, 
-		struct list_head *resources, void *sysdata);
+		struct device *parent, u32 dombus, struct list_head *resources,
+		void *sysdata, struct pci_host_bridge_ops *ops);
 /*
  * The first PCI_BRIDGE_RESOURCE_NUM PCI bus resources (those that correspond
  * to P2P or CardBus bridge windows) go in a table.  Additional ones (for
-- 
1.7.1

  parent reply	other threads:[~2015-01-21  0:30 UTC|newest]

Thread overview: 267+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-21  0:29 [PATCH v2 00/30] Refine PCI scan interfaces and make generic pci host bridge Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` [PATCH v2 01/30] PCI: Rip out pci_bus_add_devices() from pci_scan_bus() Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29 ` [PATCH v2 02/30] PCI: Rip out pci_bus_add_devices() from pci_scan_root_bus() Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` [PATCH v2 03/30] xen/PCI: Don't use deprecated function pci_scan_bus_parented() Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-22 20:25   ` Konrad Rzeszutek Wilk
2015-01-22 20:25   ` Konrad Rzeszutek Wilk
2015-01-22 20:25     ` Konrad Rzeszutek Wilk
2015-01-22 20:25     ` Konrad Rzeszutek Wilk
2015-01-23  2:12     ` Yijing Wang
2015-01-23  2:12       ` Yijing Wang
2015-01-23  2:12       ` Yijing Wang
2015-01-23  2:12       ` Yijing Wang
2015-01-23  2:12     ` Yijing Wang
2015-01-21  0:29 ` [PATCH v2 04/30] PCI: Remove deprecated pci_scan_bus_parented() Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29   ` Yijing Wang
2015-01-21  0:29 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 05/30] PCI: Rename pci_scan_bus() to pci_scan_bus_legacy() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 06/30] PCI: Combine PCI domain and bus number in u32 arg Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 07/30] PCI: Pass PCI domain number combined with root bus number Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 08/30] PCI: Introduce pci_host_assign_domain_nr() to assign domain Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 09/30] PCI: Separate pci_host_bridge creation out of pci_create_root_bus() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 10/30] PCI: Introduce pci_host_bridge_list to manage host bridges Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 11/30] PCI: Save sysdata in pci_host_bridge drvdata Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang [this message]
2015-01-21  0:30 ` [PATCH v2 12/30] PCI: Introduce pci_host_bridge_ops to support host specific operations Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 13/30] PCI: Introduce new scan function pci_scan_root_bridge() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 14/30] PCI/x86: Refine pci_acpi_scan_root() with generic pci_host_bridge Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 15/30] PCI/IA64: " Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 16/30] PCI/IA64: Fix the build warning about pci_domain_nr() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 17/30] PCI/powerpc: Rename pcibios_root_bridge_prepare() Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 18/30] PCI/powerpc: Use pci_scan_root_bridge() for simplicity Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 19/30] PCI: Remove weak pcibios_root_bridge_prepare() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 20/30] PCI/sparc: Use pci_scan_root_bridge() for simplicity Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 21/30] PCI: Introduce pci_bus_child_max_busnr() Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 22/30] PCI/Parisc: Use pci_scan_root_bus() for simplicity Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 23/30] PCI/mvebu: Use pci_common_init_dev() to simplify code Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-22 17:40   ` Thomas Petazzoni
2015-01-22 17:40     ` Thomas Petazzoni
2015-01-22 17:40     ` Thomas Petazzoni
2015-01-22 17:40     ` Thomas Petazzoni
2015-01-22 17:40     ` Thomas Petazzoni
2015-01-23  2:11     ` Yijing Wang
2015-01-23  2:11     ` Yijing Wang
2015-01-23  2:11       ` Yijing Wang
2015-01-23  2:11       ` Yijing Wang
2015-01-23  2:11       ` Yijing Wang
2015-01-23  2:11       ` Yijing Wang
2015-02-16 17:46     ` Lorenzo Pieralisi
2015-02-16 17:46       ` Lorenzo Pieralisi
2015-02-16 17:46       ` Lorenzo Pieralisi
2015-01-22 17:40   ` Thomas Petazzoni
     [not found] ` <1421800225-26230-1-git-send-email-wangyijing-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-01-21  0:30   ` [PATCH v2 24/30] PCI/tegra: Remove redundant tegra_pcie_scan_bus() Yijing Wang
2015-01-21  0:30     ` Yijing Wang
2015-01-21  0:30     ` Yijing Wang
2015-01-21  0:30     ` Yijing Wang
2015-01-21  0:30     ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 25/30] PCI/designware: Use pci_scan_root_bus() for simplicity Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 26/30] PCI/xgene: Use pci_scan_root_bus() instead of pci_create_root_bus() Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 27/30] PCI: Rename __pci_create_root_bus() to pci_create_root_bus() Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 28/30] PCI: Export find_pci_host_bridge() Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 29/30] PCI: Remove platform specific pci_domain_nr() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-21  0:30 ` [PATCH v2 30/30] PCI: Remove pci_bus_assign_domain_nr() Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30   ` Yijing Wang
2015-01-21  0:30 ` Yijing Wang
2015-01-30  9:10 ` [PATCH v2 00/30] Refine PCI scan interfaces and make generic pci host bridge Yijing Wang
2015-01-30  9:10 ` Yijing Wang
2015-01-30  9:10   ` Yijing Wang
2015-01-30  9:10   ` Yijing Wang
2015-01-30  9:10   ` Yijing Wang
2015-01-30  9:10   ` Yijing Wang
2015-01-30 15:45   ` Bjorn Helgaas
2015-01-30 15:45   ` Bjorn Helgaas
2015-01-30 15:45     ` Bjorn Helgaas
2015-01-30 15:45     ` Bjorn Helgaas
2015-01-30 15:45     ` Bjorn Helgaas
2015-01-31  0:55     ` Yijing Wang
2015-01-31  0:55       ` Yijing Wang
2015-01-31  0:55       ` Yijing Wang
2015-01-31  0:55       ` Yijing Wang
2015-01-31  0:55       ` Yijing Wang
2015-02-14 19:45 ` Lorenzo Pieralisi
2015-02-14 19:45   ` Lorenzo Pieralisi
2015-02-14 19:45   ` Lorenzo Pieralisi
2015-02-14 19:45   ` Lorenzo Pieralisi
2015-02-15  1:11   ` Yijing Wang
2015-02-15  1:11     ` Yijing Wang
2015-02-15  1:11     ` Yijing Wang
2015-02-15  1:11     ` Yijing Wang
2015-02-15  1:11     ` Yijing Wang
2015-02-16  1:18   ` Yijing Wang
2015-02-16  1:18     ` Yijing Wang
2015-02-16  1:18     ` Yijing Wang
2015-02-16  1:18     ` Yijing Wang
2015-02-16  1:18     ` Yijing Wang
2015-02-16  3:13     ` Benjamin Herrenschmidt
2015-02-16  3:13       ` Benjamin Herrenschmidt
2015-02-16  3:13       ` Benjamin Herrenschmidt
2015-02-16  3:13       ` Benjamin Herrenschmidt
2015-02-16  3:13       ` Benjamin Herrenschmidt
2015-02-16  3:28       ` Yijing Wang
2015-02-16  3:28         ` Yijing Wang
2015-02-16  3:28         ` Yijing Wang
2015-02-16  3:28         ` Yijing Wang
2015-02-16  3:28         ` Yijing Wang
2015-02-25 23:09 ` Bjorn Helgaas
2015-02-25 23:09 ` Bjorn Helgaas
2015-02-25 23:09   ` Bjorn Helgaas
2015-02-25 23:09   ` Bjorn Helgaas
2015-02-25 23:09   ` Bjorn Helgaas
2015-02-26  0:54   ` Yijing Wang
2015-02-26  0:54     ` Yijing Wang
2015-02-26  0:54     ` Yijing Wang
2015-02-26  0:54     ` Yijing Wang
2015-02-26  0:54     ` Yijing Wang
2015-02-26  0:54   ` 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='1421800225-26230-13-git-send-email-wangyijing__31471.8804475435$1421807971$gmane$org@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@lists.linux-m68k.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --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.