[PATCH next] arm: mach-k3: use Kconfig options for ATF/OPTEE size
Andrew Davis
afd at ti.com
Tue Mar 10 14:49:52 CET 2026
On 3/10/26 4:06 AM, Anshul Dalal wrote:
> The reserved memory sizes for ATF and OPTEE were hard-coded for K3
> devices, this patch replaces them with a Kconfig option allowing for
> easier modifications.
>
> Signed-off-by: Anshul Dalal <anshuld at ti.com>
> ---
> arch/arm/dts/k3-binman.dtsi | 4 ++--
> arch/arm/mach-k3/Kconfig | 15 +++++++++++++++
> arch/arm/mach-k3/common_fdt.c | 5 +++--
> 3 files changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/dts/k3-binman.dtsi b/arch/arm/dts/k3-binman.dtsi
> index 0fd93f9536a..ad127663d03 100644
> --- a/arch/arm/dts/k3-binman.dtsi
> +++ b/arch/arm/dts/k3-binman.dtsi
> @@ -477,7 +477,7 @@
> FWPERM_SECURE_PRIV_RWCD |
> FWPERM_SECURE_USER_RWCD)>;
> start_address = <0x0 CONFIG_K3_ATF_LOAD_ADDR>;
> - end_address = <0x0 (CONFIG_K3_ATF_LOAD_ADDR + 0x1ffff)>;
> + end_address = <0x0 (CONFIG_K3_ATF_LOAD_ADDR + CONFIG_K3_ATF_RESERVED_SIZE - 1)>;
> };
> firewall_armv8_optee_fg: template-8 {
> control = <(FWCTRL_EN | FWCTRL_LOCK |
> @@ -486,7 +486,7 @@
> FWPERM_SECURE_PRIV_RWCD |
> FWPERM_SECURE_USER_RWCD)>;
> start_address = <0x0 CONFIG_K3_OPTEE_LOAD_ADDR>;
> - end_address = <0x0 (CONFIG_K3_OPTEE_LOAD_ADDR + 0x17fffff)>;
> + end_address = <0x0 (CONFIG_K3_OPTEE_LOAD_ADDR + CONFIG_K3_OPTEE_RESERVED_SIZE - 1)>;
> };
>
> ti_falcon_template: template-9 {
> diff --git a/arch/arm/mach-k3/Kconfig b/arch/arm/mach-k3/Kconfig
> index 1b8c0b1eb96..ba1130a7996 100644
> --- a/arch/arm/mach-k3/Kconfig
> +++ b/arch/arm/mach-k3/Kconfig
> @@ -130,6 +130,14 @@ config K3_ATF_LOAD_ADDR
> The load address for the ATF image. This value is used to build the
> FIT image header that places ATF in memory where it will run.
>
> +config K3_ATF_RESERVED_SIZE
> + hex "Reserved DDR size for ATF"
> + default 0x80000 if (SOC_K3_AM625 || SOC_K3_AM62A7 || SOC_K3_AM62P5 || SOC_K3_J722S)
> + default 0x20000
> + help
> + The runtime DDR size reserved for ATF. This value is used to fixup the
> + kernel device-tree's reserved-memory node for ATF.
This does more than just fixing up the DT. It also sets the size of the firewall
in the boot certificate, which is much more important. If this is set smaller
than the real size of ATF then some of it might remain un-firewalled.
Same below for OPTEE. Otherwise, LGTM,
Acked-by: Andrew Davis <afd at ti.com>
> +
> config K3_OPTEE_LOAD_ADDR
> hex "Load address of OPTEE image"
> default 0x9e800000
> @@ -137,6 +145,13 @@ config K3_OPTEE_LOAD_ADDR
> The load address for the OPTEE image. This value defaults to 0x9e800000
> if not provided in the board defconfig file.
>
> +config K3_OPTEE_RESERVED_SIZE
> + hex "Reserved DDR size for OPTEE"
> + default 0x1800000
> + help
> + The runtime DDR size reserved for OPTEE. This value is used to fixup the
> + kernel device-tree's reserved-memory node for OPTEE.
> +
> config K3_DM_FW
> bool "Separate DM firmware image"
> depends on CPU_V7R && !SOC_K3_AM642 && !SOC_K3_AM654 && !CLK_TI_SCI && !TI_SCI_POWER_DOMAIN
> diff --git a/arch/arm/mach-k3/common_fdt.c b/arch/arm/mach-k3/common_fdt.c
> index cb0fb8274a5..39cb00c3f43 100644
> --- a/arch/arm/mach-k3/common_fdt.c
> +++ b/arch/arm/mach-k3/common_fdt.c
> @@ -173,12 +173,13 @@ int fdt_fixup_reserved(void *blob)
> int ret;
>
> ret = fdt_fixup_reserved_memory(blob, "tfa", CONFIG_K3_ATF_LOAD_ADDR,
> - 0x80000);
> + CONFIG_K3_ATF_RESERVED_SIZE);
> if (ret)
> return ret;
>
> return fdt_fixup_reserved_memory(blob, "optee",
> - CONFIG_K3_OPTEE_LOAD_ADDR, 0x1800000);
> + CONFIG_K3_OPTEE_LOAD_ADDR,
> + CONFIG_K3_OPTEE_RESERVED_SIZE);
> }
>
> static int fdt_fixup_critical_trips(void *blob, int zoneoffset, int maxc)
>
> ---
> base-commit: 1e240f7206fccde4ec73ea432ab8360d321c5fe5
> change-id: 20260310-tfa_tee_addr_kconfig_refactor-2bf77949df0f
>
> Best regards,
More information about the U-Boot
mailing list