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

Mark Rutland mark.rutland at arm.com
Mon Jun 10 11:07:24 EDT 2013

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

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

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>
 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

More information about the linux-arm-kernel mailing list