[PATCH 2/3] image: Add support for starting TFA BL31 as fitImage loadables

Tom Rini trini at konsulko.com
Wed Jan 15 02:13:42 CET 2025


On Sun, Jan 12, 2025 at 11:36:58PM +0100, Marek Vasut wrote:

> Add support for starting TFA from U-Boot running in EL3 as part of
> fitImage boot, so the user can start U-Boot in the highest privilege
> level on the platform, bundle TFA, Linux, DT into a single fitImage
> and boot such a bundle as a whole.
> 
> There are two main benefits of this approach. First is the ability
> to run U-Boot in EL3, where it has unrestricted access to the entire
> system and can act as a useful debug tool, as it was always intended
> to be used. Second is the ability to easily and safely update of any
> component in the fitImage, be it TFA, Linux or DT.
> 
> The boot process is similar to regular Linux with DT fitImage boot
> process, except the TFA has to be bundled into the fitImage. For the
> bundling instructions, see below. The TFA is started as a 'loadables'
> with custom U_BOOT_FIT_LOADABLE_HANDLER and armv8_switch_to_el2_prep()
> handling implemented in board code, and performing the handoff and
> boot in case the TFA was loaded.
> 
> The loadables handler is optional and meant to set up any sort of
> handoff structures used by the TFA BL31 or perform any other setup
> that is needed by the blob. The custom armv8_switch_to_el2_prep()
> has to implement the jump to TFA BL31 with return to U-Boot just
> before booting the Linux kernel.
> 
> Example fitImage image and configuration section:
> 
> /dts-v1/;
> 
> / {
>     description = "Linux kernel with FDT blob and TFA BL31";
> 
>     images {
>         kernel-1 { ... };
>         fdt-1 { ... };
>         atf-1 {                  /* This is the TFA BL31 image */
>             description = "TFA BL31";
>             data = /incbin/("../build/plat/release/bl31.bin");
>             type = "tfa-bl31";
>             arch = "arm64";
>             os = "arm-trusted-firmware";
>             compression = "none";
>             load = <0x46400000>;
>             entry = <0x46400000>;
>         };
>     };
> 
>     configurations {
>         default = "conf-1";
>         conf-1 {
>             description = "Boot Linux";
>             kernel = "kernel-1";
>             fdt = "fdt-1";
>             loadables = "atf-1"; /* This is the TFA BL31 loadable */
>         };
>     };
> };
> 
> Signed-off-by: Marek Vasut <marek.vasut+renesas at mailbox.org>

Reviewed-by: Tom Rini <trini at konsulko.com>

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20250114/3fb933ca/attachment.sig>


More information about the U-Boot mailing list