[PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups
From: Dave Martin <hidden>
Date: 2011-02-18 17:52:54
Also in:
linux-omap
Hi Russell, On Wed, Feb 16, 2011 at 4:35 PM, Dave Martin [off-list ref] wrote:
Hi, On Fri, Feb 11, 2011 at 04:32:47PM +0000, Russell King - ARM Linux wrote: [...]quoted
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-kernelThis 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.
Are you still intending to merge your patch here? I don't see it anywhere yet, but I would like to get rid of my hack (which is rather messy). Cheers ---Dave