From: Sascha Hauer <s.hauer@pengutronix.de>
To: BAREBOX <barebox@lists.infradead.org>
Subject: [PATCH 3/3] ARM: rockchip: pack the device tree passed to TF-A and OP-TEE
Date: Thu, 01 Oct 2026 09:42:53 +0200 [thread overview]
Message-ID: <20261001-rockchip-early-boottime-v1-3-dd891bcdb74f@pengutronix.de> (raw)
In-Reply-To: <20261001-rockchip-early-boottime-v1-0-dd891bcdb74f@pengutronix.de>
rockchip_create_optee_fdt() builds a device tree with just the memory
nodes, but fdt_create_empty_tree() sets its totalsize to the size of the
whole scratch buffer, i.e. CONFIG_ARCH_ROCKCHIP_ATF_FDT_SIZE (384 KiB).
TF-A and OP-TEE both call fdt_open_into() on the device tree, which
copies totalsize bytes regardless of the actual content. TF-A does this
with the MMU disabled and OP-TEE through an uncached mapping. On an
RK3588 this takes 185 ms in TF-A and another 182 ms in OP-TEE.
Pack the device tree so that totalsize matches its content. OP-TEE can
still expand it in place, the scratch buffer keeps its size.
Assisted-by: Claude:claude-opus-5-5
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
arch/arm/mach-rockchip/atf.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/arch/arm/mach-rockchip/atf.c b/arch/arm/mach-rockchip/atf.c
index e1ca197430..4b88de8317 100644
--- a/arch/arm/mach-rockchip/atf.c
+++ b/arch/arm/mach-rockchip/atf.c
@@ -172,7 +172,7 @@ static int rockchip_create_optee_fdt(void *buf, int bufsize)
{
unsigned long base[ROCKCHIP_MAX_DRAM_RESOURCES];
unsigned long size[ARRAY_SIZE(base)];
- int i, root;
+ int i, root, ret;
if (fdt_create_empty_tree(buf, bufsize) != 0)
return -EINVAL;
@@ -187,7 +187,12 @@ static int rockchip_create_optee_fdt(void *buf, int bufsize)
size[i] = memsize[i];
}
- return fdt_fixup_mem(buf, base, size, n_mem_resources);
+ ret = fdt_fixup_mem(buf, base, size, n_mem_resources);
+ if (ret)
+ return ret;
+
+ /* TF-A and OP-TEE copy the whole totalsize, keep it small */
+ return fdt_pack(buf);
}
static void rockchip_atf_load_bl31(void *fdt)
--
2.47.3
prev parent reply other threads:[~2026-10-01 7:44 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 7:42 [PATCH 0/3] Rockchip: early boot time optimization Sascha Hauer
2026-10-01 7:42 ` [PATCH 1/3] ARM: rockchip: move to the load address with the MMU enabled Sascha Hauer
2026-10-01 7:42 ` [PATCH 2/3] ARM: rockchip: boards: leave moving to the load address to atf.c Sascha Hauer
2026-10-01 8:30 ` Ahmad Fatoum
2026-10-01 10:19 ` Sascha Hauer
2026-10-01 7:42 ` Sascha Hauer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261001-rockchip-early-boottime-v1-3-dd891bcdb74f@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=barebox@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox