From: Gary Hade Subject: move kernel_physical_mapping_init to __meminit Patch-mainline: 2.6.29 (probably) References: bnc#467474 kernel_physical_mapping_init() is called during memory hotplug so it does not belong in the init section. If the kernel is built with CONFIG_DEBUG_SECTION_MISMATCH=y on the make command line, arch/x86/mm/init_64.c is compiled with the -fno-inline-functions-called-once gcc option defeating inlining of kernel_physical_mapping_init() within init_memory_mapping(). When kernel_physical_mapping_init() is not inlined it is placed in the .init.text section according to the __init in it's current declaration. A later call to kernel_physical_mapping_init() during a memory hotplug operation encounters an int3 trap because the .init.text section memory has been freed. This patch eliminates the crash caused by the int3 trap by moving the non-inlined kernel_physical_mapping_init() from .init.text to .meminit.text. Signed-off-by: Gary Hade Acked-by: Jeff Mahoney Automatically created from "patches.fixes/remove_kernel_physical_mapping_init_from_init" by xen-port-patches.py --- sle11-2009-02-16.orig/arch/x86/mm/init_64-xen.c 2009-02-17 18:05:39.000000000 +0100 +++ sle11-2009-02-16/arch/x86/mm/init_64-xen.c 2009-02-17 18:05:54.000000000 +0100 @@ -739,7 +739,7 @@ static void __init init_gbpages(void) #endif } -static unsigned long __init kernel_physical_mapping_init(unsigned long start, +static unsigned long __meminit kernel_physical_mapping_init(unsigned long start, unsigned long end, unsigned long page_size_mask) {