[U-Boot] Booting non devicetree enabled kernels using u-boot build with CONFIG_OF_LIBFDT ?

Hans de Goede hdegoede at redhat.com
Thu Nov 13 19:08:59 CET 2014


Hi all,

So as you know I've been working on getting mainline u-boot to boot the
older android derived linux-sunxi kernels, as some people need features
not yet in mainline, and I would like there to be only one u-boot for both.

I had this working a while ago, but recently it broke, this is caused by
config_distro_defaults.h setting CONFIG_OF_LIBFDT, if I undef that
after including config_distro_defaults.h things work again.

I do not know if CONFIG_OF_LIBFDT is a recent addition to config_distro_defaults.h,
or if something else broke things. But if I do not undef it, boot fails with:

sun7i# bootm start 0x48000000
## Booting kernel from Legacy Image at 48000000 ...
   Image Name:   Linux-3.4.75.sun7i+
   Image Type:   ARM Linux Kernel Image (uncompressed)
   Data Size:    3966672 Bytes = 3.8 MiB
   Load Address: 40008000
   Entry Point:  40008000
   Verifying Checksum ... OK
Could not find a valid device tree

Now this can be fixed by removing CONFIG_OF_LIBFDT when CONFIG_OLD_SUNXI_KERNEL_COMPAT
is set, but that is a somewhat big hammer, making it impossible to have one u-boot
build which can boot both old and new kernels with more or less optimal settings.

One theoretical work around is to just pass in a dummy fdt, but that seems silly.

Another option is to allow:

bootm start 0x48000000 - -

To continue with a devicetree, would a patch for that be acceptable ?

Regards,

Hams





More information about the U-Boot mailing list