Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

crash_core: change the prototype of function parse_crashkernel()

Add two parameters 'low_size' and 'high' to function parse_crashkernel(),
later crashkernel=,high|low parsing will be added. Make adjustments in
all call sites of parse_crashkernel() in arch.

Link: https://lkml.kernel.org/r/20230914033142.676708-3-bhe@redhat.com
Signed-off-by: Baoquan He <bhe@redhat.com>
Reviewed-by: Zhen Lei <thunder.leizhen@huawei.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Chen Jiahao <chenjiahao16@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Baoquan He and committed by
Andrew Morton
a9e1a3d8 a6304272

+32 -17
+2 -1
arch/arm/kernel/setup.c
··· 1010 1010 1011 1011 total_mem = get_total_mem(); 1012 1012 ret = parse_crashkernel(boot_command_line, total_mem, 1013 - &crash_size, &crash_base); 1013 + &crash_size, &crash_base, 1014 + NULL, NULL); 1014 1015 /* invalid value specified or crashkernel=0 */ 1015 1016 if (ret || !crash_size) 1016 1017 return;
+1 -1
arch/arm64/mm/init.c
··· 142 142 143 143 /* crashkernel=X[@offset] */ 144 144 ret = parse_crashkernel(cmdline, memblock_phys_mem_size(), 145 - &crash_size, &crash_base); 145 + &crash_size, &crash_base, NULL, NULL); 146 146 if (ret == -ENOENT) { 147 147 ret = parse_crashkernel_high(cmdline, 0, &crash_size, &crash_base); 148 148 if (ret || !crash_size)
+1 -1
arch/ia64/kernel/setup.c
··· 277 277 int ret; 278 278 279 279 ret = parse_crashkernel(boot_command_line, total, 280 - &size, &base); 280 + &size, &base, NULL, NULL); 281 281 if (ret == 0 && size > 0) { 282 282 if (!base) { 283 283 sort_regions(rsvd_region, *n);
+3 -1
arch/loongarch/kernel/setup.c
··· 267 267 unsigned long long crash_base, crash_size; 268 268 269 269 total_mem = memblock_phys_mem_size(); 270 - ret = parse_crashkernel(boot_command_line, total_mem, &crash_size, &crash_base); 270 + ret = parse_crashkernel(boot_command_line, total_mem, 271 + &crash_size, &crash_base, 272 + NULL, NULL); 271 273 if (ret < 0 || crash_size <= 0) 272 274 return; 273 275
+2 -1
arch/mips/kernel/setup.c
··· 460 460 461 461 total_mem = memblock_phys_mem_size(); 462 462 ret = parse_crashkernel(boot_command_line, total_mem, 463 - &crash_size, &crash_base); 463 + &crash_size, &crash_base, 464 + NULL, NULL); 464 465 if (ret != 0 || crash_size <= 0) 465 466 return; 466 467
+1 -1
arch/powerpc/kernel/fadump.c
··· 313 313 * memory at a predefined offset. 314 314 */ 315 315 ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(), 316 - &size, &base); 316 + &size, &base, NULL, NULL); 317 317 if (ret == 0 && size > 0) { 318 318 unsigned long max_size; 319 319
+1 -1
arch/powerpc/kexec/core.c
··· 109 109 total_mem_sz = memory_limit ? memory_limit : memblock_phys_mem_size(); 110 110 /* use common parsing */ 111 111 ret = parse_crashkernel(boot_command_line, total_mem_sz, 112 - &crash_size, &crash_base); 112 + &crash_size, &crash_base, NULL, NULL); 113 113 if (ret == 0 && crash_size > 0) { 114 114 crashk_res.start = crash_base; 115 115 crashk_res.end = crash_base + crash_size - 1;
+1 -1
arch/powerpc/mm/nohash/kaslr_booke.c
··· 178 178 int ret; 179 179 180 180 ret = parse_crashkernel(boot_command_line, size, &crash_size, 181 - &crash_base); 181 + &crash_base, NULL, NULL); 182 182 if (ret != 0 || crash_size == 0) 183 183 return; 184 184 if (crash_base == 0)
+1 -1
arch/riscv/mm/init.c
··· 1388 1388 } 1389 1389 1390 1390 ret = parse_crashkernel(cmdline, memblock_phys_mem_size(), 1391 - &crash_size, &crash_base); 1391 + &crash_size, &crash_base, NULL, NULL); 1392 1392 if (ret == -ENOENT) { 1393 1393 /* Fallback to crashkernel=X,[high,low] */ 1394 1394 ret = parse_crashkernel_high(cmdline, 0, &crash_size, &crash_base);
+2 -2
arch/s390/kernel/setup.c
··· 625 625 phys_addr_t low, high; 626 626 int rc; 627 627 628 - rc = parse_crashkernel(boot_command_line, ident_map_size, &crash_size, 629 - &crash_base); 628 + rc = parse_crashkernel(boot_command_line, ident_map_size, 629 + &crash_size, &crash_base, NULL, NULL); 630 630 631 631 crash_base = ALIGN(crash_base, KEXEC_CRASH_MEM_ALIGN); 632 632 crash_size = ALIGN(crash_size, KEXEC_CRASH_MEM_ALIGN);
+1 -1
arch/sh/kernel/machine_kexec.c
··· 154 154 int ret; 155 155 156 156 ret = parse_crashkernel(boot_command_line, memblock_phys_mem_size(), 157 - &crash_size, &crash_base); 157 + &crash_size, &crash_base, NULL, NULL); 158 158 if (ret == 0 && crash_size > 0) { 159 159 crashk_res.start = crash_base; 160 160 crashk_res.end = crash_base + crash_size - 1;
+2 -1
arch/x86/kernel/setup.c
··· 553 553 total_mem = memblock_phys_mem_size(); 554 554 555 555 /* crashkernel=XM */ 556 - ret = parse_crashkernel(boot_command_line, total_mem, &crash_size, &crash_base); 556 + ret = parse_crashkernel(boot_command_line, total_mem, 557 + &crash_size, &crash_base, NULL, NULL); 557 558 if (ret != 0 || crash_size <= 0) { 558 559 /* crashkernel=X,high */ 559 560 ret = parse_crashkernel_high(boot_command_line, total_mem,
+2 -1
include/linux/crash_core.h
··· 80 80 void final_note(Elf_Word *buf); 81 81 82 82 int __init parse_crashkernel(char *cmdline, unsigned long long system_ram, 83 - unsigned long long *crash_size, unsigned long long *crash_base); 83 + unsigned long long *crash_size, unsigned long long *crash_base, 84 + unsigned long long *low_size, bool *high); 84 85 int parse_crashkernel_high(char *cmdline, unsigned long long system_ram, 85 86 unsigned long long *crash_size, unsigned long long *crash_base); 86 87 int parse_crashkernel_low(char *cmdline, unsigned long long system_ram,
+12 -3
kernel/crash_core.c
··· 287 287 int __init parse_crashkernel(char *cmdline, 288 288 unsigned long long system_ram, 289 289 unsigned long long *crash_size, 290 - unsigned long long *crash_base) 290 + unsigned long long *crash_base, 291 + unsigned long long *low_size, 292 + bool *high) 291 293 { 292 - return __parse_crashkernel(cmdline, system_ram, crash_size, crash_base, 293 - NULL); 294 + int ret; 295 + 296 + /* crashkernel=X[@offset] */ 297 + ret = __parse_crashkernel(cmdline, system_ram, crash_size, 298 + crash_base, NULL); 299 + if (!high) 300 + return ret; 301 + 302 + return 0; 294 303 } 295 304 296 305 int __init parse_crashkernel_high(char *cmdline,