[PATCH] ARM: Avoid discarding sections that might have SMP_ON_UP fixups
Dave Martin
dave.martin at linaro.org
Fri Feb 18 12:52:54 EST 2011
Hi Russell,
On Wed, Feb 16, 2011 at 4:35 PM, Dave Martin <dave.martin at linaro.org> wrote:
> 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.
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
More information about the linux-arm-kernel
mailing list