From: Marco Felsch <m.felsch@pengutronix.de>
To: barebox@lists.infradead.org
Subject: [PATCH v2 15/18] ARM: i.MX8M: atf: add support for optee hdr parsing
Date: Tue, 16 Jan 2024 18:07:35 +0100 [thread overview]
Message-ID: <20240116170738.209954-16-m.felsch@pengutronix.de> (raw)
In-Reply-To: <20240116170738.209954-1-m.felsch@pengutronix.de>
The OP-TEE binary can contain a header with useful information like
loadaddr and size. This commit adds the support to take the header
loadaddr into account. If the header is not found the common builtin
loadaddr is used.
Signed-off-by: Marco Felsch <m.felsch@pengutronix.de>
---
arch/arm/mach-imx/atf.c | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
diff --git a/arch/arm/mach-imx/atf.c b/arch/arm/mach-imx/atf.c
index 3f796249061d..d7698b397f47 100644
--- a/arch/arm/mach-imx/atf.c
+++ b/arch/arm/mach-imx/atf.c
@@ -13,6 +13,7 @@
#include <mach/imx/imx8m-regs.h>
#include <soc/fsl/fsl_udc.h>
#include <soc/fsl/caam.h>
+#include <tee/optee.h>
/**
* imx8m_atf_load_bl31 - Load ATF BL31 blob and transfer control to it
@@ -116,6 +117,24 @@ void imx8mm_load_bl33(void *bl33)
memcpy(bl33, __image_start, barebox_pbl_size);
}
+static void imx_adjust_optee_memory(void **bl32, void **bl32_image, size_t *bl32_size)
+{
+ struct optee_header *hdr = *bl32_image;
+ u64 membase;
+
+ if (optee_verify_header(hdr))
+ return;
+
+ imx8m_scratch_save_optee_hdr(hdr);
+
+ membase = (u64)hdr->init_load_addr_hi << 32;
+ membase |= hdr->init_load_addr_lo;
+
+ *bl32 = (void *)membase;
+ *bl32_size -= sizeof(*hdr);
+ *bl32_image += sizeof(*hdr);
+}
+
__noreturn void imx8mm_load_and_start_image_via_tfa(void)
{
const void *bl31;
@@ -137,6 +156,8 @@ __noreturn void imx8mm_load_and_start_image_via_tfa(void)
bl33, &bl32_image,
&bl32_size);
+ imx_adjust_optee_memory(&bl32, &bl32_image, &bl32_size);
+
memcpy(bl32, bl32_image, bl32_size);
get_builtin_firmware(imx8mm_bl31_bin_optee, &bl31, &bl31_size);
@@ -201,6 +222,8 @@ __noreturn void imx8mp_load_and_start_image_via_tfa(void)
bl33, &bl32_image,
&bl32_size);
+ imx_adjust_optee_memory(&bl32, &bl32_image, &bl32_size);
+
memcpy(bl32, bl32_image, bl32_size);
get_builtin_firmware(imx8mp_bl31_bin_optee, &bl31, &bl31_size);
@@ -266,6 +289,8 @@ __noreturn void imx8mn_load_and_start_image_via_tfa(void)
bl33, &bl32_image,
&bl32_size);
+ imx_adjust_optee_memory(&bl32, &bl32_image, &bl32_size);
+
memcpy(bl32, bl32_image, bl32_size);
get_builtin_firmware(imx8mn_bl31_bin_optee, &bl31, &bl31_size);
@@ -324,6 +349,8 @@ __noreturn void imx8mq_load_and_start_image_via_tfa(void)
bl33, &bl32_image,
&bl32_size);
+ imx_adjust_optee_memory(&bl32, &bl32_image, &bl32_size);
+
memcpy(bl32, bl32_image, bl32_size);
get_builtin_firmware(imx8mq_bl31_bin_optee, &bl31, &bl31_size);
--
2.39.2
next prev parent reply other threads:[~2024-01-16 17:09 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-16 17:07 [PATCH v2 00/18] Dynamic OP-TEE Loading Marco Felsch
2024-01-16 17:07 ` [PATCH v2 01/18] ARM: i.MX8M: atf: make use of imx8m*_save_bootrom_log macros Marco Felsch
2024-01-16 17:07 ` [PATCH v2 02/18] ARM: i.MX8M: bundle imx-scratch code Marco Felsch
2024-01-17 14:36 ` Sascha Hauer
2024-01-18 9:11 ` Marco Felsch
2024-01-18 10:16 ` Sascha Hauer
2024-01-16 17:07 ` [PATCH v2 03/18] ARM: i.MX8M: scratch: make imx_scratch_space private Marco Felsch
2024-01-16 17:07 ` [PATCH v2 04/18] ARM: i.MX8M: romapi: refactor saving the bootrom log Marco Felsch
2024-01-16 17:07 ` [PATCH v2 05/18] ARM: i.MX8M: scratch: add optee_hdr area Marco Felsch
2024-01-17 15:00 ` Sascha Hauer
2024-01-18 9:07 ` Marco Felsch
2024-01-16 17:07 ` [PATCH v2 06/18] common: limit BOOTM_OPTEE to 32bit systems Marco Felsch
2024-01-16 17:07 ` [PATCH v2 07/18] common: add OPTEE_SHM_SIZE to configure optee shared memory Marco Felsch
2024-01-16 17:07 ` [PATCH v2 08/18] optee: add support to verify 64-bit headers as well Marco Felsch
2024-01-16 17:07 ` [PATCH v2 09/18] optee: add header version check Marco Felsch
2024-01-16 17:07 ` [PATCH v2 10/18] optee: add helper functions to set/get the optee memory base Marco Felsch
2024-01-16 17:07 ` [PATCH v2 11/18] optee: optee_verify_header: constify optee_header Marco Felsch
2024-01-16 17:07 ` [PATCH v2 12/18] ARM64: mmu: add dynamic optee memory mapping support Marco Felsch
2024-01-17 14:33 ` Sascha Hauer
2024-01-18 9:13 ` Marco Felsch
2024-01-18 10:17 ` Sascha Hauer
2024-01-16 17:07 ` [PATCH v2 13/18] ARM: i.MX8M: add dynamic optee memory of-fixup support Marco Felsch
2024-01-16 17:07 ` [PATCH v2 14/18] drivers: tee: optee: add support for dynamic optee memory base address Marco Felsch
2024-01-16 17:07 ` Marco Felsch [this message]
2024-01-16 17:07 ` [PATCH v2 16/18] ARM: i.MX8M: allow board code to configure the bl33 loadaddr Marco Felsch
2024-01-16 17:07 ` [PATCH v2 17/18] ARM: i.MX8M: cleanup MX8M*_ATF_BL33_BASE_ADDR defines Marco Felsch
2024-01-16 17:07 ` [PATCH v2 18/18] ARM: i.MX8M: fix optee of-fixup logic Marco Felsch
2024-01-18 15:30 ` Sascha Hauer
2024-01-18 16:52 ` Marco Felsch
2024-01-19 8:02 ` [PATCH v2 00/18] Dynamic OP-TEE Loading Sascha Hauer
2024-01-19 8:09 ` Sascha Hauer
2024-01-19 8:20 ` Marco Felsch
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=20240116170738.209954-16-m.felsch@pengutronix.de \
--to=m.felsch@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