[U-Boot] [PATCH v3] rpi: passthrough of the firmware provided FDT blob

Stephen Warren swarren at wwwdotorg.org
Fri Nov 11 06:36:55 CET 2016


On 11/08/2016 10:47 AM, Cédric Schieli wrote:
> Raspberry firmware used to pass a FDT blob at a fixed address (0x100),
> but this is not true anymore. The address now depends on both the
> memory size and the blob size [1].
>
> If one wants to passthrough this FDT blob to the kernel, the most
> reliable way is to save its address from the r2/x0 register in the
> U-Boot entry point and expose it in a environment variable for
> further processing.
>
> This patch just does this:
> - save the provided address in the global variable fw_dtb_pointer
> - expose it in ${fdt_addr} if it points to a a valid FDT blob
>
> There are many different ways to use it. One can, for example, use
> the following script which will extract from the tree the command
> line built by the firmware, then hand over the blob to a previously
> loaded kernel:
>
> fdt addr ${fdt_addr}
> fdt get value bootargs /chosen bootargs
> bootz ${kernel_addr_r} - ${fdt_addr}
>
> Alternatively, users relying on sysboot/pxe can simply omit any FDT
> statement in their extlinux.conf file, U-Boot will automagically pick
> ${fdt_addr} and pass it to the kernel.
>
> [1] https://www.raspberrypi.org/forums//viewtopic.php?f=107&t=134018

This looks fine for the ARMv7 and ARMv8 Pis, but I forgot to mention 
last time that it causes a build failure for the ARMv6-based original Pis:

> board/raspberrypi/rpi/built-in.o: In function `save_boot_params':
> board/raspberrypi/rpi/lowlevel_init.S:36: undefined reference to `save_boot_params_ret'

That's because arch/arm/cpu/arm1176/start.S doesn't implement the 
save_boot_params hook; you can probably solve this quite easily by 
taking commit 0e2b5350d952 "ARM: Add save_boot_params for ARMv8" and 
porting that to the ARM1176 code first.

Assuming that fix is sent and applied first e.g. in a series with this 
patch, then this patch,
Acked-by: Stephen Warren <swarren at wwwdotorg.org>


More information about the U-Boot mailing list