All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hanjun Guo <guohanjun@huawei.com>
To: Marc Zyngier <marc.zyngier@arm.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	Greg KH <gregkh@linuxfoundation.org>,
	Tomasz Nowicki <tn@semihalf.com>, Ma Jun <majun258@huawei.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Agustin Vega-Frias <agustinv@codeaurora.org>,
	Sinan Kaya <okaya@codeaurora.org>,
	huxinwei@huawei.com, yimin@huawei.com, linuxarm@huawei.com,
	Matthias Brugger <mbrugger@suse.com>,
	Wei Xu <xuwei5@hisilicon.com>, Ming Lei <tom.leiming@gmail.com>,
	Hanjun Guo <hanjun.guo@linaro.org>
Subject: [PATCH v8 09/15] ACPI: IORT: introduce iort_node_map_platform_id() to retrieve dev id
Date: Wed, 18 Jan 2017 20:54:59 +0800	[thread overview]
Message-ID: <1484744105-53140-10-git-send-email-guohanjun@huawei.com> (raw)
In-Reply-To: <1484744105-53140-1-git-send-email-guohanjun@huawei.com>

From: Hanjun Guo <hanjun.guo@linaro.org>

For named components if we want to retrieve the dev id, we know that
there are always two steps involved (second is optional):

(1) Retrieve the initial id (this may well provide the final mapping)
(2) Map the id (optional if (1) represents the map type we need), this
    is needed for use cases such as NC (named component) -> SMMU -> ITS
    mappings.

we have API iort_node_get_id() for step (1) above and iort_node_map_rid()
for step (2), so create a wrapper iort_node_map_platform_id() to
retrieve the dev id.

iort_node_map_platform_id() will handle the parent type so type handing
in iort_node_get_id() is duplicate, remove it and update current
iort_node_get_id() users to move them over to iort_node_map_platform_id().

Suggested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Suggested-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Ming Lei <ming.lei@canonical.com>
Tested-by: Wei Xu <xuwei5@hisilicon.com>
Tested-by: Sinan Kaya <okaya@codeaurora.org>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Tomasz Nowicki <tn@semihalf.com>
---
 drivers/acpi/arm64/iort.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index 069a690..dacf5e1 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -318,8 +318,7 @@ static int iort_id_map(struct acpi_iort_id_mapping *map, u8 type, u32 rid_in,
 
 static
 struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
-					u32 *id_out, u8 type_mask,
-					int index)
+					u32 *id_out, int index)
 {
 	struct acpi_iort_node *parent;
 	struct acpi_iort_id_mapping *map;
@@ -341,9 +340,6 @@ struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
 	parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
 			       map->output_reference);
 
-	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
-		return NULL;
-
 	if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
 		if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT ||
 		    node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
@@ -406,6 +402,34 @@ static struct acpi_iort_node *iort_node_map_id(struct acpi_iort_node *node,
 	return NULL;
 }
 
+static
+struct acpi_iort_node *iort_node_map_platform_id(struct acpi_iort_node *node,
+						 u32 *id_out, u8 type_mask,
+						 int index)
+{
+	struct acpi_iort_node *parent;
+	u32 id;
+
+	/* step 1: retrieve the initial dev id */
+	parent = iort_node_get_id(node, &id, index);
+	if (!parent)
+		return NULL;
+
+	/*
+	 * optional step 2: map the initial dev id if its parent is not
+	 * the target type we want, map it again for the use cases such
+	 * as NC (named component) -> SMMU -> ITS. If the type is matched,
+	 * return the initial dev id and its parent pointer directly.
+	 */
+	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
+		parent = iort_node_map_id(parent, id, id_out, type_mask);
+	else
+		if (id_out)
+			*id_out = id;
+
+	return parent;
+}
+
 static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
 {
 	struct pci_bus *pbus;
@@ -604,14 +628,15 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev)
 		if (!node)
 			return NULL;
 
-		parent = iort_node_get_id(node, &streamid,
-					  IORT_IOMMU_TYPE, i++);
+		parent = iort_node_map_platform_id(node, &streamid,
+						   IORT_IOMMU_TYPE, i++);
 
 		while (parent) {
 			ops = iort_iommu_xlate(dev, parent, streamid);
 
-			parent = iort_node_get_id(node, &streamid,
-						  IORT_IOMMU_TYPE, i++);
+			parent = iort_node_map_platform_id(node, &streamid,
+							   IORT_IOMMU_TYPE,
+							   i++);
 		}
 	}
 
-- 
1.7.12.4


WARNING: multiple messages have this Message-ID (diff)
From: Hanjun Guo <guohanjun@huawei.com>
To: Marc Zyngier <marc.zyngier@arm.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: <linux-acpi@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Greg KH <gregkh@linuxfoundation.org>,
	Tomasz Nowicki <tn@semihalf.com>, Ma Jun <majun258@huawei.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	"Agustin Vega-Frias" <agustinv@codeaurora.org>,
	Sinan Kaya <okaya@codeaurora.org>, <huxinwei@huawei.com>,
	<yimin@huawei.com>, <linuxarm@huawei.com>,
	"Matthias Brugger" <mbrugger@suse.com>,
	Wei Xu <xuwei5@hisilicon.com>, Ming Lei <tom.leiming@gmail.com>,
	Hanjun Guo <hanjun.guo@linaro.org>
Subject: [PATCH v8 09/15] ACPI: IORT: introduce iort_node_map_platform_id() to retrieve dev id
Date: Wed, 18 Jan 2017 20:54:59 +0800	[thread overview]
Message-ID: <1484744105-53140-10-git-send-email-guohanjun@huawei.com> (raw)
In-Reply-To: <1484744105-53140-1-git-send-email-guohanjun@huawei.com>

From: Hanjun Guo <hanjun.guo@linaro.org>

For named components if we want to retrieve the dev id, we know that
there are always two steps involved (second is optional):

(1) Retrieve the initial id (this may well provide the final mapping)
(2) Map the id (optional if (1) represents the map type we need), this
    is needed for use cases such as NC (named component) -> SMMU -> ITS
    mappings.

we have API iort_node_get_id() for step (1) above and iort_node_map_rid()
for step (2), so create a wrapper iort_node_map_platform_id() to
retrieve the dev id.

iort_node_map_platform_id() will handle the parent type so type handing
in iort_node_get_id() is duplicate, remove it and update current
iort_node_get_id() users to move them over to iort_node_map_platform_id().

Suggested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Suggested-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Ming Lei <ming.lei@canonical.com>
Tested-by: Wei Xu <xuwei5@hisilicon.com>
Tested-by: Sinan Kaya <okaya@codeaurora.org>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Tomasz Nowicki <tn@semihalf.com>
---
 drivers/acpi/arm64/iort.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index 069a690..dacf5e1 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -318,8 +318,7 @@ static int iort_id_map(struct acpi_iort_id_mapping *map, u8 type, u32 rid_in,
 
 static
 struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
-					u32 *id_out, u8 type_mask,
-					int index)
+					u32 *id_out, int index)
 {
 	struct acpi_iort_node *parent;
 	struct acpi_iort_id_mapping *map;
@@ -341,9 +340,6 @@ struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
 	parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
 			       map->output_reference);
 
-	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
-		return NULL;
-
 	if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
 		if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT ||
 		    node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
@@ -406,6 +402,34 @@ static struct acpi_iort_node *iort_node_map_id(struct acpi_iort_node *node,
 	return NULL;
 }
 
+static
+struct acpi_iort_node *iort_node_map_platform_id(struct acpi_iort_node *node,
+						 u32 *id_out, u8 type_mask,
+						 int index)
+{
+	struct acpi_iort_node *parent;
+	u32 id;
+
+	/* step 1: retrieve the initial dev id */
+	parent = iort_node_get_id(node, &id, index);
+	if (!parent)
+		return NULL;
+
+	/*
+	 * optional step 2: map the initial dev id if its parent is not
+	 * the target type we want, map it again for the use cases such
+	 * as NC (named component) -> SMMU -> ITS. If the type is matched,
+	 * return the initial dev id and its parent pointer directly.
+	 */
+	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
+		parent = iort_node_map_id(parent, id, id_out, type_mask);
+	else
+		if (id_out)
+			*id_out = id;
+
+	return parent;
+}
+
 static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
 {
 	struct pci_bus *pbus;
@@ -604,14 +628,15 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev)
 		if (!node)
 			return NULL;
 
-		parent = iort_node_get_id(node, &streamid,
-					  IORT_IOMMU_TYPE, i++);
+		parent = iort_node_map_platform_id(node, &streamid,
+						   IORT_IOMMU_TYPE, i++);
 
 		while (parent) {
 			ops = iort_iommu_xlate(dev, parent, streamid);
 
-			parent = iort_node_get_id(node, &streamid,
-						  IORT_IOMMU_TYPE, i++);
+			parent = iort_node_map_platform_id(node, &streamid,
+							   IORT_IOMMU_TYPE,
+							   i++);
 		}
 	}
 
