All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jing Xiangfeng <jingxiangfeng@huawei.com>
To: <gregkh@linuxfoundation.org>, <catalin.marinas@arm.com>,
	<will@kernel.org>, <akpm@linux-foundation.org>,
	<nsaenzjulienne@suse.de>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>, <rppt@kernel.org>,
	<lorenzo.pieralisi@arm.com>, <guohanjun@huawei.com>,
	<sudeep.holla@arm.com>, <rjw@rjwysocki.net>, <lenb@kernel.org>,
	<song.bao.hua@hisilicon.com>, <ardb@kernel.org>,
	<anshuman.khandual@arm.com>, <bhelgaas@google.com>, <guro@fb.com>,
	<robh+dt@kernel.org>
Cc: <stable@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<frowand.list@gmail.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
	<linux-riscv@lists.infradead.org>, <jingxiangfeng@huawei.com>,
	<wangkefeng.wang@huawei.com>, Rob Herring <robh@kernel.org>
Subject: [PATCH stable v5.10 3/7] of/address: Introduce of_dma_get_max_cpu_address()
Date: Wed, 3 Mar 2021 15:33:15 +0800	[thread overview]
Message-ID: <20210303073319.2215839-4-jingxiangfeng@huawei.com> (raw)
In-Reply-To: <20210303073319.2215839-1-jingxiangfeng@huawei.com>

From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

commit 964db79d6c186cc2ecc6ae46f98eed7e0ea8cf71 upstream

Introduce of_dma_get_max_cpu_address(), which provides the highest CPU
physical address addressable by all DMA masters in the system. It's
specially useful for setting memory zones sizes at early boot time.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20201119175400.9995-4-nsaenzjulienne@suse.de
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
---
 drivers/of/address.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/of.h   |  7 +++++++
 2 files changed, 49 insertions(+)

diff --git a/drivers/of/address.c b/drivers/of/address.c
index 1c3257a2d4e3..73ddf2540f3f 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -1024,6 +1024,48 @@ int of_dma_get_range(struct device_node *np, const struct bus_dma_region **map)
 }
 #endif /* CONFIG_HAS_DMA */
 
+/**
+ * of_dma_get_max_cpu_address - Gets highest CPU address suitable for DMA
+ * @np: The node to start searching from or NULL to start from the root
+ *
+ * Gets the highest CPU physical address that is addressable by all DMA masters
+ * in the sub-tree pointed by np, or the whole tree if NULL is passed. If no
+ * DMA constrained device is found, it returns PHYS_ADDR_MAX.
+ */
+phys_addr_t __init of_dma_get_max_cpu_address(struct device_node *np)
+{
+	phys_addr_t max_cpu_addr = PHYS_ADDR_MAX;
+	struct of_range_parser parser;
+	phys_addr_t subtree_max_addr;
+	struct device_node *child;
+	struct of_range range;
+	const __be32 *ranges;
+	u64 cpu_end = 0;
+	int len;
+
+	if (!np)
+		np = of_root;
+
+	ranges = of_get_property(np, "dma-ranges", &len);
+	if (ranges && len) {
+		of_dma_range_parser_init(&parser, np);
+		for_each_of_range(&parser, &range)
+			if (range.cpu_addr + range.size > cpu_end)
+				cpu_end = range.cpu_addr + range.size - 1;
+
+		if (max_cpu_addr > cpu_end)
+			max_cpu_addr = cpu_end;
+	}
+
+	for_each_available_child_of_node(np, child) {
+		subtree_max_addr = of_dma_get_max_cpu_address(child);
+		if (max_cpu_addr > subtree_max_addr)
+			max_cpu_addr = subtree_max_addr;
+	}
+
+	return max_cpu_addr;
+}
+
 /**
  * of_dma_is_coherent - Check if device is coherent
  * @np:	device node
diff --git a/include/linux/of.h b/include/linux/of.h
index af655d264f10..0f4e81e6fb23 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -558,6 +558,8 @@ int of_map_id(struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
 	       struct device_node **target, u32 *id_out);
 
+phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
+
 #else /* CONFIG_OF */
 
 static inline void of_core_init(void)
