All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Zhou <chenzhou10@huawei.com>
To: <mingo@redhat.com>, <tglx@linutronix.de>, <rppt@kernel.org>,
	<dyoung@redhat.com>, <bhe@redhat.com>, <catalin.marinas@arm.com>,
	<will@kernel.org>, <nsaenzjulienne@suse.de>, <corbet@lwn.net>,
	<John.P.donnelly@oracle.com>, <bhsharma@redhat.com>,
	<prabhakar.pkin@gmail.com>
Cc: <horms@verge.net.au>, <robh+dt@kernel.org>, <arnd@arndb.de>,
	<james.morse@arm.com>, <xiexiuqi@huawei.com>,
	<guohanjun@huawei.com>, <huawei.libin@huawei.com>,
	<wangkefeng.wang@huawei.com>, <chenzhou10@huawei.com>,
	<linux-doc@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<linux-kernel@vger.kernel.org>, <kexec@lists.infradead.org>,
	John Donnelly <John.p.donnelly@oracle.com>
Subject: [PATCH v14 10/11] arm64: kdump: add memory for devices by DT property linux,usable-memory-range
Date: Sat, 30 Jan 2021 15:10:24 +0800	[thread overview]
Message-ID: <20210130071025.65258-11-chenzhou10@huawei.com> (raw)
In-Reply-To: <20210130071025.65258-1-chenzhou10@huawei.com>

When reserving crashkernel in high memory, some low memory is reserved
for crash dump kernel devices and never mapped by the first kernel.
This memory range is advertised to crash dump kernel via DT property
under /chosen,
	linux,usable-memory-range = <BASE1 SIZE1 [BASE2 SIZE2]>

We reused the DT property linux,usable-memory-range and made the low
memory region as the second range "BASE2 SIZE2", which keeps compatibility
with existing user-space and older kdump kernels.

Crash dump kernel reads this property at boot time and call memblock_add()
to add the low memory region after memblock_cap_memory_range() has been
called.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
Tested-by: John Donnelly <John.p.donnelly@oracle.com>
---
 arch/arm64/mm/init.c | 43 +++++++++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index d20f5c444ebf..180a25b67f55 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -68,6 +68,15 @@ static void __init reserve_crashkernel(void)
 }
 #endif
 
+/*
+ * The main usage of linux,usable-memory-range is for crash dump kernel.
+ * Originally, the number of usable-memory regions is one. Now there may
+ * be two regions, low region and high region.
+ * To make compatibility with existing user-space and older kdump, the low
+ * region is always the last range of linux,usable-memory-range if exist.
+ */
+#define MAX_USABLE_RANGES	2
+
 #ifdef CONFIG_CRASH_DUMP
 static int __init early_init_dt_scan_elfcorehdr(unsigned long node,
 		const char *uname, int depth, void *data)
