[U-Boot] Avoiding overwriting FDT from FIT image

Chris Packham judge.packham at gmail.com
Wed Jun 22 01:30:25 CEST 2016


Hi,

We have several boards making use of FIT images for the kernel/initrd/fdt.

With v2015.04 we can successfully boot our application image. With
v2016.05 we run into a problem where the FDT is overwritten when the
ramdisk is relocated.

Here's a snippet of boot output that illustrates the problem

v2015.04
-------------
Booting image 01000000#x930-52GPX ...
WARNING: adjusting available memory to 30000000
## Loading kernel from FIT Image at 01000000 ...
## Loading ramdisk from FIT Image at 01000000 ...
## Loading fdt from FIT Image at 01000000 ...
   Booting using the fdt blob at 0x34ab4d4
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 2df6b000, end 30000000 ... OK
   Loading Device Tree to 03fe6000, end 03fff862 ... OK

v2016.04
-------------
Booting image 01000000#x930-52GPX ...
WARNING: adjusting available memory to 30000000
## Loading kernel from FIT Image at 01000000 ...
## Loading ramdisk from FIT Image at 01000000 ...
## Loading fdt from FIT Image at 01000000 ...
   Booting using the fdt blob at 0x34ab4d4
   Uncompressing Kernel Image ... OK
   Loading Ramdisk to 01f6a000, end 03fff000 ... OK
ERROR: image is not a fdt - must RESET the board to recover.
Error: -9

Reverting commit 20e072f37402 ("image: check "bootm_low" and
"bootm_size" if "initrd_high" is missing") avoids the problem as does
setting initrd_high to 0xfffffffff. But I'm wondering if a better fix
would be to tell boot_ramdisk_high() to avoid overwriting anything in
the range $loadaddr -- +$filesize. Any suggestion as to how to go
about this?


More information about the U-Boot mailing list