On Wed, Jan 07, 2026 at 02:32:41PM +0530, Sourabh Jain wrote:
On 06/01/26 13:10, Coiby Xu wrote:
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 PowerPC, we only need to let 1st kernel
build up the kernel command parameter dmcryptkeys as similar to
elfcorehdr to pass the memory address of the stored info of dm-crypt
keys to the kdump kernel.
Note to avoid a building failure [2] caused by undeclared function
crash_load_dm_crypt_keys when CONFIG_CRASH_DUMP is not enabled,
realign the function declaration with CONFIG_CRASH_DM_CRYPT.
[1] https://lore.kernel.org/all/[email protected]/
[2] https://lore.kernel.org/oe-kbuild-all/[email protected]/
Cc: Thomas Staudt <[email protected]>
Cc: Arnaud Lefebvre <[email protected]>
Cc: Baoquan he <[email protected]>
Cc: Dave Young <[email protected]>
Cc: Kairui Song <[email protected]>
Cc: Pingfan Liu <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Sourabh Jain <[email protected]>
Signed-off-by: Coiby Xu <[email protected]>
---
v2:
- fix double kfree issue [Sourabh]
- corretly kfree old modified_cmdline
- use imperative mood for commit message
- fix a compiling error caught by kernel test robot
arch/powerpc/include/asm/kexec.h | 3 ++-
arch/powerpc/kexec/elf_64.c | 27 ++++++++++++++++++++++++++-
arch/powerpc/kexec/file_load.c | 18 ++++++++++--------
include/linux/crash_core.h | 14 +++++++-------
4 files changed, 45 insertions(+), 17 deletions(-)
diff --git a/arch/powerpc/include/asm/kexec.h b/arch/powerpc/include/asm/kexec.h
index bd4a6c42a5f3..f3d098d543b4 100644
--- a/arch/powerpc/include/asm/kexec.h
+++ b/arch/powerpc/include/asm/kexec.h
@@ -80,7 +80,8 @@ struct kimage_arch {
};
char *setup_kdump_cmdline(struct kimage *image, char *cmdline,
- unsigned long cmdline_len);
+ unsigned long cmdline_len,
+ char *name, unsigned long addr);
int setup_purgatory(struct kimage *image, const void *slave_code,
const void *fdt, unsigned long kernel_load_addr,
unsigned long fdt_load_addr);
diff --git a/arch/powerpc/kexec/elf_64.c b/arch/powerpc/kexec/elf_64.c
index 5d6d616404cf..995d7e8e98e1 100644
--- a/arch/powerpc/kexec/elf_64.c
+++ b/arch/powerpc/kexec/elf_64.c
@@ -81,13 +81,38 @@ static void *elf64_load(struct kimage *image, char
*kernel_buf,
/* Setup cmdline for kdump kernel case */
modified_cmdline = setup_kdump_cmdline(image, cmdline,
- cmdline_len);
+ cmdline_len,
+ "elfcorehdr",
+ image->elf_load_addr);
if (!modified_cmdline) {
pr_err("Setting up cmdline for kdump kernel failed\n");
ret = -EINVAL;
goto out;
}
cmdline = modified_cmdline;
+ cmdline_len = strlen(cmdline) + 1;
I have a limited understanding of the new dm-crypt keys, but the way they
are loaded and the additional command-line options added for the kdump
kernel look good to me.
Feel free to add:
Acked-by: Sourabh Jain <[email protected]>
Thanks for reviewing and acknowledging the patch!
--
Best regards,
Coiby