-- 
1.7.12.4

WARNING: multiple messages have this Message-ID (diff)
From: guohanjun@huawei.com (Hanjun Guo)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8 09/15] ACPI: IORT: introduce iort_node_map_platform_id() to retrieve dev id
Date: Wed, 18 Jan 2017 20:54:59 +0800	[thread overview]
Message-ID: <1484744105-53140-10-git-send-email-guohanjun@huawei.com> (raw)
In-Reply-To: <1484744105-53140-1-git-send-email-guohanjun@huawei.com>

From: Hanjun Guo <hanjun.guo@linaro.org>

For named components if we want to retrieve the dev id, we know that
there are always two steps involved (second is optional):

(1) Retrieve the initial id (this may well provide the final mapping)
(2) Map the id (optional if (1) represents the map type we need), this
    is needed for use cases such as NC (named component) -> SMMU -> ITS
    mappings.

we have API iort_node_get_id() for step (1) above and iort_node_map_rid()
for step (2), so create a wrapper iort_node_map_platform_id() to
retrieve the dev id.

iort_node_map_platform_id() will handle the parent type so type handing
in iort_node_get_id() is duplicate, remove it and update current
iort_node_get_id() users to move them over to iort_node_map_platform_id().

Suggested-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Suggested-by: Tomasz Nowicki <tn@semihalf.com>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Ming Lei <ming.lei@canonical.com>
Tested-by: Wei Xu <xuwei5@hisilicon.com>
Tested-by: Sinan Kaya <okaya@codeaurora.org>
Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: Tomasz Nowicki <tn@semihalf.com>
---
 drivers/acpi/arm64/iort.c | 43 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index 069a690..dacf5e1 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -318,8 +318,7 @@ static int iort_id_map(struct acpi_iort_id_mapping *map, u8 type, u32 rid_in,
 
 static
 struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
-					u32 *id_out, u8 type_mask,
-					int index)
+					u32 *id_out, int index)
 {
 	struct acpi_iort_node *parent;
 	struct acpi_iort_id_mapping *map;
@@ -341,9 +340,6 @@ struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
 	parent = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
 			       map->output_reference);
 
