* [PATCH v4 1/2] crash_dump/dm-crypt: Don't print in arch-specific code
[not found] <20260211082401.2407853-1-coxu@redhat.com>
@ 2026-02-11 8:23 ` Coiby Xu
2026-02-11 8:24 ` [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel Coiby Xu
1 sibling, 0 replies; 6+ messages in thread
From: Coiby Xu @ 2026-02-11 8:23 UTC (permalink / raw)
To: kexec, linux-arm-kernel, linuxppc-dev, devicetree
Cc: Will Deacon, Thomas Gleixner, Ingo Molnar, Borislav Petkov,
Dave Hansen, maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT),
H. Peter Anvin, Andrew Morton, Baoquan He, Vivek Goyal,
Dave Young, open list:X86 ARCHITECTURE (32-BIT AND 64-BIT)
When the vmcore dumping target is not a LUKS-encrypted target, it's
expected that there is no dm-crypt key thus no need to return -ENOENT.
Also print more logs in crash_load_dm_crypt_keys. The benefit is
arch-specific code can be more succinct.
Suggested-by: Will Deacon <will@kernel.org>
Signed-off-by: Coiby Xu <coxu@redhat.com>
---
arch/x86/kernel/kexec-bzimage64.c | 6 +-----
kernel/crash_dump_dm_crypt.c | 7 +++++--
2 files changed, 6 insertions(+), 7 deletions(-)
diff --git a/arch/x86/kernel/kexec-bzimage64.c b/arch/x86/kernel/kexec-bzimage64.c
index 7508d0ccc740..d20cf976d01a 100644
--- a/arch/x86/kernel/kexec-bzimage64.c
+++ b/arch/x86/kernel/kexec-bzimage64.c
@@ -518,12 +518,8 @@ static void *bzImage64_load(struct kimage *image, char *kernel,
if (ret)
return ERR_PTR(ret);
ret = crash_load_dm_crypt_keys(image);
- if (ret == -ENOENT) {
- kexec_dprintk("No dm crypt key to load\n");
- } else if (ret) {
- pr_err("Failed to load dm crypt keys\n");
+ if (ret)
return ERR_PTR(ret);
- }
if (image->dm_crypt_keys_addr &&
cmdline_len + MAX_ELFCOREHDR_STR_LEN + MAX_DMCRYPTKEYS_STR_LEN >
header->cmdline_size) {
diff --git a/kernel/crash_dump_dm_crypt.c b/kernel/crash_dump_dm_crypt.c
index 401423ba477d..478dacb0625c 100644
--- a/kernel/crash_dump_dm_crypt.c
+++ b/kernel/crash_dump_dm_crypt.c
@@ -405,14 +405,16 @@ int crash_load_dm_crypt_keys(struct kimage *image)
if (key_count <= 0) {
kexec_dprintk("No dm-crypt keys\n");
- return -ENOENT;
+ return 0;
}
if (!is_dm_key_reused) {
image->dm_crypt_keys_addr = 0;
r = build_keys_header();
- if (r)
+ if (r) {
+ pr_err("Failed to build dm-crypt keys header, ret=%d\n", r);
return r;
+ }
}
kbuf.buffer = keys_header;
@@ -423,6 +425,7 @@ int crash_load_dm_crypt_keys(struct kimage *image)
kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
r = kexec_add_buffer(&kbuf);
if (r) {
+ pr_err("Failed to call kexec_add_buffer, ret=%d\n", r);
kvfree((void *)kbuf.buffer);
return r;
}
--
2.53.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
[not found] <20260211082401.2407853-1-coxu@redhat.com>
2026-02-11 8:23 ` [PATCH v4 1/2] crash_dump/dm-crypt: Don't print in arch-specific code Coiby Xu
@ 2026-02-11 8:24 ` Coiby Xu
2026-02-11 9:55 ` Christophe Leroy (CS GROUP)
2026-02-11 22:35 ` kernel test robot
1 sibling, 2 replies; 6+ messages in thread
From: Coiby Xu @ 2026-02-11 8:24 UTC (permalink / raw)
To: kexec, linux-arm-kernel, linuxppc-dev, devicetree
Cc: Arnaud Lefebvre, Baoquan he, Dave Young, Kairui Song, Pingfan Liu,
Andrew Morton, Krzysztof Kozlowski, Rob Herring, Thomas Staudt,
Sourabh Jain, Will Deacon, Catalin Marinas, Madhavan Srinivasan,
Michael Ellerman, Nicholas Piggin, Christophe Leroy (CS GROUP),
Saravana Kannan, open list
CONFIG_CRASH_DM_CRYPT has been introduced to support LUKS-encrypted
device dump target by addressing two challenges [1],
- Kdump kernel may not be able to decrypt the LUKS partition. For some
machines, a system administrator may not have a chance to enter the
password to decrypt the device in kdump initramfs after the 1st kernel
crashes
- LUKS2 by default use the memory-hard Argon2 key derivation function
which is quite memory-consuming compared to the limited memory reserved
for kdump.
To also enable this feature for ARM64 and PowerPC, we only need to add
a device tree property dmcryptkeys [2] as similar to elfcorehdr to pass
the memory address of the stored info of dm-crypt keys to the kdump
kernel. Since this property is only needed by the kdump kernel, it won't
be exposed to user space.
[1] https://lore.kernel.org/all/20250502011246.99238-1-coxu@redhat.com/
[2] https://github.com/devicetree-org/dt-schema/pull/181
Cc: Arnaud Lefebvre <arnaud.lefebvre@clever-cloud.com>
Cc: Baoquan he <bhe@redhat.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Kairui Song <ryncsn@gmail.com>
Cc: Pingfan Liu <kernelfans@gmail.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Krzysztof Kozlowski <krzk@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Thomas Staudt <tstaudt@de.ibm.com>
Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
Cc: Will Deacon <will@kernel.org>
Signed-off-by: Coiby Xu <coxu@redhat.com>
---
arch/arm64/kernel/machine_kexec_file.c | 4 ++++
arch/powerpc/kexec/elf_64.c | 4 ++++
drivers/of/fdt.c | 21 +++++++++++++++++++++
drivers/of/kexec.c | 19 +++++++++++++++++++
4 files changed, 48 insertions(+)
diff --git a/arch/arm64/kernel/machine_kexec_file.c b/arch/arm64/kernel/machine_kexec_file.c
index 410060ebd86d..b6798bb2bb82 100644
--- a/arch/arm64/kernel/machine_kexec_file.c
+++ b/arch/arm64/kernel/machine_kexec_file.c
@@ -134,6 +134,10 @@ int load_other_segments(struct kimage *image,
kexec_dprintk("Loaded elf core header at 0x%lx bufsz=0x%lx memsz=0x%lx\n",
image->elf_load_addr, kbuf.bufsz, kbuf.memsz);
+
+ ret = crash_load_dm_crypt_keys(image);
+ if (ret)
+ goto out_err;
}
#endif
diff --git a/arch/powerpc/kexec/elf_64.c b/arch/powerpc/kexec/elf_64.c
index 5d6d616404cf..ea50a072debf 100644
--- a/arch/powerpc/kexec/elf_64.c
+++ b/arch/powerpc/kexec/elf_64.c
@@ -79,6 +79,10 @@ static void *elf64_load(struct kimage *image, char *kernel_buf,
goto out;
}
+ ret = crash_load_dm_crypt_keys(image);
+ if (ret)
+ goto out;
+
/* Setup cmdline for kdump kernel case */
modified_cmdline = setup_kdump_cmdline(image, cmdline,
cmdline_len);
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index 331646d667b9..2967e4aff807 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -866,6 +866,26 @@ static void __init early_init_dt_check_for_elfcorehdr(unsigned long node)
elfcorehdr_addr, elfcorehdr_size);
}
+static void __init early_init_dt_check_for_dmcryptkeys(unsigned long node)
+{
+ const char *prop_name = "linux,dmcryptkeys";
+ const __be32 *prop;
+
+ if (!IS_ENABLED(CONFIG_CRASH_DM_CRYPT))
+ return;
+
+ pr_debug("Looking for dmcryptkeys property... ");
+
+ prop = of_get_flat_dt_prop(node, prop_name, NULL);
+ if (!prop)
+ return;
+
+ dm_crypt_keys_addr = dt_mem_next_cell(dt_root_addr_cells, &prop);
+
+ /* Property only accessible to crash dump kernel */
+ fdt_delprop(initial_boot_params, node, prop_name);
+}
+
static unsigned long chosen_node_offset = -FDT_ERR_NOTFOUND;
/*
@@ -1097,6 +1117,7 @@ int __init early_init_dt_scan_chosen(char *cmdline)
early_init_dt_check_for_initrd(node);
early_init_dt_check_for_elfcorehdr(node);
+ early_init_dt_check_for_dmcryptkeys(node);
rng_seed = of_get_flat_dt_prop(node, "rng-seed", &l);
if (rng_seed && l > 0) {
diff --git a/drivers/of/kexec.c b/drivers/of/kexec.c
index 1ee2d31816ae..4bfb1ea5744e 100644
--- a/drivers/of/kexec.c
+++ b/drivers/of/kexec.c
@@ -432,6 +432,25 @@ void *of_kexec_alloc_and_setup_fdt(const struct kimage *image,
if (ret)
goto out;
+ if (image->dm_crypt_keys_addr != 0) {
+ ret = fdt_appendprop_addrrange(fdt, 0, chosen_node,
+ "linux,dmcryptkeys",
+ image->dm_crypt_keys_addr,
+ image->dm_crypt_keys_sz);
+
+ if (ret)
+ goto out;
+
+ /*
+ * Avoid dmcryptkeys from being stomped on in kdump kernel by
+ * setting up memory reserve map.
+ */
+ ret = fdt_add_mem_rsv(fdt, image->dm_crypt_keys_addr,
+ image->dm_crypt_keys_sz);
+ if (ret)
+ goto out;
+ }
+
#ifdef CONFIG_CRASH_DUMP
/* add linux,usable-memory-range */
ret = fdt_appendprop_addrrange(fdt, 0, chosen_node,
--
2.53.0
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
2026-02-11 8:24 ` [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel Coiby Xu
@ 2026-02-11 9:55 ` Christophe Leroy (CS GROUP)
2026-02-12 2:01 ` Coiby Xu
2026-02-11 22:35 ` kernel test robot
1 sibling, 1 reply; 6+ messages in thread
From: Christophe Leroy (CS GROUP) @ 2026-02-11 9:55 UTC (permalink / raw)
To: Coiby Xu, kexec, linux-arm-kernel, linuxppc-dev, devicetree
Cc: Arnaud Lefebvre, Baoquan he, Dave Young, Kairui Song, Pingfan Liu,
Andrew Morton, Krzysztof Kozlowski, Rob Herring, Thomas Staudt,
Sourabh Jain, Will Deacon, Catalin Marinas, Madhavan Srinivasan,
Michael Ellerman, Nicholas Piggin, Saravana Kannan, open list
Le 11/02/2026 à 09:24, Coiby Xu a écrit :
> CONFIG_CRASH_DM_CRYPT has been introduced to support LUKS-encrypted
> device dump target by addressing two challenges [1],
> - Kdump kernel may not be able to decrypt the LUKS partition. For some
> machines, a system administrator may not have a chance to enter the
> password to decrypt the device in kdump initramfs after the 1st kernel
> crashes
>
> - LUKS2 by default use the memory-hard Argon2 key derivation function
> which is quite memory-consuming compared to the limited memory reserved
> for kdump.
>
> To also enable this feature for ARM64 and PowerPC, we only need to add
What do you want to say exactly with 'only' ?
> a device tree property dmcryptkeys [2] as similar to elfcorehdr to pass
> the memory address of the stored info of dm-crypt keys to the kdump
> kernel. Since this property is only needed by the kdump kernel, it won't
> be exposed to user space.
>
> [1] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fall%2F20250502011246.99238-1-coxu%40redhat.com%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0aa5f3b34d694b23b0cc08de6946f66c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639063950684962054%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=8uCc%2Bg6YNojymf8UpZhmJY19vpWXJCC9KIf3qMyQ3dI%3D&reserved=0
> [2] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdevicetree-org%2Fdt-schema%2Fpull%2F181&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0aa5f3b34d694b23b0cc08de6946f66c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639063950684987003%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=1s5NPHgF1LsXdrDXBhawduFXOqnHPlkbohQHHvolLw4%3D&reserved=0
>
> Cc: Arnaud Lefebvre <arnaud.lefebvre@clever-cloud.com>
> Cc: Baoquan he <bhe@redhat.com>
> Cc: Dave Young <dyoung@redhat.com>
> Cc: Kairui Song <ryncsn@gmail.com>
> Cc: Pingfan Liu <kernelfans@gmail.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Krzysztof Kozlowski <krzk@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Thomas Staudt <tstaudt@de.ibm.com>
> Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
> Cc: Will Deacon <will@kernel.org>
> Signed-off-by: Coiby Xu <coxu@redhat.com>
> ---
> arch/arm64/kernel/machine_kexec_file.c | 4 ++++
> arch/powerpc/kexec/elf_64.c | 4 ++++
> drivers/of/fdt.c | 21 +++++++++++++++++++++
> drivers/of/kexec.c | 19 +++++++++++++++++++
> 4 files changed, 48 insertions(+)
>
> diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
> index 331646d667b9..2967e4aff807 100644
> --- a/drivers/of/fdt.c
> +++ b/drivers/of/fdt.c
> @@ -866,6 +866,26 @@ static void __init early_init_dt_check_for_elfcorehdr(unsigned long node)
> elfcorehdr_addr, elfcorehdr_size);
> }
>
> +static void __init early_init_dt_check_for_dmcryptkeys(unsigned long node)
> +{
> + const char *prop_name = "linux,dmcryptkeys";
> + const __be32 *prop;
> +
> + if (!IS_ENABLED(CONFIG_CRASH_DM_CRYPT))
> + return;
> +
> + pr_debug("Looking for dmcryptkeys property... ");
> +
> + prop = of_get_flat_dt_prop(node, prop_name, NULL);
> + if (!prop)
> + return;
> +
> + dm_crypt_keys_addr = dt_mem_next_cell(dt_root_addr_cells, &prop);
> +
> + /* Property only accessible to crash dump kernel */
> + fdt_delprop(initial_boot_params, node, prop_name);
Shouldn't this property be deleted regardless of whether kernel is built
with CONFIG_CRASH_DM_CRYPT or without ?
> +}
> +
> static unsigned long chosen_node_offset = -FDT_ERR_NOTFOUND;
>
> /*
> @@ -1097,6 +1117,7 @@ int __init early_init_dt_scan_chosen(char *cmdline)
>
> early_init_dt_check_for_initrd(node);
> early_init_dt_check_for_elfcorehdr(node);
> + early_init_dt_check_for_dmcryptkeys(node);
>
> rng_seed = of_get_flat_dt_prop(node, "rng-seed", &l);
> if (rng_seed && l > 0) {
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
2026-02-11 8:24 ` [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel Coiby Xu
2026-02-11 9:55 ` Christophe Leroy (CS GROUP)
@ 2026-02-11 22:35 ` kernel test robot
2026-02-12 2:22 ` Coiby Xu
1 sibling, 1 reply; 6+ messages in thread
From: kernel test robot @ 2026-02-11 22:35 UTC (permalink / raw)
To: Coiby Xu, kexec, linux-arm-kernel, linuxppc-dev, devicetree
Cc: oe-kbuild-all, Arnaud Lefebvre, Baoquan he, Dave Young,
Kairui Song, Pingfan Liu, Andrew Morton,
Linux Memory Management List, Krzysztof Kozlowski, Rob Herring,
Thomas Staudt, Sourabh Jain, Will Deacon, Catalin Marinas,
Madhavan Srinivasan, Michael Ellerman, Nicholas Piggin,
Christophe Leroy (CS GROUP), Saravana Kannan, linux-kernel
Hi Coiby,
kernel test robot noticed the following build errors:
[auto build test ERROR on 2619c62b7ef2f463bcbbb34af122689c09855c23]
url: https://github.com/intel-lab-lkp/linux/commits/Coiby-Xu/crash_dump-dm-crypt-Don-t-print-in-arch-specific-code/20260211-162729
base: 2619c62b7ef2f463bcbbb34af122689c09855c23
patch link: https://lore.kernel.org/r/20260211082401.2407853-3-coxu%40redhat.com
patch subject: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
config: powerpc64-randconfig-r111-20260212 (https://download.01.org/0day-ci/archive/20260212/202602120648.RgQALnnI-lkp@intel.com/config)
compiler: powerpc64-linux-gcc (GCC) 11.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260212/202602120648.RgQALnnI-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202602120648.RgQALnnI-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/powerpc/kexec/elf_64.c: In function 'elf64_load':
>> arch/powerpc/kexec/elf_64.c:82:23: error: implicit declaration of function 'crash_load_dm_crypt_keys' [-Werror=implicit-function-declaration]
82 | ret = crash_load_dm_crypt_keys(image);
| ^~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +/crash_load_dm_crypt_keys +82 arch/powerpc/kexec/elf_64.c
27
28 static void *elf64_load(struct kimage *image, char *kernel_buf,
29 unsigned long kernel_len, char *initrd,
30 unsigned long initrd_len, char *cmdline,
31 unsigned long cmdline_len)
32 {
33 int ret;
34 unsigned long kernel_load_addr;
35 unsigned long initrd_load_addr = 0, fdt_load_addr;
36 void *fdt;
37 const void *slave_code;
38 struct elfhdr ehdr;
39 char *modified_cmdline = NULL;
40 struct crash_mem *rmem = NULL;
41 struct kexec_elf_info elf_info;
42 struct kexec_buf kbuf = { .image = image, .buf_min = 0,
43 .buf_max = ppc64_rma_size };
44 struct kexec_buf pbuf = { .image = image, .buf_min = 0,
45 .buf_max = ppc64_rma_size, .top_down = true,
46 .mem = KEXEC_BUF_MEM_UNKNOWN };
47
48 ret = kexec_build_elf_info(kernel_buf, kernel_len, &ehdr, &elf_info);
49 if (ret)
50 return ERR_PTR(ret);
51
52 if (IS_ENABLED(CONFIG_CRASH_DUMP) && image->type == KEXEC_TYPE_CRASH) {
53 /* min & max buffer values for kdump case */
54 kbuf.buf_min = pbuf.buf_min = crashk_res.start;
55 kbuf.buf_max = pbuf.buf_max =
56 ((crashk_res.end < ppc64_rma_size) ?
57 crashk_res.end : (ppc64_rma_size - 1));
58 }
59
60 ret = kexec_elf_load(image, &ehdr, &elf_info, &kbuf, &kernel_load_addr);
61 if (ret)
62 goto out;
63
64 kexec_dprintk("Loaded the kernel at 0x%lx\n", kernel_load_addr);
65
66 ret = kexec_load_purgatory(image, &pbuf);
67 if (ret) {
68 pr_err("Loading purgatory failed.\n");
69 goto out;
70 }
71
72 kexec_dprintk("Loaded purgatory at 0x%lx\n", pbuf.mem);
73
74 /* Load additional segments needed for panic kernel */
75 if (IS_ENABLED(CONFIG_CRASH_DUMP) && image->type == KEXEC_TYPE_CRASH) {
76 ret = load_crashdump_segments_ppc64(image, &kbuf);
77 if (ret) {
78 pr_err("Failed to load kdump kernel segments\n");
79 goto out;
80 }
81
> 82 ret = crash_load_dm_crypt_keys(image);
83 if (ret)
84 goto out;
85
86 /* Setup cmdline for kdump kernel case */
87 modified_cmdline = setup_kdump_cmdline(image, cmdline,
88 cmdline_len);
89 if (!modified_cmdline) {
90 pr_err("Setting up cmdline for kdump kernel failed\n");
91 ret = -EINVAL;
92 goto out;
93 }
94 cmdline = modified_cmdline;
95 }
96
97 if (initrd != NULL) {
98 kbuf.buffer = initrd;
99 kbuf.bufsz = kbuf.memsz = initrd_len;
100 kbuf.buf_align = PAGE_SIZE;
101 kbuf.top_down = false;
102 kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
103 ret = kexec_add_buffer(&kbuf);
104 if (ret)
105 goto out;
106 initrd_load_addr = kbuf.mem;
107
108 kexec_dprintk("Loaded initrd at 0x%lx\n", initrd_load_addr);
109 }
110
111 ret = get_reserved_memory_ranges(&rmem);
112 if (ret)
113 goto out;
114
115 fdt = of_kexec_alloc_and_setup_fdt(image, initrd_load_addr,
116 initrd_len, cmdline,
117 kexec_extra_fdt_size_ppc64(image, rmem));
118 if (!fdt) {
119 pr_err("Error setting up the new device tree.\n");
120 ret = -EINVAL;
121 goto out;
122 }
123
124 ret = setup_new_fdt_ppc64(image, fdt, rmem);
125 if (ret)
126 goto out_free_fdt;
127
128 if (!IS_ENABLED(CONFIG_CRASH_HOTPLUG) || image->type != KEXEC_TYPE_CRASH)
129 fdt_pack(fdt);
130
131 kbuf.buffer = fdt;
132 kbuf.bufsz = kbuf.memsz = fdt_totalsize(fdt);
133 kbuf.buf_align = PAGE_SIZE;
134 kbuf.top_down = true;
135 kbuf.mem = KEXEC_BUF_MEM_UNKNOWN;
136 ret = kexec_add_buffer(&kbuf);
137 if (ret)
138 goto out_free_fdt;
139
140 /* FDT will be freed in arch_kimage_file_post_load_cleanup */
141 image->arch.fdt = fdt;
142
143 fdt_load_addr = kbuf.mem;
144
145 kexec_dprintk("Loaded device tree at 0x%lx\n", fdt_load_addr);
146
147 slave_code = elf_info.buffer + elf_info.proghdrs[0].p_offset;
148 ret = setup_purgatory_ppc64(image, slave_code, fdt, kernel_load_addr,
149 fdt_load_addr);
150 if (ret)
151 pr_err("Error setting up the purgatory.\n");
152
153 goto out;
154
155 out_free_fdt:
156 kvfree(fdt);
157 out:
158 kfree(rmem);
159 kfree(modified_cmdline);
160 kexec_free_elf_info(&elf_info);
161
162 return ret ? ERR_PTR(ret) : NULL;
163 }
164
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
2026-02-11 9:55 ` Christophe Leroy (CS GROUP)
@ 2026-02-12 2:01 ` Coiby Xu
0 siblings, 0 replies; 6+ messages in thread
From: Coiby Xu @ 2026-02-12 2:01 UTC (permalink / raw)
To: Christophe Leroy (CS GROUP)
Cc: kexec, linux-arm-kernel, linuxppc-dev, devicetree,
Arnaud Lefebvre, Baoquan he, Dave Young, Kairui Song, Pingfan Liu,
Andrew Morton, Krzysztof Kozlowski, Rob Herring, Thomas Staudt,
Sourabh Jain, Will Deacon, Catalin Marinas, Madhavan Srinivasan,
Michael Ellerman, Nicholas Piggin, Saravana Kannan, open list
On Wed, Feb 11, 2026 at 10:55:17AM +0100, Christophe Leroy (CS GROUP) wrote:
>
>
>Le 11/02/2026 à 09:24, Coiby Xu a écrit :
>>CONFIG_CRASH_DM_CRYPT has been introduced to support LUKS-encrypted
>>device dump target by addressing two challenges [1],
>> - Kdump kernel may not be able to decrypt the LUKS partition. For some
>> machines, a system administrator may not have a chance to enter the
>> password to decrypt the device in kdump initramfs after the 1st kernel
>> crashes
>>
>> - LUKS2 by default use the memory-hard Argon2 key derivation function
>> which is quite memory-consuming compared to the limited memory reserved
>> for kdump.
>>
>>To also enable this feature for ARM64 and PowerPC, we only need to add
>
>What do you want to say exactly with 'only' ?
Hi Christophe,
Thanks for raising the question! To clarify, CONFIG_CRASH_DM_CRYPT
provides the framework to address these challenges for LUKS-encrypted
dump target. Since the heavy lifting is handled in the arch-independent
code, we only need to...
If it looks good to you, I'll rephrase it as "To also enable this
feature for ARM64 and PowerPC, the missing piece is to let the kdump
kernel know where to find the dm-crypt keys which are randomly stored in
memory reserved for kdump. I'll introduce a new device tree property
dmcryptkeys ...".
>
>>a device tree property dmcryptkeys [2] as similar to elfcorehdr to pass
>>the memory address of the stored info of dm-crypt keys to the kdump
>>kernel. Since this property is only needed by the kdump kernel, it won't
>>be exposed to user space.
>>
>>[1] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flore.kernel.org%2Fall%2F20250502011246.99238-1-coxu%40redhat.com%2F&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0aa5f3b34d694b23b0cc08de6946f66c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639063950684962054%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=8uCc%2Bg6YNojymf8UpZhmJY19vpWXJCC9KIf3qMyQ3dI%3D&reserved=0
>>[2] https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fdevicetree-org%2Fdt-schema%2Fpull%2F181&data=05%7C02%7Cchristophe.leroy%40csgroup.eu%7C0aa5f3b34d694b23b0cc08de6946f66c%7C8b87af7d86474dc78df45f69a2011bb5%7C0%7C0%7C639063950684987003%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=1s5NPHgF1LsXdrDXBhawduFXOqnHPlkbohQHHvolLw4%3D&reserved=0
>>
>>Cc: Arnaud Lefebvre <arnaud.lefebvre@clever-cloud.com>
>>Cc: Baoquan he <bhe@redhat.com>
>>Cc: Dave Young <dyoung@redhat.com>
>>Cc: Kairui Song <ryncsn@gmail.com>
>>Cc: Pingfan Liu <kernelfans@gmail.com>
>>Cc: Andrew Morton <akpm@linux-foundation.org>
>>Cc: Krzysztof Kozlowski <krzk@kernel.org>
>>Cc: Rob Herring <robh@kernel.org>
>>Cc: Thomas Staudt <tstaudt@de.ibm.com>
>>Cc: Sourabh Jain <sourabhjain@linux.ibm.com>
>>Cc: Will Deacon <will@kernel.org>
>>Signed-off-by: Coiby Xu <coxu@redhat.com>
>>---
>> arch/arm64/kernel/machine_kexec_file.c | 4 ++++
>> arch/powerpc/kexec/elf_64.c | 4 ++++
>> drivers/of/fdt.c | 21 +++++++++++++++++++++
>> drivers/of/kexec.c | 19 +++++++++++++++++++
>> 4 files changed, 48 insertions(+)
>>
>>diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
>>index 331646d667b9..2967e4aff807 100644
>>--- a/drivers/of/fdt.c
>>+++ b/drivers/of/fdt.c
>>@@ -866,6 +866,26 @@ static void __init early_init_dt_check_for_elfcorehdr(unsigned long node)
>> elfcorehdr_addr, elfcorehdr_size);
>> }
>>+static void __init early_init_dt_check_for_dmcryptkeys(unsigned long node)
>>+{
>>+ const char *prop_name = "linux,dmcryptkeys";
>>+ const __be32 *prop;
>>+
>>+ if (!IS_ENABLED(CONFIG_CRASH_DM_CRYPT))
>>+ return;
>>+
>>+ pr_debug("Looking for dmcryptkeys property... ");
>>+
>>+ prop = of_get_flat_dt_prop(node, prop_name, NULL);
>>+ if (!prop)
>>+ return;
>>+
>>+ dm_crypt_keys_addr = dt_mem_next_cell(dt_root_addr_cells, &prop);
>>+
>>+ /* Property only accessible to crash dump kernel */
>>+ fdt_delprop(initial_boot_params, node, prop_name);
>
>Shouldn't this property be deleted regardless of whether kernel is
>built with CONFIG_CRASH_DM_CRYPT or without ?
This property will be created only if 1) CONFIG_CRASH_DM_CRYPT is
enabled and 2) the dump target is LUKS-encrypted. So there is no need to
delete it if it doesn't exist at all.
>
>>+}
>>+
>> static unsigned long chosen_node_offset = -FDT_ERR_NOTFOUND;
>> /*
>>@@ -1097,6 +1117,7 @@ int __init early_init_dt_scan_chosen(char *cmdline)
>> early_init_dt_check_for_initrd(node);
>> early_init_dt_check_for_elfcorehdr(node);
>>+ early_init_dt_check_for_dmcryptkeys(node);
>> rng_seed = of_get_flat_dt_prop(node, "rng-seed", &l);
>> if (rng_seed && l > 0) {
>
--
Best regards,
Coiby
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
2026-02-11 22:35 ` kernel test robot
@ 2026-02-12 2:22 ` Coiby Xu
0 siblings, 0 replies; 6+ messages in thread
From: Coiby Xu @ 2026-02-12 2:22 UTC (permalink / raw)
To: kernel test robot
Cc: kexec, linux-arm-kernel, linuxppc-dev, devicetree, oe-kbuild-all,
Arnaud Lefebvre, Baoquan he, Dave Young, Kairui Song, Pingfan Liu,
Andrew Morton, Linux Memory Management List, Krzysztof Kozlowski,
Rob Herring, Thomas Staudt, Sourabh Jain, Will Deacon,
Catalin Marinas, Madhavan Srinivasan, Michael Ellerman,
Nicholas Piggin, Christophe Leroy (CS GROUP), Saravana Kannan,
linux-kernel
On Thu, Feb 12, 2026 at 06:35:52AM +0800, kernel test robot wrote:
>Hi Coiby,
>
>kernel test robot noticed the following build errors:
>
>[auto build test ERROR on 2619c62b7ef2f463bcbbb34af122689c09855c23]
>
>url: https://github.com/intel-lab-lkp/linux/commits/Coiby-Xu/crash_dump-dm-crypt-Don-t-print-in-arch-specific-code/20260211-162729
>base: 2619c62b7ef2f463bcbbb34af122689c09855c23
>patch link: https://lore.kernel.org/r/20260211082401.2407853-3-coxu%40redhat.com
>patch subject: [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel
>config: powerpc64-randconfig-r111-20260212 (https://download.01.org/0day-ci/archive/20260212/202602120648.RgQALnnI-lkp@intel.com/config)
>compiler: powerpc64-linux-gcc (GCC) 11.5.0
>reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260212/202602120648.RgQALnnI-lkp@intel.com/reproduce)
>
>If you fix the issue in a separate patch/commit (i.e. not just a new version of
>the same patch/commit), kindly add following tags
>| Reported-by: kernel test robot <lkp@intel.com>
>| Closes: https://lore.kernel.org/oe-kbuild-all/202602120648.RgQALnnI-lkp@intel.com/
>
>All errors (new ones prefixed by >>):
>
> arch/powerpc/kexec/elf_64.c: In function 'elf64_load':
>>> arch/powerpc/kexec/elf_64.c:82:23: error: implicit declaration of function 'crash_load_dm_crypt_keys' [-Werror=implicit-function-declaration]
> 82 | ret = crash_load_dm_crypt_keys(image);
> | ^~~~~~~~~~~~~~~~~~~~~~~~
> cc1: some warnings being treated as errors
Thanks for reporting this issue. I'll fix this issue in new patch set.
--
Best regards,
Coiby
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-02-12 2:25 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260211082401.2407853-1-coxu@redhat.com>
2026-02-11 8:23 ` [PATCH v4 1/2] crash_dump/dm-crypt: Don't print in arch-specific code Coiby Xu
2026-02-11 8:24 ` [PATCH v4 2/2] arm64,ppc64le/kdump: pass dm-crypt keys to kdump kernel Coiby Xu
2026-02-11 9:55 ` Christophe Leroy (CS GROUP)
2026-02-12 2:01 ` Coiby Xu
2026-02-11 22:35 ` kernel test robot
2026-02-12 2:22 ` Coiby Xu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox