[PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups
From: Dave Martin <hidden>
Date: 2011-02-16 16:35:43
Also in:
linux-omap
Hi, On Fri, Feb 11, 2011 at 04:32:47PM +0000, Russell King - ARM Linux wrote: [...]
quoted hunk ↗ jump to hunk
diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S index 45b5651..343d29f 100644 --- a/arch/arm/kernel/vmlinux.lds.S +++ b/arch/arm/kernel/vmlinux.lds.S@@ -21,6 +21,12 @@ #define ARM_CPU_KEEP(x) #endif +#if defined(CONFIG_SMP_ON_UP) && !defined(CONFIG_DEBUG_SPINLOCK) +#define ARM_EXIT_KEEP(x) x +#else +#define ARM_EXIT_KEEP(x) +#endif + OUTPUT_ARCH(arm) ENTRY(stext)@@ -43,6 +49,7 @@ SECTIONS _sinittext = .; HEAD_TEXT INIT_TEXT + ARM_EXIT_KEEP(EXIT_TEXT) _einittext = .; ARM_CPU_DISCARD(PROC_INFO) __arch_info_begin = .;@@ -71,6 +78,7 @@ SECTIONS #ifndef CONFIG_XIP_KERNEL __init_begin = _stext; INIT_DATA + ARM_EXIT_KEEP(EXIT_DATA) #endif }@@ -166,6 +174,7 @@ SECTIONS . = ALIGN(PAGE_SIZE); __init_begin = .; INIT_DATA + ARM_EXIT_KEEP(EXIT_DATA) . = ALIGN(PAGE_SIZE); __init_end = .; #endif_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel at lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
This works for me in a case known to fail without the patch. Tested-by: Dave Martin <redacted> I still don't quite understand the intricacies of how vmlinux is laid out, but the patch looks sensible. Do you need anything more from me on this? If not, I will throw away my patch and replace it with yours. Cheers ---Dave