[PATCH] arm64: dts: imx8m: Reinstate TEE ifdeffery

Yannic Moog Y.Moog at phytec.de
Thu Jul 2 09:04:46 CEST 2026


Hi Marek,

On Tue, 2026-06-30 at 18:08 +0200, Marek Vasut wrote:
> Since b57ed147939c ("dts: imx8m{m,n,p,q}: Make optee packaging optional")
> the TEE node is always present in U-Boot proper fitImage, even if the
> CONFIG_OPTEE is disabled because the u-boot.itb should not contain any
> tee.bin. This is wasteful, and produces the following warning which is
> also confusing to users:
> 
> "
> Image 'image' is missing optional external blobs but is still functional: tee-os
> 
> /binman/section/fit/images/tee/tee-os (tee.bin):
>    See the documentation for your board. You may need to build Open Portable
>    Trusted Execution Environment (OP-TEE) and build with TEE=/path/to/tee.bin
> "
> 
> Reinstate the CONFIG_OPTEE ifdeffery to mitigate the problem, but retain the
> binman "optional" keyword at tee.bin .

I disagree. You are removing a feature and cause further problems with this commit.

Your initial assumption

> even if the
> CONFIG_OPTEE is disabled because the u-boot.itb should not contain any
> tee.bin

is not accurate. You were able to package OP-TEE without needing to enable support in U-Boot. And
afaik this is a perfectly valid use-case.
With this change you can no longer do that, so this change is a regression.

About the warning message. I understand that you find it confusing; binman is designed so that it
emits a warning when an optional blob is not found.

I prefer that approach to no message at all. You may want to package OP-TEE (e.g. you have an tf-a
blob which jumps to OP-TEE addr) and being alerted to a possible mistake is important; Let's say
tee path was incorrect during build.

Also, keeping optional when using if defs is not a good idea. Binman will still build you an image
when no OP-TEE blob is present, but should not since you enabled OPTEE configs. If you enable
OPTEE, you should have an OP-TEE blob packaged.
We could add ifndef OPTEE around the optional property.

Yannic

> 
> Before:
> "
> $ mkimage -l u-boot.itb
> FIT description: Configuration to load ATF before U-Boot
> Created:         Tue Jun 30 17:23:54 2026
>  Image 0 (uboot)
> ...
>  Image 2 (tee) <------------------------------ bogus empty image entry
>   Description:  OP-TEE                                 |
>   Created:      Tue Jun 30 17:23:54 2026               |
>   Type:         Trusted Execution Environment Image    |
>   Compression:  uncompressed                           |
>   Data Size:    0 Bytes = 0.00 KiB = 0.00 MiB <--------'
>  Image 3 (fdt-1)
> ...
> "
> 
> After:
> "
> $ mkimage -l u-boot.itb
> FIT description: Configuration to load ATF before U-Boot
> Created:         Tue Jun 30 17:58:15 2026
>  Image 0 (uboot)
> ...
>  Image 1 (atf)
> ...
>  Image 2 (fdt-1)
> ...
> "
> 
> Fixes: b57ed147939c ("dts: imx8m{m,n,p,q}: Make optee packaging optional")
> Signed-off-by: Marek Vasut <marex at nabladev.com>
> ---
> Cc: "NXP i.MX U-Boot Team" <uboot-imx at nxp.com>
> Cc: Fabio Estevam <festevam at gmail.com>
> Cc: Peng Fan <peng.fan at nxp.com>
> Cc: Simon Glass <sjg at chromium.org>
> Cc: Stefano Babic <sbabic at nabladev.com>
> Cc: Tom Rini <trini at konsulko.com>
> Cc: Yannic Moog <y.moog at phytec.de>
> Cc: Ye Li <ye.li at nxp.com>
> Cc: u-boot at lists.denx.de
> ---
>  arch/arm/dts/imx8mm-u-boot.dtsi | 6 ++++++
>  arch/arm/dts/imx8mn-u-boot.dtsi | 6 ++++++
>  arch/arm/dts/imx8mp-u-boot.dtsi | 6 ++++++
>  arch/arm/dts/imx8mq-u-boot.dtsi | 6 ++++++
>  4 files changed, 24 insertions(+)
> 
> diff --git a/arch/arm/dts/imx8mm-u-boot.dtsi b/arch/arm/dts/imx8mm-u-boot.dtsi
> index ab135fc8a47..56ab70e54ea 100644
> --- a/arch/arm/dts/imx8mm-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mm-u-boot.dtsi
> @@ -165,6 +165,7 @@
>  					};
>  #endif
>  
> +#ifdef CONFIG_OPTEE
>  					tee: tee {
>  						description = "OP-TEE";
>  						type = "tee";
> @@ -179,6 +180,7 @@
>  							optional;
>  						};
>  					};
> +#endif
>  
>  					binman_fip: fip {
>  						arch = "arm64";
> @@ -208,7 +210,11 @@
>  						fdt = "fdt-SEQ";
>  						firmware = "uboot";
>  #ifndef CONFIG_ARMV8_PSCI
> +#ifdef CONFIG_OPTEE
>  						loadables = "atf", "tee";
> +#else
> +						loadables = "atf";
> +#endif
>  #endif
>  					};
>  				};
> diff --git a/arch/arm/dts/imx8mn-u-boot.dtsi b/arch/arm/dts/imx8mn-u-boot.dtsi
> index 8993605af3c..e4918bf5975 100644
> --- a/arch/arm/dts/imx8mn-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mn-u-boot.dtsi
> @@ -241,6 +241,7 @@
>  					};
>  #endif
>  
> +#ifdef CONFIG_OPTEE
>  					tee: tee {
>  						description = "OP-TEE";
>  						type = "tee";
> @@ -255,6 +256,7 @@
>  							optional;
>  						};
>  					};
> +#endif
>  
>  					binman_fip: fip {
>  						arch = "arm64";
> @@ -284,7 +286,11 @@
>  						fdt = "fdt-SEQ";
>  						firmware = "uboot";
>  #ifndef CONFIG_ARMV8_PSCI
> +#ifdef CONFIG_OPTEE
>  						loadables = "atf", "tee";
> +#else
> +						loadables = "atf";
> +#endif
>  #endif
>  					};
>  				};
> diff --git a/arch/arm/dts/imx8mp-u-boot.dtsi b/arch/arm/dts/imx8mp-u-boot.dtsi
> index d9d220c70db..58b6863f003 100644
> --- a/arch/arm/dts/imx8mp-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mp-u-boot.dtsi
> @@ -189,6 +189,7 @@
>  					};
>  #endif
>  
> +#ifdef CONFIG_OPTEE
>  					tee: tee {
>  						description = "OP-TEE";
>  						type = "tee";
> @@ -203,6 +204,7 @@
>  							optional;
>  						};
>  					};
> +#endif
>  
>  					@fdt-SEQ {
>  						description = "NAME";
> @@ -223,7 +225,11 @@
>  						fdt = "fdt-SEQ";
>  						firmware = "uboot";
>  #ifndef CONFIG_ARMV8_PSCI
> +#ifdef CONFIG_OPTEE
>  						loadables = "atf", "tee";
> +#else
> +						loadables = "atf";
> +#endif
>  #endif
>  					};
>  				};
> diff --git a/arch/arm/dts/imx8mq-u-boot.dtsi b/arch/arm/dts/imx8mq-u-boot.dtsi
> index ed2c704f2e5..2f9b4a504c3 100644
> --- a/arch/arm/dts/imx8mq-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mq-u-boot.dtsi
> @@ -173,6 +173,7 @@
>  				};
>  #endif
>  
> +#ifdef CONFIG_OPTEE
>  				tee: tee {
>  					description = "OP-TEE";
>  					type = "tee";
> @@ -187,6 +188,7 @@
>  						optional;
>  					};
>  				};
> +#endif
>  
>  				fdt {
>  					compression = "none";
> @@ -208,7 +210,11 @@
>  					fdt = "fdt";
>  					firmware = "uboot";
>  #ifndef CONFIG_ARMV8_PSCI
> +#ifdef CONFIG_OPTEE
>  					loadables = "atf", "tee";
> +#else
> +					loadables = "atf";
> +#endif
>  #endif
>  				};
>  			};


More information about the U-Boot mailing list