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

Jon Medhurst (Tixy) tixy at linaro.org
Tue Jun 18 11:28:22 EDT 2013


On Tue, 2013-06-18 at 16:13 +0100, Russell King - ARM Linux wrote:
> On Tue, Jun 18, 2013 at 02:26:42PM +0100, Jon Medhurst (Tixy) wrote:
> > 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...?
> 
> With the death of __cpuinit and __CPUINIT, this becomes a non-issue.
> Realistically, how many ARM platforms are built without CPU hotplug?
> My guess is none what so ever, because CPU hotplug is needed for PM.

Indeed, a storm in a teacup. I had even seen the  __cpuinit removal
patch a few hours earlier and didn't connect the dots. :-(

-- 
Tixy





More information about the linux-arm-kernel mailing list