[U-Boot] [PATCH] configs: ti: armv7: Fixes bug in fit_loadaddr for ramfs boot

Tom Rini trini at konsulko.com
Tue Jul 18 18:06:37 UTC 2017


On Tue, Jul 18, 2017 at 10:10:15AM -0500, Andrew F. Davis wrote:
> On 07/18/2017 07:59 AM, Tom Rini wrote:
> > On Mon, Jul 17, 2017 at 01:01:36PM -0500, Andrew F. Davis wrote:
> >> From: Madan Srinivas <madans at ti.com>
> >>
> >> The load address of ramdisk, rdaddr is 0x88080000 and fit_loadaddr
> >> is defined as 0x88000000. This leaves only 512Kbytes for the
> >> fit image. When the FIT images are larger than this, it will
> >> overwite the ramdisk and cause the boot to fail.
> >>
> >> For eg, The K2 HS fit images are a few MB and end up overwriting
> >> the ramdsk. This patch moves the fit_loadaddr to 0x87000000,
> >> leaving a 16MB window for the fit image. This memory can be
> >> reclaimed once the kernel starts running.
> >>
> >> Signed-off-by: Madan Srinivas <madans at ti.com>
> >> ---
> >>  include/configs/ti_armv7_common.h | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/include/configs/ti_armv7_common.h b/include/configs/ti_armv7_common.h
> >> index a4676d3a7f..16ea22857f 100644
> >> --- a/include/configs/ti_armv7_common.h
> >> +++ b/include/configs/ti_armv7_common.h
> >> @@ -53,7 +53,7 @@
> >>  
> >>  #define DEFAULT_FIT_TI_ARGS \
> >>  	"boot_fit=0\0" \
> >> -	"fit_loadaddr=0x88000000\0" \
> >> +	"fit_loadaddr=0x87000000\0" \
> >>  	"fit_bootfile=fitImage\0" \
> >>  	"update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}\0" \
> >>  	"loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};\0" \
> > 
> > OK, why is fit_loadaddr different from loadaddr?
> > 
> 
> Are you asking why they are different addresses? They need to be or the
> kernel will be unpacked from the FIT onto the FIT image (I think).

And here we get to one of the sad parts about FIT images.  If you
construct your FIT with:
                kernel at 1 { 
...
                        type = "kernel_noload";

Then you can do what I describe, load the FIT image to $loadaddr and
this even works for when you include a ramdisk in the image too.  Now,
if you're using type = "kernel" which I suspect you are, it then depends
on if there is overlap between where the FIT image is loaded into memory
and where you set load/entry of the kernel inside of the FIT image.

And, I assume it's intentional that you're using a FIT image for kernel
and device tree, but separate initrd file, and we wouldn't address the
issue by including the ramdisk into the FIT itself.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170718/c28db1ba/attachment.sig>


More information about the U-Boot mailing list