[PATCH] arm: versatile: don't mark pen as __INIT

Jon Medhurst (Tixy) tixy at linaro.org
Tue Jun 18 09:26:42 EDT 2013


On Mon, 2013-06-10 at 16:07 +0100, Mark Rutland wrote:
> When booting fewer cores than are physically present on a versatile
> platform (e.g. when passing maxcpus=N on the command line), some
> secondary cores may remain in the holding pen, which is marked __INIT.
> Late in the boot process, the memory comprising the holding pen will be
> released to the kernel for more general use, and may be overwritten with
> arbitrary data, which can cause the held secondaries to start behaving
> unpredictably. This can lead to all manner of odd behaviour from the
> kernel.
> 
> Instead don't mark the section as __INIT. This means we can't reuse the
> pen memory, but we won't get secondaries corrupting the rest of the
> kernel.
> 
> Signed-off-by: Mark Rutland <mark.rutland at arm.com>
> Acked-by: Pawel Moll <pawel.moll at arm.com>
> Cc: Lorenzo Pieralisi <lorenzo.pieralisi at arm.com>
> ---

This gives section mismatch warnings when compiling with
vexpress_defconfig:

        WARNING: vmlinux.o(.text+0x14128): Section mismatch in reference from the variable pen to the function .cpuinit.text:secondary_startup()
        The function pen() references
        the function __cpuinit secondary_startup().
        This is often because pen lacks a __cpuinit 
        annotation or the annotation of secondary_startup is wrong.
        
        WARNING: vmlinux.o(.text+0x14130): Section mismatch in reference from the variable pen to the variable .cpuinit.data:pen_release
        The function pen() references
        the variable __cpuinitdata pen_release.
        This is often because pen lacks a __cpuinitdata 
        annotation or the annotation of pen_release is wrong.

wonder if this is opening up a small can of worms...?


>  arch/arm/plat-versatile/headsmp.S | 2 --
>  1 file changed, 2 deletions(-)
> 
> diff --git a/arch/arm/plat-versatile/headsmp.S b/arch/arm/plat-versatile/headsmp.S
> index b178d44..2677bc3 100644
> --- a/arch/arm/plat-versatile/headsmp.S
> +++ b/arch/arm/plat-versatile/headsmp.S
> @@ -11,8 +11,6 @@
>  #include <linux/linkage.h>
>  #include <linux/init.h>
>  
> -	__INIT
> -
>  /*
>   * Realview/Versatile Express specific entry point for secondary CPUs.
>   * This provides a "holding pen" into which all secondary cores are held

-- 
Tixy




More information about the linux-arm-kernel mailing list