-	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
-		return NULL;
-
 	if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
 		if (node->type == ACPI_IORT_NODE_NAMED_COMPONENT ||
 		    node->type == ACPI_IORT_NODE_PCI_ROOT_COMPLEX) {
@@ -406,6 +402,34 @@ static struct acpi_iort_node *iort_node_map_id(struct acpi_iort_node *node,
 	return NULL;
 }
 
+static
+struct acpi_iort_node *iort_node_map_platform_id(struct acpi_iort_node *node,
+						 u32 *id_out, u8 type_mask,
+						 int index)
+{
+	struct acpi_iort_node *parent;
+	u32 id;
+
+	/* step 1: retrieve the initial dev id */
+	parent = iort_node_get_id(node, &id, index);
+	if (!parent)
+		return NULL;
+
+	/*
+	 * optional step 2: map the initial dev id if its parent is not
+	 * the target type we want, map it again for the use cases such
+	 * as NC (named component) -> SMMU -> ITS. If the type is matched,
+	 * return the initial dev id and its parent pointer directly.
+	 */
+	if (!(IORT_TYPE_MASK(parent->type) & type_mask))
+		parent = iort_node_map_id(parent, id, id_out, type_mask);
+	else
+		if (id_out)
+			*id_out = id;
+
+	return parent;
+}
+
 static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
 {
 	struct pci_bus *pbus;
@@ -604,14 +628,15 @@ const struct iommu_ops *iort_iommu_configure(struct device *dev)
 		if (!node)
 			return NULL;
 
-		parent = iort_node_get_id(node, &streamid,
-					  IORT_IOMMU_TYPE, i++);
+		parent = iort_node_map_platform_id(node, &streamid,
+						   IORT_IOMMU_TYPE, i++);
 
 		while (parent) {
 			ops = iort_iommu_xlate(dev, parent, streamid);
 
-			parent = iort_node_get_id(node, &streamid,
-						  IORT_IOMMU_TYPE, i++);
+			parent = iort_node_map_platform_id(node, &streamid,
+							   IORT_IOMMU_TYPE,
+							   i++);
 		}
 	}
 
-- 
1.7.12.4

  parent reply	other threads:[~2017-01-18 13:06 UTC|newest]

Thread overview: 87+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-18 12:54 [PATCH v8 00/15] ACPI platform MSI support and its example mbigen Hanjun Guo
2017-01-18 12:54 ` Hanjun Guo
2017-01-18 12:54 ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 01/15] ACPI: IORT: fix the indentation in iort_scan_node() Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 02/15] ACPI: IORT: add missing comment for iort_dev_find_its_id() Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 03/15] ACPI: IORT: minor cleanup for iort_match_node_callback() Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 04/15] irqchip: gic-v3-its: keep the head file include in alphabetic order Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 05/15] irqchip: gicv3-its: platform-msi: refactor its_pmsi_prepare() Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 06/15] irqchip: gicv3-its: platform-msi: refactor its_pmsi_init() to prepare for ACPI Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 07/15] irqchip: gicv3-its: platform-msi: scan MADT to create platform msi domain Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` [PATCH v8 08/15] ACPI: IORT: rename iort_node_map_rid() to make it generic Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:54 ` Hanjun Guo [this message]
2017-01-18 12:54   ` [PATCH v8 09/15] ACPI: IORT: introduce iort_node_map_platform_id() to retrieve dev id Hanjun Guo
2017-01-18 12:54   ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 10/15] ACPI: platform-msi: retrieve dev id from IORT Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-04-17 21:44   ` Sinan Kaya
2017-04-17 21:44     ` Sinan Kaya
2017-04-17 22:01     ` Sinan Kaya
2017-04-17 22:01       ` Sinan Kaya
2017-04-18  1:27       ` Hanjun Guo
2017-04-18  1:27         ` Hanjun Guo
2017-04-18  1:27         ` Hanjun Guo
2017-04-18  1:30         ` Sinan Kaya
2017-04-18  1:30           ` Sinan Kaya
2017-04-18  1:33           ` Hanjun Guo
2017-04-18  1:33             ` Hanjun Guo
2017-04-18  1:33             ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 11/15] ACPI: platform: setup MSI domain for ACPI based platform device Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 12/15] msi: platform: make platform_msi_create_device_domain() ACPI aware Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 13/15] irqchip: mbigen: drop module owner Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 14/15] irqchip: mbigen: introduce mbigen_of_create_domain() Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55 ` [PATCH v8 15/15] irqchip: mbigen: Add ACPI support Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-01-18 12:55   ` Hanjun Guo
2017-02-03  2:27   ` Hanjun Guo
2017-02-03  2:27     ` Hanjun Guo
2017-02-03 14:50 ` [PATCH v8 00/15] ACPI platform MSI support and its example mbigen Sinan Kaya
2017-02-03 14:50   ` Sinan Kaya
2017-02-03 15:11   ` Marc Zyngier
2017-02-03 15:11     ` Marc Zyngier
2017-02-03 15:35     ` Sinan Kaya
2017-02-03 15:35       ` Sinan Kaya
2017-02-03 15:49       ` Marc Zyngier
2017-02-03 15:49         ` Marc Zyngier
2017-02-03 15:49         ` Marc Zyngier
2017-02-03 15:57         ` Sinan Kaya
2017-02-03 15:57           ` Sinan Kaya
2017-02-03 16:40           ` Lorenzo Pieralisi
2017-02-03 16:40             ` Lorenzo Pieralisi
2017-02-03 16:52             ` Sinan Kaya
2017-02-03 16:52               ` Sinan Kaya
2017-02-04  3:59   ` Hanjun Guo
2017-02-04  3:59     ` Hanjun Guo
2017-02-04  3:59     ` Hanjun Guo
2017-02-03 18:36 ` Lorenzo Pieralisi
2017-02-03 18:36   ` Lorenzo Pieralisi
2017-02-04  7:02   ` Hanjun Guo
2017-02-04  7:02     ` Hanjun Guo
2017-02-04  7:02     ` Hanjun Guo
2017-02-06 14:22     ` Lorenzo Pieralisi
2017-02-06 14:22       ` Lorenzo Pieralisi

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=1484744105-53140-10-git-send-email-guohanjun@huawei.com \
    --to=guohanjun@huawei.com \
    --cc=agustinv@codeaurora.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hanjun.guo@linaro.org \
    --cc=huxinwei@huawei.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=majun258@huawei.com \
    --cc=marc.zyngier@arm.com \
    --cc=mbrugger@suse.com \
    --cc=okaya@codeaurora.org \
    --cc=rafael@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=tn@semihalf.com \
    --cc=tom.leiming@gmail.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=xuwei5@hisilicon.com \
    --cc=yimin@huawei.com \
    /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.