Subject: Re: Using CONFIG_PHYSICAL_START

From: Scott Wood <[email-masked]>
Date: Wed, 16 Feb 2011 13:24:03 -0600

On Wed, 16 Feb 2011 12:00:25 -0600
Meador Inge <[email-masked]> wrote:

> Hi Kumar,
> 
> Quick question about the support for booting at a non-zero base address 
> (as committed here: 
> http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=37dd2badcfcec35f5e21a0926968d77a404f03c3). 
>   Is booting from a non-zero address as simple as changing 
> "CONFIG_PHYSICAL_START" (assuming it meets the alignment constraints, of 
> course)?

Another option is to turn on CONFIG_RELOCATABLE.  Note that you'll still
have the same alignment constraints; it doesn't generate a truly relocatable
binary (the effective addresses are fixed).  But you don't have to specify
the physical address at compile-time.  This allows you to use the same
kernel image for multiple AMP partitions.

> For example, I want to boot from a non-zero address on the P1022DS.  I 
> should just be able to change "CONFIG_PHYSICAL_START" to, say, 
> 0x08000000, and it should work, right?  Any other bits that need to be 
> done (i.e. U-Boot or device tree magic)?

You'll want the memory node adjusted for your restricted address range
(I'm assuming that this is why you want to start at non-zero, and that
you're not trying to have the kernel be located in the middle of its
partition).

There are some special u-boot variables (bootm_low/bootm_size) that govern
placement of the kernel, fdt, etc.

-Scott