From: Bernhard Walle This patch removes the crashkernel parsing from arch/i386/kernel/machine_kexec.c and calls the generic function, introduced in the last patch, in setup_bootmem_allocator(). This is necessary because the amount of System RAM must be known in this function now because of the new syntax. Signed-off-by: Bernhard Walle Signed-off-by: Andrew Morton --- arch/i386/kernel/setup.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff -puN arch/i386/kernel/setup.c~use-extended-crashkernel-command-line-on-i386-update arch/i386/kernel/setup.c --- a/arch/i386/kernel/setup.c~use-extended-crashkernel-command-line-on-i386-update +++ a/arch/i386/kernel/setup.c @@ -381,29 +381,28 @@ extern unsigned long __init setup_memory extern void zone_sizes_init(void); #endif /* !CONFIG_NEED_MULTIPLE_NODES */ -#ifdef CONFIG_HIGHMEM -static inline unsigned long long get_total_mem(void) -{ - return (unsigned long long) - (max_low_pfn + highend_pfn - highstart_pfn) << PAGE_SHIFT; -} -#else static inline unsigned long long get_total_mem(void) { - return (unsigned long long)max_low_pfn << PAGE_SHIFT; -} + unsigned long long total; + + total = max_low_pfn - min_low_pfn; +#ifdef CONFIG_HIGHMEM + total += highend_pfn - highstart_pfn; #endif + return total << PAGE_SHIFT; +} + #ifdef CONFIG_KEXEC static void __init reserve_crashkernel(void) { - unsigned long long free_mem; - unsigned long long crash_size, crash_base; - int ret; + unsigned long long total_mem; + unsigned long long crash_size, crash_base; + int ret; - free_mem = get_total_mem(); + total_mem = get_total_mem(); - ret = parse_crashkernel(boot_command_line, free_mem, + ret = parse_crashkernel(boot_command_line, total_mem, &crash_size, &crash_base); if (ret == 0 && crash_size > 0) { if (crash_base > 0) { @@ -411,7 +410,7 @@ static void __init reserve_crashkernel(v "for crashkernel (System RAM: %ldMB)\n", (unsigned long)(crash_size >> 20), (unsigned long)(crash_base >> 20), - (unsigned long)(free_mem >> 20)); + (unsigned long)(total_mem >> 20)); crashk_res.start = crash_base; crashk_res.end = crash_base + crash_size - 1; reserve_bootmem(crash_base, crash_size); _