[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