[PATCH 4/6] ARM: mxc: don't allow to compile together i.MX51 and i.MX53

Russell King - ARM Linux linux at arm.linux.org.uk
Sun May 8 06:42:01 EDT 2011


On Wed, May 04, 2011 at 10:48:40AM -0500, Matt Sealey wrote:
> CONFIG_ARM_PATCH_PHYS_VIRT
> 
> These two config options, with absolutely no bootloader changes, will
> basically mask off some address (instruction pointer?) at the time of
> the check and therefore derive a perfectly good PHYS_OFFSET at runtime
> and make sure it is in use... within some limits (first 128MB, assumes
> that start of memory is at some particular alignment)?

The V:P fixup will only handle bits 31-24, or 31-16 if the
ARM_PATCH_PHYS_VIRT_16BIT option is selected (for MSM).  If the offset
doesn't wholy fit into these, then the fixup function will complain and
your kernel won't boot.  So, it'll go down to 64K alignment.

It does rely on the kernel being placed correctly in memory.  So if the
start of the kernel text is built to be 32K above PAGE_OFFSET, then the
kernel will assume that physical memory starts 32K below where the
'Image' ended up in physical memory.  If you place the kernel in physical
memory 16MB above the start, then it'll assume that physical memory starts
16MB above where it actually did.

There is one thing to watch out for though - if you did place it 16MB
above, but still tell the kernel via ATAGs that the physical memory
starts where it really does, then I'd expect things to explode as
the kernel direct mapped memory would likely extend below PAGE_OFFSET.



More information about the linux-arm-kernel mailing list