@@ -995,6 +997,11 @@ static inline int of_map_id(struct device_node *np, u32 id,
 	return -EINVAL;
 }
 
+static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np)
+{
+	return PHYS_ADDR_MAX;
+}
+
 #define of_match_ptr(_ptr)	NULL
 #define of_match_node(_matches, _node)	NULL
 #endif /* CONFIG_OF */
-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Jing Xiangfeng <jingxiangfeng@huawei.com>
To: <gregkh@linuxfoundation.org>, <catalin.marinas@arm.com>,
	<will@kernel.org>, <akpm@linux-foundation.org>,
	<nsaenzjulienne@suse.de>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>, <rppt@kernel.org>,
	<lorenzo.pieralisi@arm.com>, <guohanjun@huawei.com>,
	<sudeep.holla@arm.com>, <rjw@rjwysocki.net>, <lenb@kernel.org>,
	<song.bao.hua@hisilicon.com>, <ardb@kernel.org>,
	<anshuman.khandual@arm.com>,  <bhelgaas@google.com>,
	<guro@fb.com>, <robh+dt@kernel.org>
Cc: <stable@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<frowand.list@gmail.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
	<linux-riscv@lists.infradead.org>, <jingxiangfeng@huawei.com>,
	<wangkefeng.wang@huawei.com>, Rob Herring <robh@kernel.org>
Subject: [PATCH stable v5.10 3/7] of/address: Introduce of_dma_get_max_cpu_address()
Date: Wed, 3 Mar 2021 15:33:15 +0800	[thread overview]
Message-ID: <20210303073319.2215839-4-jingxiangfeng@huawei.com> (raw)
In-Reply-To: <20210303073319.2215839-1-jingxiangfeng@huawei.com>

From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

commit 964db79d6c186cc2ecc6ae46f98eed7e0ea8cf71 upstream

Introduce of_dma_get_max_cpu_address(), which provides the highest CPU
physical address addressable by all DMA masters in the system. It's
specially useful for setting memory zones sizes at early boot time.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20201119175400.9995-4-nsaenzjulienne@suse.de
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
---
 drivers/of/address.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/of.h   |  7 +++++++
 2 files changed, 49 insertions(+)

diff --git a/drivers/of/address.c b/drivers/of/address.c
index 1c3257a2d4e3..73ddf2540f3f 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -1024,6 +1024,48 @@ int of_dma_get_range(struct device_node *np, const struct bus_dma_region **map)
 }
 #endif /* CONFIG_HAS_DMA */
 
+/**
+ * of_dma_get_max_cpu_address - Gets highest CPU address suitable for DMA
+ * @np: The node to start searching from or NULL to start from the root
+ *
+ * Gets the highest CPU physical address that is addressable by all DMA masters
+ * in the sub-tree pointed by np, or the whole tree if NULL is passed. If no
+ * DMA constrained device is found, it returns PHYS_ADDR_MAX.
+ */
+phys_addr_t __init of_dma_get_max_cpu_address(struct device_node *np)
+{
+	phys_addr_t max_cpu_addr = PHYS_ADDR_MAX;
+	struct of_range_parser parser;
+	phys_addr_t subtree_max_addr;
+	struct device_node *child;
+	struct of_range range;
+	const __be32 *ranges;
+	u64 cpu_end = 0;
+	int len;
+
+	if (!np)
+		np = of_root;
+
+	ranges = of_get_property(np, "dma-ranges", &len);
+	if (ranges && len) {
+		of_dma_range_parser_init(&parser, np);
+		for_each_of_range(&parser, &range)
+			if (range.cpu_addr + range.size > cpu_end)
+				cpu_end = range.cpu_addr + range.size - 1;
+
+		if (max_cpu_addr > cpu_end)
+			max_cpu_addr = cpu_end;
+	}
+
+	for_each_available_child_of_node(np, child) {
+		subtree_max_addr = of_dma_get_max_cpu_address(child);
+		if (max_cpu_addr > subtree_max_addr)
+			max_cpu_addr = subtree_max_addr;
+	}
+
+	return max_cpu_addr;
+}
+
 /**
  * of_dma_is_coherent - Check if device is coherent
  * @np:	device node
diff --git a/include/linux/of.h b/include/linux/of.h
index af655d264f10..0f4e81e6fb23 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -558,6 +558,8 @@ int of_map_id(struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
 	       struct device_node **target, u32 *id_out);
 
+phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
+
 #else /* CONFIG_OF */
 
 static inline void of_core_init(void)
