[U-Boot] [PATCH] ARM: tegra: Use mem size from MC rather than ODMDATA

Stephen Warren swarren at wwwdotorg.org
Thu Jul 31 21:45:32 CEST 2014


On 07/02/2014 02:12 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren at nvidia.com>
>
> In at least Tegra124, the Tegra memory controller (MC) has a register
> that controls the memory size. Read this to determine the memory size
> rather than requiring this to be redundantly encoded into the ODMDATA.
> This way, changes to the BCT (i.e. MC configuration) automatically
> updated SW's view of the memory size, without requiring manual changes
> to the ODMDATA.
>
> Future work potentially required:
> * Clip the memory size to architectural limits; U-Boot probably doesn't
>    and won't support either LPAE or Tegra's "swiss cheese" memory layout,
>    at least one of which would be required for >2GB RAM.
> * Subtract out any carveout required by firmware on future SoCs.

I noticed that this patch triggers a bug in DT relocation during 
bootm/bootz. It'd be best if the following were applied somewhere before 
this patch:

http://patchwork.ozlabs.org/patch/375408/
lib: lmb: fix overflow in __lmb_alloc_base w/ large RAM

That's because this patch changes the RAM size on Tegra124 from 2GB-1MB 
to 2GB. I believe that change is correct, it just triggers an overflow 
in U-Boot's RAM handling which needs to be fixed first.

In practice, I suspect even if this dependency is ignored, there will be 
no user-visible impact, because the default environment in Tegra U-Boot 
disables DT relocation completely. This problem would only affect 
someone who flashed/ran a U-Boot with this patch without resetting their 
environment to the default that's embedded into the new U-Boot, and 
their environment in flash was older than when we disabled DT 
relocation. Since tegra-uboot-flasher always does reset the environment, 
I expect most people would never notice this.


More information about the U-Boot mailing list