The patch titled Handle kernelcore= boot parameter in common code to avoid boot problem on IA64 has been added to the -mm tree. Its filename is handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: Handle kernelcore= boot parameter in common code to avoid boot problem on IA64 From: Yasunori Goto <y-goto@xxxxxxxxxxxxxx> When "kernelcore" boot option is specified, kernel can't boot up on ia64 because of an infinite loop. In addition, the parsing code can be handled in an architecture-independent manner. This patch patches uses common code to handle the kernelcore= parameter. It is only available to architectures that support arch-independent zone-sizing (i.e. define CONFIG_ARCH_POPULATES_NODE_MAP). Other architectures will ignore the boot parameter. This effectively removes the following arch-specific patches; ia64-specify-amount-of-kernel-memory-at-boot-time.patch ppc-and-powerpc-specify-amount-of-kernel-memory-at-boot-time.patch x86_64-specify-amount-of-kernel-memory-at-boot-time.patch x86-specify-amount-of-kernel-memory-at-boot-time.patch Signed-off-by: Yasunori Goto <y-goto@xxxxxxxxxxxxxx> Signed-off-by: Mel Gorman <mel@xxxxxxxxx> Acked-by: Andy Whitcroft <apw@xxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/i386/kernel/setup.c | 1 - arch/ia64/kernel/efi.c | 2 -- arch/powerpc/kernel/prom.c | 1 - arch/ppc/mm/init.c | 2 -- arch/x86_64/kernel/e820.c | 1 - include/linux/mm.h | 1 - mm/page_alloc.c | 3 +++ 7 files changed, 3 insertions(+), 8 deletions(-) diff -puN arch/i386/kernel/setup.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 arch/i386/kernel/setup.c --- a/arch/i386/kernel/setup.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/arch/i386/kernel/setup.c @@ -195,7 +195,6 @@ static int __init parse_mem(char *arg) return 0; } early_param("mem", parse_mem); -early_param("kernelcore", cmdline_parse_kernelcore); #ifdef CONFIG_PROC_VMCORE /* elfcorehdr= specifies the location of elf core header diff -puN arch/ia64/kernel/efi.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 arch/ia64/kernel/efi.c --- a/arch/ia64/kernel/efi.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/arch/ia64/kernel/efi.c @@ -423,8 +423,6 @@ efi_init (void) mem_limit = memparse(cp + 4, &cp); } else if (memcmp(cp, "max_addr=", 9) == 0) { max_addr = GRANULEROUNDDOWN(memparse(cp + 9, &cp)); - } else if (memcmp(cp, "kernelcore=",11) == 0) { - cmdline_parse_kernelcore(cp+11); } else if (memcmp(cp, "min_addr=", 9) == 0) { min_addr = GRANULEROUNDDOWN(memparse(cp + 9, &cp)); } else { diff -puN arch/powerpc/kernel/prom.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 arch/powerpc/kernel/prom.c --- a/arch/powerpc/kernel/prom.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/arch/powerpc/kernel/prom.c @@ -432,7 +432,6 @@ static int __init early_parse_mem(char * return 0; } early_param("mem", early_parse_mem); -early_param("kernelcore", cmdline_parse_kernelcore); /* * The device tree may be allocated below our memory limit, or inside the diff -puN arch/ppc/mm/init.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 arch/ppc/mm/init.c --- a/arch/ppc/mm/init.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/arch/ppc/mm/init.c @@ -214,8 +214,6 @@ void MMU_setup(void) } } -early_param("kernelcore", cmdline_parse_kernelcore); - /* * MMU_init sets up the basic memory mappings for the kernel, * including both RAM and possibly some I/O regions, diff -puN arch/x86_64/kernel/e820.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 arch/x86_64/kernel/e820.c --- a/arch/x86_64/kernel/e820.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/arch/x86_64/kernel/e820.c @@ -618,7 +618,6 @@ static int __init parse_memopt(char *p) return 0; } early_param("mem", parse_memopt); -early_param("kernelcore", cmdline_parse_kernelcore); static int userdef __initdata; diff -puN include/linux/mm.h~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 include/linux/mm.h --- a/include/linux/mm.h~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/include/linux/mm.h @@ -988,7 +988,6 @@ extern unsigned long find_max_pfn_with_a extern void free_bootmem_with_active_regions(int nid, unsigned long max_low_pfn); extern void sparse_memory_present_with_active_regions(int nid); -extern int cmdline_parse_kernelcore(char *p); #ifndef CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID extern int early_pfn_to_nid(unsigned long pfn); #endif /* CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID */ diff -puN mm/page_alloc.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 mm/page_alloc.c --- a/mm/page_alloc.c~handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64 +++ a/mm/page_alloc.c @@ -3542,6 +3542,9 @@ int __init cmdline_parse_kernelcore(char return 0; } + +early_param("kernelcore", cmdline_parse_kernelcore); + #endif /* CONFIG_ARCH_POPULATES_NODE_MAP */ /** _ Patches currently in -mm which might be from y-goto@xxxxxxxxxxxxxx are move-free-pages-between-lists-on-steal-fix-2.patch move-free-pages-between-lists-on-steal-do-not-cross-section-boundary-when-moving-pages-between-mobility-lists.patch handle-kernelcore=-boot-parameter-in-common-code-to-avoid-boot-problem-on-ia64.patch fix-section-mismatch-of-memory-hotplug-related-code.patch add-white-list-into-modpostc-for-memory-hotplug-code-and-ia64s-machvec-section.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html