@@ -995,6 +997,11 @@ static inline int of_map_id(struct device_node *np, u32 id,
 	return -EINVAL;
 }
 
+static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np)
+{
+	return PHYS_ADDR_MAX;
+}
+
 #define of_match_ptr(_ptr)	NULL
 #define of_match_node(_matches, _node)	NULL
 #endif /* CONFIG_OF */
-- 
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Jing Xiangfeng <jingxiangfeng@huawei.com>
To: <gregkh@linuxfoundation.org>, <catalin.marinas@arm.com>,
	<will@kernel.org>, <akpm@linux-foundation.org>,
	<nsaenzjulienne@suse.de>, <paul.walmsley@sifive.com>,
	<palmer@dabbelt.com>, <aou@eecs.berkeley.edu>, <rppt@kernel.org>,
	<lorenzo.pieralisi@arm.com>, <guohanjun@huawei.com>,
	<sudeep.holla@arm.com>, <rjw@rjwysocki.net>, <lenb@kernel.org>,
	<song.bao.hua@hisilicon.com>, <ardb@kernel.org>,
	<anshuman.khandual@arm.com>,  <bhelgaas@google.com>,
	<guro@fb.com>, <robh+dt@kernel.org>
Cc: <stable@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>,
	<frowand.list@gmail.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <linux-mm@kvack.org>,
	<linux-riscv@lists.infradead.org>, <jingxiangfeng@huawei.com>,
	<wangkefeng.wang@huawei.com>, Rob Herring <robh@kernel.org>
Subject: [PATCH stable v5.10 3/7] of/address: Introduce of_dma_get_max_cpu_address()
Date: Wed, 3 Mar 2021 15:33:15 +0800	[thread overview]
Message-ID: <20210303073319.2215839-4-jingxiangfeng@huawei.com> (raw)
In-Reply-To: <20210303073319.2215839-1-jingxiangfeng@huawei.com>

From: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>

commit 964db79d6c186cc2ecc6ae46f98eed7e0ea8cf71 upstream

Introduce of_dma_get_max_cpu_address(), which provides the highest CPU
physical address addressable by all DMA masters in the system. It's
specially useful for setting memory zones sizes at early boot time.

Signed-off-by: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>
Reviewed-by: Rob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20201119175400.9995-4-nsaenzjulienne@suse.de
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Jing Xiangfeng <jingxiangfeng@huawei.com>
---
 drivers/of/address.c | 42 ++++++++++++++++++++++++++++++++++++++++++
 include/linux/of.h   |  7 +++++++
 2 files changed, 49 insertions(+)

diff --git a/drivers/of/address.c b/drivers/of/address.c
index 1c3257a2d4e3..73ddf2540f3f 100644
--- a/drivers/of/address.c
+++ b/drivers/of/address.c
@@ -1024,6 +1024,48 @@ int of_dma_get_range(struct device_node *np, const struct bus_dma_region **map)
 }
 #endif /* CONFIG_HAS_DMA */
 
