Skip to content

Commit d4f99ea

Browse files
author
Mamatha Inamdar
committed
powerpc/fadump: pass additional parameters when fadump is active
JIRA: https://issues.redhat.com/browse/RHEL-52914 commit 3416c9d Author: Hari Bathini <hbathini@linux.ibm.com> Date: Thu May 9 17:27:55 2024 +0530 powerpc/fadump: pass additional parameters when fadump is active Append the additional parameters passed/set in the dedicated parameter area (RTAS_FADUMP_PARAM_AREA) to bootargs in fadump capture kernel. Signed-off-by: Hari Bathini <hbathini@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://msgid.link/20240509115755.519982-4-hbathini@linux.ibm.com Signed-off-by: Mamatha Inamdar <minamdar@redhat.com>
1 parent cbded96 commit d4f99ea

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

arch/powerpc/include/asm/fadump.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,14 @@ extern int is_fadump_active(void);
1919
extern int should_fadump_crash(void);
2020
extern void crash_fadump(struct pt_regs *, const char *);
2121
extern void fadump_cleanup(void);
22+
extern void fadump_append_bootargs(void);
2223

2324
#else /* CONFIG_FA_DUMP */
2425
static inline int is_fadump_active(void) { return 0; }
2526
static inline int should_fadump_crash(void) { return 0; }
2627
static inline void crash_fadump(struct pt_regs *regs, const char *str) { }
2728
static inline void fadump_cleanup(void) { }
29+
static inline void fadump_append_bootargs(void) { }
2830
#endif /* !CONFIG_FA_DUMP */
2931

3032
#if defined(CONFIG_FA_DUMP) || defined(CONFIG_PRESERVE_FA_DUMP)

arch/powerpc/kernel/fadump.c

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,41 @@ static int __init fadump_cma_init(void)
133133
static int __init fadump_cma_init(void) { return 1; }
134134
#endif /* CONFIG_CMA */
135135

136+
/*
137+
* Additional parameters meant for capture kernel are placed in a dedicated area.
138+
* If this is capture kernel boot, append these parameters to bootargs.
139+
*/
140+
void __init fadump_append_bootargs(void)
141+
{
142+
char *append_args;
143+
size_t len;
144+
145+
if (!fw_dump.dump_active || !fw_dump.param_area_supported || !fw_dump.param_area)
146+
return;
147+
148+
if (fw_dump.param_area >= fw_dump.boot_mem_top) {
149+
if (memblock_reserve(fw_dump.param_area, COMMAND_LINE_SIZE)) {
150+
pr_warn("WARNING: Can't use additional parameters area!\n");
151+
fw_dump.param_area = 0;
152+
return;
153+
}
154+
}
155+
156+
append_args = (char *)fw_dump.param_area;
157+
len = strlen(boot_command_line);
158+
159+
/*
160+
* Too late to fail even if cmdline size exceeds. Truncate additional parameters
161+
* to cmdline size and proceed anyway.
162+
*/
163+
if (len + strlen(append_args) >= COMMAND_LINE_SIZE - 1)
164+
pr_warn("WARNING: Appending parameters exceeds cmdline size. Truncating!\n");
165+
166+
pr_debug("Cmdline: %s\n", boot_command_line);
167+
snprintf(boot_command_line + len, COMMAND_LINE_SIZE - len, " %s", append_args);
168+
pr_info("Updated cmdline: %s\n", boot_command_line);
169+
}
170+
136171
/* Scan the Firmware Assisted dump configuration details. */
137172
int __init early_init_dt_scan_fw_dump(unsigned long node, const char *uname,
138173
int depth, void *data)

arch/powerpc/kernel/prom.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -786,6 +786,9 @@ void __init early_init_devtree(void *params)
786786
*/
787787
of_scan_flat_dt(early_init_dt_scan_chosen_ppc, boot_command_line);
788788

789+
/* Append additional parameters passed for fadump capture kernel */
790+
fadump_append_bootargs();
791+
789792
/* Scan memory nodes and rebuild MEMBLOCKs */
790793
early_init_dt_scan_root();
791794
early_init_dt_scan_memory_ppc();

0 commit comments

Comments
 (0)