@@ -201,9 +210,9 @@ early_param("mem", early_mem);
 static int __init early_init_dt_scan_usablemem(unsigned long node,
 		const char *uname, int depth, void *data)
 {
-	struct memblock_region *usablemem = data;
-	const __be32 *reg;
-	int len;
+	struct memblock_region *usable_rgns = data;
+	const __be32 *reg, *endp;
+	int len, nr = 0;
 
 	if (depth != 1 || strcmp(uname, "chosen") != 0)
 		return 0;
@@ -212,22 +221,36 @@ static int __init early_init_dt_scan_usablemem(unsigned long node,
 	if (!reg || (len < (dt_root_addr_cells + dt_root_size_cells)))
 		return 1;
 
-	usablemem->base = dt_mem_next_cell(dt_root_addr_cells, &reg);
-	usablemem->size = dt_mem_next_cell(dt_root_size_cells, &reg);
+	endp = reg + (len / sizeof(__be32));
+	while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
+		usable_rgns[nr].base = dt_mem_next_cell(dt_root_addr_cells, &reg);
+		usable_rgns[nr].size = dt_mem_next_cell(dt_root_size_cells, &reg);
+
+		if (++nr >= MAX_USABLE_RANGES)
+			break;
+	}
 
 	return 1;
 }
 
 static void __init fdt_enforce_memory_region(void)
 {
-	struct memblock_region reg = {
-		.size = 0,
+	struct memblock_region usable_rgns[MAX_USABLE_RANGES] = {
+		{ .size = 0 },
+		{ .size = 0 }
 	};
 
-	of_scan_flat_dt(early_init_dt_scan_usablemem, &reg);
+	of_scan_flat_dt(early_init_dt_scan_usablemem, &usable_rgns);
 
-	if (reg.size)
-		memblock_cap_memory_range(reg.base, reg.size);
+	/*
+	 * The first range of usable-memory regions is for crash dump
+	 * kernel with only one region or for high region with two regions,
+	 * the second range is dedicated for low region if exist.
+	 */
+	if (usable_rgns[0].size)
+		memblock_cap_memory_range(usable_rgns[0].base, usable_rgns[0].size);
+	if (usable_rgns[1].size)
+		memblock_add(usable_rgns[1].base, usable_rgns[1].size);
 }
 
 void __init arm64_memblock_init(void)
-- 
2.20.1


WARNING: multiple messages have this Message-ID (diff)
From: Chen Zhou <chenzhou10@huawei.com>
To: <mingo@redhat.com>, <tglx@linutronix.de>, <rppt@kernel.org>,
	<dyoung@redhat.com>, <bhe@redhat.com>, <catalin.marinas@arm.com>,
	<will@kernel.org>, <nsaenzjulienne@suse.de>, <corbet@lwn.net>,
	<John.P.donnelly@oracle.com>, <bhsharma@redhat.com>,
	<prabhakar.pkin@gmail.com>
Cc: John Donnelly <John.p.donnelly@oracle.com>,
	wangkefeng.wang@huawei.com, arnd@arndb.de, xiexiuqi@huawei.com,
	chenzhou10@huawei.com, linux-doc@vger.kernel.org,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	robh+dt@kernel.org, horms@verge.net.au, james.morse@arm.com,
	huawei.libin@huawei.com, guohanjun@huawei.com,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v14 10/11] arm64: kdump: add memory for devices by DT property linux, usable-memory-range
Date: Sat, 30 Jan 2021 15:10:24 +0800	[thread overview]
Message-ID: <20210130071025.65258-11-chenzhou10@huawei.com> (raw)
In-Reply-To: <20210130071025.65258-1-chenzhou10@huawei.com>

When reserving crashkernel in high memory, some low memory is reserved
for crash dump kernel devices and never mapped by the first kernel.
This memory range is advertised to crash dump kernel via DT property
under /chosen,
	linux,usable-memory-range = <BASE1 SIZE1 [BASE2 SIZE2]>

We reused the DT property linux,usable-memory-range and made the low
memory region as the second range "BASE2 SIZE2", which keeps compatibility
with existing user-space and older kdump kernels.

Crash dump kernel reads this property at boot time and call memblock_add()
to add the low memory region after memblock_cap_memory_range() has been
called.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
Tested-by: John Donnelly <John.p.donnelly@oracle.com>
---
 arch/arm64/mm/init.c | 43 +++++++++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index d20f5c444ebf..180a25b67f55 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -68,6 +68,15 @@ static void __init reserve_crashkernel(void)
 }
 #endif
 
+/*
+ * The main usage of linux,usable-memory-range is for crash dump kernel.
+ * Originally, the number of usable-memory regions is one. Now there may
+ * be two regions, low region and high region.
+ * To make compatibility with existing user-space and older kdump, the low
+ * region is always the last range of linux,usable-memory-range if exist.
+ */
+#define MAX_USABLE_RANGES	2
+
 #ifdef CONFIG_CRASH_DUMP
 static int __init early_init_dt_scan_elfcorehdr(unsigned long node,
 		const char *uname, int depth, void *data)