+/**
+ * of_dma_get_max_cpu_address - Gets highest CPU address suitable for DMA
+ * @np: The node to start searching from or NULL to start from the root
+ *
+ * Gets the highest CPU physical address that is addressable by all DMA masters
+ * in the sub-tree pointed by np, or the whole tree if NULL is passed. If no
+ * DMA constrained device is found, it returns PHYS_ADDR_MAX.
+ */
+phys_addr_t __init of_dma_get_max_cpu_address(struct device_node *np)
+{
+	phys_addr_t max_cpu_addr = PHYS_ADDR_MAX;
+	struct of_range_parser parser;
+	phys_addr_t subtree_max_addr;
+	struct device_node *child;
+	struct of_range range;
+	const __be32 *ranges;
+	u64 cpu_end = 0;
+	int len;
+
+	if (!np)
+		np = of_root;
+
+	ranges = of_get_property(np, "dma-ranges", &len);
+	if (ranges && len) {
+		of_dma_range_parser_init(&parser, np);
+		for_each_of_range(&parser, &range)
+			if (range.cpu_addr + range.size > cpu_end)
+				cpu_end = range.cpu_addr + range.size - 1;
+
+		if (max_cpu_addr > cpu_end)
+			max_cpu_addr = cpu_end;
+	}
+
+	for_each_available_child_of_node(np, child) {
+		subtree_max_addr = of_dma_get_max_cpu_address(child);
+		if (max_cpu_addr > subtree_max_addr)
+			max_cpu_addr = subtree_max_addr;
+	}
+
+	return max_cpu_addr;
+}
+
 /**
  * of_dma_is_coherent - Check if device is coherent
  * @np:	device node
diff --git a/include/linux/of.h b/include/linux/of.h
index af655d264f10..0f4e81e6fb23 100644
--- a/include/linux/of.h
+++ b/include/linux/of.h
@@ -558,6 +558,8 @@ int of_map_id(struct device_node *np, u32 id,
 	       const char *map_name, const char *map_mask_name,
 	       struct device_node **target, u32 *id_out);
 
+phys_addr_t of_dma_get_max_cpu_address(struct device_node *np);
+
 #else /* CONFIG_OF */
 
 static inline void of_core_init(void)
@@ -995,6 +997,11 @@ static inline int of_map_id(struct device_node *np, u32 id,
 	return -EINVAL;
 }
 
+static inline phys_addr_t of_dma_get_max_cpu_address(struct device_node *np)
+{
+	return PHYS_ADDR_MAX;
+}
+
 #define of_match_ptr(_ptr)	NULL
 #define of_match_node(_matches, _node)	NULL
 #endif /* CONFIG_OF */
