Use BOOTMEM_EXCLUSIVE for crashkernel reservation
Subsystems (3)
PATCH 1/1 Use BOOTMEM_EXCLUSIVE for crashkernel reservation
This patch implements the usage of BOOTMEM_EXCLUSIVE for crashkernel reservation on other architectures. The only architecture that applies is sh.
The patch is based on current git tree plus kexec-introduce-bootmem_exclusive.patch from -mm tree.
Signed-off-by Bernhard Walle <[email protected]>
--- arch/sh/kernel/setup.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-)
arch/sh/kernel/setup.c +18 -11
@@ -140,19 +140,26 @@ static void __init reserve_crashkernel(v ret =parse_crashkernel (boot_command_line, free_mem, &crash_size, &crash_base);if (ret ==0 && crash_size) { -if (crash_base >0 ) { -printk (KERN_INFO "Reserving %ldMB of memory at %ldMB " -"for crashkernel (System RAM: %ldMB)\n" , - (unsigned long )(crash_size >>20 ), - (unsigned long )(crash_base >>20 ), - (unsigned long )(free_mem >>20 )); - crashk_res.start = crash_base; - crashk_res.end = crash_base + crash_size -1 ; -reserve_bootmem (crash_base, crash_size, -BOOTMEM_DEFAULT ); - }else +if (crash_base <=0 ) {printk (KERN_INFO "crashkernel reservation failed - " "you have to specify a base address\n" ); +return ; + } + +if (reserve_bootmem (crash_base, crash_size, +BOOTMEM_EXCLUSIVE ) <0 ) { +printk (KERN_INFO "crashkernel reservation failed - " +"memory is in use\n" ); +return ; + } + +printk (KERN_INFO "Reserving %ldMB of memory at %ldMB " +"for crashkernel (System RAM: %ldMB)\n" , + (unsigned long )(crash_size >>20 ), + (unsigned long )(crash_base >>20 ), + (unsigned long )(free_mem >>20 )); + crashk_res.start = crash_base; + crashk_res.end = crash_base + crash_size -1 ; } }#else