@@ -201,9 +210,9 @@ early_param("mem", early_mem);
 static int __init early_init_dt_scan_usablemem(unsigned long node,
 		const char *uname, int depth, void *data)
 {
-	struct memblock_region *usablemem = data;
-	const __be32 *reg;
-	int len;
+	struct memblock_region *usable_rgns = data;
+	const __be32 *reg, *endp;
+	int len, nr = 0;
 
 	if (depth != 1 || strcmp(uname, "chosen") != 0)
 		return 0;
@@ -212,22 +221,36 @@ static int __init early_init_dt_scan_usablemem(unsigned long node,
 	if (!reg || (len < (dt_root_addr_cells + dt_root_size_cells)))
 		return 1;
 
-	usablemem->base = dt_mem_next_cell(dt_root_addr_cells, &reg);
-	usablemem->size = dt_mem_next_cell(dt_root_size_cells, &reg);
+	endp = reg + (len / sizeof(__be32));
+	while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
+		usable_rgns[nr].base = dt_mem_next_cell(dt_root_addr_cells, &reg);
+		usable_rgns[nr].size = dt_mem_next_cell(dt_root_size_cells, &reg);
+
+		if (++nr >= MAX_USABLE_RANGES)
+			break;
+	}
 
 	return 1;
 }
 
 static void __init fdt_enforce_memory_region(void)
 {
-	struct memblock_region reg = {
-		.size = 0,
+	struct memblock_region usable_rgns[MAX_USABLE_RANGES] = {
+		{ .size = 0 },
+		{ .size = 0 }
 	};
 
-	of_scan_flat_dt(early_init_dt_scan_usablemem, &reg);
+	of_scan_flat_dt(early_init_dt_scan_usablemem, &usable_rgns);
 
-	if (reg.size)
-		memblock_cap_memory_range(reg.base, reg.size);
+	/*
+	 * The first range of usable-memory regions is for crash dump
+	 * kernel with only one region or for high region with two regions,
+	 * the second range is dedicated for low region if exist.
+	 */
+	if (usable_rgns[0].size)
+		memblock_cap_memory_range(usable_rgns[0].base, usable_rgns[0].size);
+	if (usable_rgns[1].size)
+		memblock_add(usable_rgns[1].base, usable_rgns[1].size);
 }
 
 void __init arm64_memblock_init(void)
-- 
2.20.1


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

WARNING: multiple messages have this Message-ID (diff)
From: Chen Zhou <chenzhou10@huawei.com>
To: mingo@redhat.com, tglx@linutronix.de, rppt@kernel.org,
	dyoung@redhat.com, bhe@redhat.com, catalin.marinas@arm.com,
	will@kernel.org, nsaenzjulienne@suse.de, corbet@lwn.net,
	John.P.donnelly@oracle.com, bhsharma@redhat.com,
	prabhakar.pkin@gmail.com
Cc: John Donnelly <John.p.donnelly@oracle.com>,
	wangkefeng.wang@huawei.com, arnd@arndb.de, xiexiuqi@huawei.com,
	chenzhou10@huawei.com, linux-doc@vger.kernel.org,
	kexec@lists.infradead.org, linux-kernel@vger.kernel.org,
	robh+dt@kernel.org, horms@verge.net.au, james.morse@arm.com,
	huawei.libin@huawei.com, guohanjun@huawei.com,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v14 10/11] arm64: kdump: add memory for devices by DT property linux, usable-memory-range
Date: Sat, 30 Jan 2021 15:10:24 +0800	[thread overview]
Message-ID: <20210130071025.65258-11-chenzhou10@huawei.com> (raw)
In-Reply-To: <20210130071025.65258-1-chenzhou10@huawei.com>

