Message ID | 1348179604-26428-1-git-send-email-swarren@wwwdotorg.org |
---|---|
State | Superseded |
Delegated to: | Tom Warren |
Headers | show |
Hi Stephen, On Thu, Sep 20, 2012 at 3:20 PM, Stephen Warren <swarren@wwwdotorg.org> wrote: > From: Stephen Warren <swarren@nvidia.com> > > Currently, Tegra's default environment uses non-standard variables to define > where boot scripts should load the kernel, FDT, and initrd. This change both > changes the variable names to match those described in U-Boot's README, and > shuffles their values around a little so that the values make a little more > sense; see comments in the patch for rationale behind the values chosen. > > Note that this patch does remove the old non-standard variable "fdt_load" from > the default environment, so this patch requires people to change their boot > scripts. > > Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org> > --- > include/configs/tegra-common-post.h | 31 ++++++++++++++++++++++++++++--- > 1 files changed, 28 insertions(+), 3 deletions(-) > > diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h > index 1e7aea9..048ecbb 100644 > --- a/include/configs/tegra-common-post.h > +++ b/include/configs/tegra-common-post.h > @@ -95,8 +95,6 @@ > #endif > > #define BOOTCMDS_COMMON \ > - "scriptaddr=0x400000\0" \ > - \ > "rootpart=1\0" \ > \ > "script_boot=" \ > @@ -140,9 +138,36 @@ > > #endif > > +/* > + * Memory layout for where various images get loaded by boot scripts: > + * > + * scriptaddr can be pretty much anywhere that doesn't conflict with something > + * else. Put it above BOOTMAPSZ to eliminate conflicts. > + * > + * kernel_addr_r must be within the first 128M of RAM in order for the > + * kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will > + * decompress itself to 0x8000 after the start of RAM, kernel_addr_r Does this work for T30? I suppose that's for another day anyway. > + * should not overlap that area, or the kernel will have to copy itself > + * somewhere else before decompression. Similarly, the address of any other > + * data passed to the kernel shouldn't overlap the start of RAM. Pushing > + * this up to 16M allows for a sizable kernel to be decompressed below the > + * compressed load address. > + * > + * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for > + * the compressed kernel to be up to 16M too. > + * > + * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows > + * for the FDT/DTB to be up to 1M, which is hopefully plenty. > + */ > +#define MEM_LAYOUT_ENV_SETTINGS \ > + "scriptaddr=0x10000000\0" \ > + "kernel_addr_r=0x01000000\0" \ > + "fdt_addr_r=0x02000000\0" \ > + "ramdisk_addr_r=0x02100000\0" \ I'm not sure you need the 0x since they should be hex anyway. But it does no harm and I'm not sure if there is a convention for it. > + > #define CONFIG_EXTRA_ENV_SETTINGS \ > TEGRA_DEVICE_SETTINGS \ > - "fdt_load=0x01000000\0" \ > + MEM_LAYOUT_ENV_SETTINGS \ > BOOTCMDS_COMMON > > /* overrides for SPL build here */ > -- > 1.7.0.4 > Regards, Simon
diff --git a/include/configs/tegra-common-post.h b/include/configs/tegra-common-post.h index 1e7aea9..048ecbb 100644 --- a/include/configs/tegra-common-post.h +++ b/include/configs/tegra-common-post.h @@ -95,8 +95,6 @@ #endif #define BOOTCMDS_COMMON \ - "scriptaddr=0x400000\0" \ - \ "rootpart=1\0" \ \ "script_boot=" \ @@ -140,9 +138,36 @@ #endif +/* + * Memory layout for where various images get loaded by boot scripts: + * + * scriptaddr can be pretty much anywhere that doesn't conflict with something + * else. Put it above BOOTMAPSZ to eliminate conflicts. + * + * kernel_addr_r must be within the first 128M of RAM in order for the + * kernel's CONFIG_AUTO_ZRELADDR option to work. Since the kernel will + * decompress itself to 0x8000 after the start of RAM, kernel_addr_r + * should not overlap that area, or the kernel will have to copy itself + * somewhere else before decompression. Similarly, the address of any other + * data passed to the kernel shouldn't overlap the start of RAM. Pushing + * this up to 16M allows for a sizable kernel to be decompressed below the + * compressed load address. + * + * fdt_addr_r simply shouldn't overlap anything else. Choosing 32M allows for + * the compressed kernel to be up to 16M too. + * + * ramdisk_addr_r simply shouldn't overlap anything else. Choosing 33M allows + * for the FDT/DTB to be up to 1M, which is hopefully plenty. + */ +#define MEM_LAYOUT_ENV_SETTINGS \ + "scriptaddr=0x10000000\0" \ + "kernel_addr_r=0x01000000\0" \ + "fdt_addr_r=0x02000000\0" \ + "ramdisk_addr_r=0x02100000\0" \ + #define CONFIG_EXTRA_ENV_SETTINGS \ TEGRA_DEVICE_SETTINGS \ - "fdt_load=0x01000000\0" \ + MEM_LAYOUT_ENV_SETTINGS \ BOOTCMDS_COMMON /* overrides for SPL build here */