Placement of FDT in memory

Yuri Honegger yuri.honegger at icloud.com
Thu Dec 18 23:04:59 CET 2025


Hello,
Recently I've been playing around with the imx23-olinuxino 
(mx23_olinuxino_defconfig) and booting NetBSD using u-boot. During that, I've 
noticed that NetBSD panics because u-boot places the device tree in the BSS
section of NetBSD. NetBSD clears the BSS section and then complains 
that the device tree is corrupt.

Reading the logs, it appears that FDT and kernel get loaded at non-overlapping
ranges, but then u-boot relocates the device tree right after the kernel into
the BSS section.

## Booting kernel from Legacy Image at 42000000 ...
Image Name: NetBSD/earmv5 11.99.4
Image Type: ARM Linux Kernel Image (no loading done) (uncompressed)
Data Size: 11950164 Bytes = 11.4 MiB
Load Address: 00000000
Entry Point: 00000000
Verifying Checksum ... OK
## Flattened Device Tree blob at 41000000
Booting using the fdt blob at 0x41000000
Working FDT set to 41000000
XIP Kernel Image (no loading done) to 42000040
Loading Device Tree to 42b93000, end 42b99a0a ... OK
Working FDT set to 42b93000
Starting kernel ...

The bootm command seems to insist on having to relocate the device tree.

Is this something the OS is expected to deal with?

In the meantime, I've managed to work around this by running
env set fdt_high 0x41000000;
before bootm. Is there a better solution than this to force the placement
of the device tree?

Thank you,
Yuri


More information about the U-Boot mailing list