-- 
2.25.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2021-03-03 13:06 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-03  7:33 [PATCH stable v5.10 0/7] arm64: Default to 32-bit wide ZONE_DMA Jing Xiangfeng
2021-03-03  7:33 ` Jing Xiangfeng
2021-03-03  7:33 ` Jing Xiangfeng
2021-03-03  7:33 ` [PATCH stable v5.10 1/7] arm64: mm: Move reserve_crashkernel() into mem_init() Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "arm64: mm: Move reserve_crashkernel() into mem_init()" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` [PATCH stable v5.10 2/7] arm64: mm: Move zone_dma_bits initialization into zone_sizes_init() Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "arm64: mm: Move zone_dma_bits initialization into zone_sizes_init()" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` Jing Xiangfeng [this message]
2021-03-03  7:33   ` [PATCH stable v5.10 3/7] of/address: Introduce of_dma_get_max_cpu_address() Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "of/address: Introduce of_dma_get_max_cpu_address()" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` [PATCH stable v5.10 4/7] of: unittest: Add test for of_dma_get_max_cpu_address() Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "of: unittest: Add test for of_dma_get_max_cpu_address()" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` [PATCH stable v5.10 5/7] arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "arm64: mm: Set ZONE_DMA size based on devicetree's dma-ranges" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` [PATCH stable v5.10 6/7] arm64: mm: Set ZONE_DMA size based on early IORT scan Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "arm64: mm: Set ZONE_DMA size based on early IORT scan" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-03  7:33 ` [PATCH stable v5.10 7/7] mm: Remove examples from enum zone_type comment Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-03  7:33   ` Jing Xiangfeng
2021-03-07 15:25   ` Patch "mm: Remove examples from enum zone_type comment" has been added to the 5.10-stable tree gregkh
2021-03-07 15:25     ` gregkh
2021-03-07 15:25     ` gregkh
2021-03-04 13:46 ` [PATCH stable v5.10 0/7] arm64: Default to 32-bit wide ZONE_DMA Greg KH
2021-03-04 13:46   ` Greg KH
2021-03-04 13:46   ` Greg KH
2021-03-04 14:05   ` Nicolas Saenz Julienne
2021-03-04 14:05     ` Nicolas Saenz Julienne
2021-03-04 14:05     ` Nicolas Saenz Julienne
2021-03-04 14:05     ` Nicolas Saenz Julienne
2021-03-04 14:17     ` Greg KH
2021-03-04 14:17       ` Greg KH
2021-03-04 14:17       ` Greg KH
2021-03-04 15:09       ` Nicolas Saenz Julienne
2021-03-04 15:09         ` Nicolas Saenz Julienne
2021-03-04 15:09         ` Nicolas Saenz Julienne
2021-03-04 15:09         ` Nicolas Saenz Julienne
2021-03-07 15:24         ` Greg KH
2021-03-07 15:24           ` Greg KH
2021-03-07 15:24           ` Greg KH
2021-03-08  3:20           ` Jing Xiangfeng
2021-03-08  3:20             ` Jing Xiangfeng
2021-03-08  3:20             ` Jing Xiangfeng
2021-03-08  9:58             ` Greg KH
2021-03-08  9:58               ` Greg KH
2021-03-08  9:58               ` Greg KH
2021-05-11 12:35               ` Kefeng Wang
2021-05-11 12:35                 ` Kefeng Wang
2021-05-11 12:35                 ` Kefeng Wang
2021-05-12 12:06                 ` Greg KH
2021-05-12 12:06                   ` Greg KH
2021-05-12 12:06                   ` Greg KH
2021-06-23  6:59                 ` Kefeng Wang
2021-06-23  6:59                   ` Kefeng Wang
2021-06-23  7:12                   ` Greg KH
2021-06-23  7:12                     ` Greg KH
2021-06-23  7:25                     ` Kefeng Wang
2021-06-23  7:25                       ` Kefeng Wang
2021-06-23  7:34                       ` Greg KH
2021-06-23  7:34                         ` Greg KH
2021-06-23  8:01                         ` Kefeng Wang
2021-06-23  8:01                           ` Kefeng Wang
2021-06-25 10:19                           ` Greg KH
2021-06-25 10:19                             ` Greg KH
2021-06-26  1:19                             ` Kefeng Wang
2021-06-26  1:19                               ` Kefeng 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=20210303073319.2215839-4-jingxiangfeng@huawei.com \
    --to=jingxiangfeng@huawei.com \
    --cc=akpm@linux-foundation.org \
    --cc=anshuman.khandual@arm.com \
    --cc=aou@eecs.berkeley.edu \
    --cc=ardb@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=catalin.marinas@arm.com \
    --cc=devicetree@vger.kernel.org \
    --cc=frowand.list@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=guohanjun@huawei.com \
    --cc=guro@fb.com \
    --cc=lenb@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=nsaenzjulienne@suse.de \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=rjw@rjwysocki.net \
    --cc=robh+dt@kernel.org \
    --cc=robh@kernel.org \
    --cc=rppt@kernel.org \
    --cc=song.bao.hua@hisilicon.com \
    --cc=stable@vger.kernel.org \
    --cc=sudeep.holla@arm.com \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will@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.