Removing "fdt_high=0xffffffff" from board environments
Tom Rini
trini at konsulko.com
Wed Jan 29 19:01:32 CET 2020
On Tue, Jan 28, 2020 at 10:48:29AM -0500, Tom Rini wrote:
> Hey all,
>
> Relatively recently it's been highlighted that a number of boards are
> disabling relocation of the device tree image in memory and this in turn
> leading to various difficult to resolve bugs. At heart, disabling
> device tree relocation at boot is something that should be used in rare
> circumstances (and more generally fdt_high / initrd_high set to where
> they are already residing in memory, as a known, correct and aligned
> address).
>
> I would like to ask everyone to update their board config file to use
> the bootm_size (or set CONFIG_SYS_BOOTMAPSZ) to the amount of memory
> (size, not location) available to safely contain a kernel, device tree
> and initrd for relocation. Thanks all!
To offer a additional guidance here, in
include/configs/ti_armv7_common.h I did the following a while ago:
/*
* We setup defaults based on constraints from the Linux kernel, which should
* also be safe elsewhere. We have the default load at 32MB into DDR (for
* the kernel), FDT above 128MB (the maximum location for the end of the
* kernel), and the ramdisk 512KB above that (allowing for hopefully never
* seen large trees). We say all of this must be within the first 256MB
* as that will normally be within the kernel lowmem and thus visible via
* bootm_size and we only run on platforms with 256MB or more of memory.
*/
#define DEFAULT_LINUX_BOOT_ENV \
"loadaddr=0x82000000\0" \
"kernel_addr_r=0x82000000\0" \
"fdtaddr=0x88000000\0" \
"fdt_addr_r=0x88000000\0" \
"rdaddr=0x88080000\0" \
"ramdisk_addr_r=0x88080000\0" \
"scriptaddr=0x80000000\0" \
"pxefile_addr_r=0x80100000\0" \
"bootm_size=0x10000000\0" \
"boot_fdt=try\0
Note that these platforms have a DRAM base of 0x8000_0000. The offsets
described above are based on Documentation/arm/booting.rst in the Linux
Kernel and were the best-generic-fit I could come up with given those
constraints and suggestions. I don't know of a best-practices example
for arm64 platforms right now. While I believe that cmd/booti.c makes
sure to follow the requirements of Documentation/arm64/booting.rst it
would be good to audit it again for any recent updates.
Hope this helps and thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20200129/1f03d17e/attachment.sig>
More information about the U-Boot
mailing list