[PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups
Dave Martin
dave.martin at linaro.org
Wed Feb 16 11:35:43 EST 2011
Hi,
On Fri, Feb 11, 2011 at 04:32:47PM +0000, Russell King - ARM Linux wrote:
[...]
> 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 <dave.martin at linaro.org>
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
More information about the linux-arm-kernel
mailing list