When reserving crashkernel in high memory, some low memory is reserved
for crash dump kernel devices and never mapped by the first kernel.
This memory range is advertised to crash dump kernel via DT property
under /chosen,
	linux,usable-memory-range = <BASE1 SIZE1 [BASE2 SIZE2]>

We reused the DT property linux,usable-memory-range and made the low
memory region as the second range "BASE2 SIZE2", which keeps compatibility
with existing user-space and older kdump kernels.

Crash dump kernel reads this property at boot time and call memblock_add()
to add the low memory region after memblock_cap_memory_range() has been
called.

Signed-off-by: Chen Zhou <chenzhou10@huawei.com>
Tested-by: John Donnelly <John.p.donnelly@oracle.com>
---
 arch/arm64/mm/init.c | 43 +++++++++++++++++++++++++++++++++----------
 1 file changed, 33 insertions(+), 10 deletions(-)

diff --git a/arch/arm64/mm/init.c b/arch/arm64/mm/init.c
index d20f5c444ebf..180a25b67f55 100644
--- a/arch/arm64/mm/init.c
+++ b/arch/arm64/mm/init.c
@@ -68,6 +68,15 @@ static void __init reserve_crashkernel(void)
 }
 #endif
 
+/*
+ * The main usage of linux,usable-memory-range is for crash dump kernel.
+ * Originally, the number of usable-memory regions is one. Now there may
+ * be two regions, low region and high region.
+ * To make compatibility with existing user-space and older kdump, the low
+ * region is always the last range of linux,usable-memory-range if exist.
+ */
+#define MAX_USABLE_RANGES	2
+
 #ifdef CONFIG_CRASH_DUMP
 static int __init early_init_dt_scan_elfcorehdr(unsigned long node,
 		const char *uname, int depth, void *data)
