[PATCH 20/23] ARM: i.MX8M: Add support to extract OP-TEE provided informations

Sascha Hauer s.hauer at pengutronix.de
Mon Nov 17 01:15:50 PST 2025


On Mon, Nov 10, 2025 at 09:35:00PM +0100, Marco Felsch wrote:
> Extract the OP-TEE overlay fragements information into a dedicated
> overlay buffer and add the handoff data on success. The handoff data is
> used by next commit.
> 
> Signed-off-by: Marco Felsch <m.felsch at pengutronix.de>
> ---
>  arch/arm/mach-imx/esdctl.c | 40 ++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 40 insertions(+)
> 
> diff --git a/arch/arm/mach-imx/esdctl.c b/arch/arm/mach-imx/esdctl.c
> index 964d438e3f3433332e351d9a70f91857ee33e0b4..b9393fba4ab0f14992d2fec32b0e1b7f1d4bbdfd 100644
> --- a/arch/arm/mach-imx/esdctl.c
> +++ b/arch/arm/mach-imx/esdctl.c
> @@ -1015,10 +1015,50 @@ resource_size_t imx8m_barebox_earlymem_size(unsigned buswidth)
>  	return min_t(resource_size_t, SZ_4G - MX8M_DDR_CSD1_BASE_ADDR, size);
>  }
>  
> +static void imx8m_extract_optee_fdto(void)
> +{
> +	unsigned int early_fdt_sz, fdto_size;
> +	void *early_fdt, *fdto_dst;
> +
> +	imx_scratch_get_fdt(&early_fdt, &early_fdt_sz);
> +	/* SCRATCH_FDT_SIZE == 0, e.g. if OP-TEE w/o CFG_DT support is used */
> +	if (early_fdt_sz == 0)
> +		return;
> +
> +	imx_scratch_get_optee_fdto(&fdto_dst, &fdto_size);
> +	/* SCRATCH_FDTO_SIZE == 0 if feature (back-channel) is not required */
> +	if (fdto_size == 0) {
> +		pr_debug("OP-TEE dest DTBO size == 0, skip extracting\n");
> +		return;
> +	}
> +
> +	/*
> +	 * OP-TEE DT handling is really cumbersome. In case an external DT was
> +	 * supplied, OP-TEE re-use this DT and appends overlays.
> +	 *
> +	 * Extract the overlays into a single overlay file to make it easier
> +	 * to apply these onto the barebox and kernel DT.
> +	 *
> +	 * It will become easier once barebox supports the transfer-list
> +	 * protocol and the protocol itself has overlay-entry support.
> +	 */

The problem doesn't seem to be i.MX8M specific, so we'll end up
duplicating this for other SoCs. Couldn't you do optee_extract_fdto() in
optee_register_overlay() instead?

Also we are in PBL here. The device tree is already in the i.MX scratch
space which is available in barebox proper as well, so you could move
the code there.

> +	if (optee_extract_fdto(early_fdt, fdto_dst, fdto_size)) {
> +		pr_warn("Failed to extract OP-TEE FDTO, continue without FDTO\n");
> +		/*
> +		 * Don't BUG() because the system may have compile-time config
> +		 * support
> +		 */
> +		return;
> +	}
> +
> +	handoff_data_add(HANDOFF_DATA_BL32_DT_OVL, fdto_dst, fdto_size);

The overlay isn't used in barebox itself, but only for the Kernel.

You Could just pick up the overlay from the i.MX scratch space in
barebox proper and pass it to optee_register_overlay().

Sascha


-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list