@@ -201,9 +210,9 @@ early_param("mem", early_mem);
 static int __init early_init_dt_scan_usablemem(unsigned long node,
 		const char *uname, int depth, void *data)
 {
-	struct memblock_region *usablemem = data;
-	const __be32 *reg;
-	int len;
+	struct memblock_region *usable_rgns = data;
+	const __be32 *reg, *endp;
+	int len, nr = 0;
 
 	if (depth != 1 || strcmp(uname, "chosen") != 0)
 		return 0;
@@ -212,22 +221,36 @@ static int __init early_init_dt_scan_usablemem(unsigned long node,
 	if (!reg || (len < (dt_root_addr_cells + dt_root_size_cells)))
 		return 1;
 
-	usablemem->base = dt_mem_next_cell(dt_root_addr_cells, &reg);
-	usablemem->size = dt_mem_next_cell(dt_root_size_cells, &reg);
+	endp = reg + (len / sizeof(__be32));
+	while ((endp - reg) >= (dt_root_addr_cells + dt_root_size_cells)) {
+		usable_rgns[nr].base = dt_mem_next_cell(dt_root_addr_cells, &reg);
+		usable_rgns[nr].size = dt_mem_next_cell(dt_root_size_cells, &reg);
+
+		if (++nr >= MAX_USABLE_RANGES)
+			break;
+	}
 
 	return 1;
 }
 
 static void __init fdt_enforce_memory_region(void)
 {
-	struct memblock_region reg = {
-		.size = 0,
+	struct memblock_region usable_rgns[MAX_USABLE_RANGES] = {
+		{ .size = 0 },
+		{ .size = 0 }
 	};
 
-	of_scan_flat_dt(early_init_dt_scan_usablemem, &reg);
+	of_scan_flat_dt(early_init_dt_scan_usablemem, &usable_rgns);
 
-	if (reg.size)
-		memblock_cap_memory_range(reg.base, reg.size);
+	/*
+	 * The first range of usable-memory regions is for crash dump
+	 * kernel with only one region or for high region with two regions,
+	 * the second range is dedicated for low region if exist.
+	 */
+	if (usable_rgns[0].size)
+		memblock_cap_memory_range(usable_rgns[0].base, usable_rgns[0].size);
+	if (usable_rgns[1].size)
+		memblock_add(usable_rgns[1].base, usable_rgns[1].size);
 }
 
 void __init arm64_memblock_init(void)
-- 
2.20.1


_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec

  parent reply	other threads:[~2021-01-30  9:14 UTC|newest]

Thread overview: 126+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-30  7:10 [PATCH v14 00/11] support reserving crashkernel above 4G on arm64 kdump Chen Zhou
2021-01-30  7:10 ` Chen Zhou
2021-01-30  7:10 ` Chen Zhou
2021-01-30  7:10 ` [PATCH v14 01/11] x86: kdump: replace the hard-coded alignment with macro CRASH_ALIGN Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  3:29   ` Baoquan He
2021-02-18  3:29     ` Baoquan He
2021-02-24 14:19   ` Catalin Marinas
2021-02-24 14:19     ` Catalin Marinas
2021-02-24 14:19     ` Catalin Marinas
2021-02-25  7:25     ` Baoquan He
2021-02-25  7:25       ` Baoquan He
2021-02-25  7:25       ` Baoquan He
2021-02-26  6:45       ` chenzhou
2021-02-26  6:45         ` chenzhou
2021-02-26  6:45         ` chenzhou
2021-02-26 15:38         ` Eric W. Biederman
2021-02-26 15:38           ` Eric W. Biederman
2021-02-26 15:38           ` Eric W. Biederman
2021-03-02  7:43           ` Baoquan He
2021-03-02  7:43             ` Baoquan He
2021-03-02  7:43             ` Baoquan He
2021-03-29  2:34             ` chenzhou
2021-03-29  2:34               ` chenzhou
2021-03-29  2:34               ` chenzhou
2021-01-30  7:10 ` [PATCH v14 02/11] x86: kdump: make the lower bound of crash kernel reservation consistent Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  3:33   ` Baoquan He
2021-02-18  3:33     ` Baoquan He
2021-02-24 14:35   ` Catalin Marinas
2021-02-24 14:35     ` Catalin Marinas
2021-02-24 14:35     ` Catalin Marinas
2021-02-25  7:08     ` Baoquan He
2021-02-25  7:08       ` Baoquan He
2021-02-25  7:08       ` Baoquan He
2021-02-25 14:42       ` Catalin Marinas
2021-02-25 14:42         ` Catalin Marinas
2021-02-25 14:42         ` Catalin Marinas
2021-02-25 15:44         ` Baoquan He
2021-02-25 15:44           ` Baoquan He
2021-02-25 15:44           ` Baoquan He
2021-02-26  7:32           ` chenzhou
2021-02-26  7:32             ` chenzhou
2021-02-26  7:32             ` chenzhou
2021-01-30  7:10 ` [PATCH v14 03/11] x86: kdump: use macro CRASH_ADDR_LOW_MAX in functions reserve_crashkernel() Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  8:23   ` Baoquan He
2021-02-18  8:23     ` Baoquan He
2021-02-18  8:23     ` Baoquan He
2021-01-30  7:10 ` [PATCH v14 04/11] x86: kdump: move xen_pv_domain() check and insert_resource() to setup_arch() Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  4:14   ` Baoquan He
2021-02-18  4:14     ` Baoquan He
2021-01-30  7:10 ` [PATCH v14 05/11] x86: kdump: move reserve_crashkernel[_low]() into crash_core.c Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10 ` [PATCH v14 06/11] x86/elf: Move vmcore_elf_check_arch_cross to arch/x86/include/asm/elf.h Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  6:31   ` Baoquan He
2021-02-18  6:31     ` Baoquan He
2021-02-18  6:31     ` Baoquan He
2021-02-18  7:05     ` chenzhou
2021-02-18  7:05       ` chenzhou
2021-02-18  7:05       ` chenzhou
2021-01-30  7:10 ` [PATCH v14 07/11] arm64: kdump: introduce some macroes for crash kernel reservation Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-04 16:20   ` Nicolas Saenz Julienne
2021-02-04 16:20     ` Nicolas Saenz Julienne
2021-02-04 16:20     ` Nicolas Saenz Julienne
2021-02-04 16:27     ` Nicolas Saenz Julienne
2021-02-04 16:27       ` Nicolas Saenz Julienne
2021-02-04 16:27       ` Nicolas Saenz Julienne
2021-01-30  7:10 ` [PATCH v14 08/11] arm64: kdump: reimplement crashkernel=X Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-24 16:04   ` Catalin Marinas
2021-02-24 16:04     ` Catalin Marinas
2021-02-24 16:04     ` Catalin Marinas
2021-02-26 10:31     ` chenzhou
2021-02-26 10:31       ` chenzhou
2021-02-26 10:31       ` chenzhou
2021-02-26 10:43       ` chenzhou
2021-02-26 10:43         ` chenzhou
2021-02-26 10:43         ` chenzhou
2021-01-30  7:10 ` [PATCH v14 09/11] x86, arm64: Add ARCH_WANT_RESERVE_CRASH_KERNEL config Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-02-18  7:31   ` Baoquan He
2021-02-18  7:31     ` Baoquan He
2021-02-18  7:31     ` Baoquan He
2021-02-18  7:40     ` Baoquan He
2021-02-18  7:40       ` Baoquan He
2021-02-18  7:40       ` Baoquan He
2021-02-18  8:35   ` Baoquan He
2021-02-18  8:35     ` Baoquan He
2021-02-18  8:35     ` Baoquan He
2021-02-20  3:22     ` chenzhou
2021-02-20  3:22       ` chenzhou
2021-02-20  3:22       ` chenzhou
2021-01-30  7:10 ` Chen Zhou [this message]
2021-01-30  7:10   ` [PATCH v14 10/11] arm64: kdump: add memory for devices by DT property linux, usable-memory-range Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10 ` [PATCH v14 11/11] kdump: update Documentation about crashkernel Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30  7:10   ` Chen Zhou
2021-01-30 17:53   ` Randy Dunlap
2021-01-30 17:53     ` Randy Dunlap
2021-01-30 17:53     ` Randy Dunlap
2021-02-04  1:53     ` chenzhou
2021-02-04  1:53       ` chenzhou
2021-02-04  1:53       ` chenzhou
2021-02-18  8:40   ` Baoquan He
2021-02-18  8:40     ` Baoquan He
2021-02-18  8:40     ` Baoquan He
2021-02-20  3:25     ` chenzhou
2021-02-20  3:25       ` chenzhou
2021-02-20  3:25       ` chenzhou
2021-02-08  6:46 ` [PATCH v14 00/11] support reserving crashkernel above 4G on arm64 kdump chenzhou
2021-02-08  6:46   ` chenzhou
2021-02-08  6:46   ` chenzhou

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=20210130071025.65258-11-chenzhou10@huawei.com \
    --to=chenzhou10@huawei.com \
    --cc=John.P.donnelly@oracle.com \
    --cc=arnd@arndb.de \
    --cc=bhe@redhat.com \
    --cc=bhsharma@redhat.com \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=dyoung@redhat.com \
    --cc=guohanjun@huawei.com \
    --cc=horms@verge.net.au \
    --cc=huawei.libin@huawei.com \
    --cc=james.morse@arm.com \
    --cc=kexec@lists.infradead.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nsaenzjulienne@suse.de \
    --cc=prabhakar.pkin@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=rppt@kernel.org \
    --cc=tglx@linutronix.de \
    --cc=wangkefeng.wang@huawei.com \
    --cc=will@kernel.org \
    --cc=xiexiuqi@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.