mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Barebox List <barebox@lists.infradead.org>
Subject: [PATCH 2/2] ARM: i.MX: Webasto ccbv2: fix barebox chainloading with OP-TEE enabled
Date: Thu, 26 Jun 2025 16:03:29 +0200	[thread overview]
Message-ID: <20250626140329.418033-2-s.hauer@pengutronix.de> (raw)
In-Reply-To: <20250626140329.418033-1-s.hauer@pengutronix.de>

Chainloading barebox when OP-TEE is enabled has multiple bugs, fix them.

When barebox starts we have to guess if we have to start OP-TEE or not.
As we can't detect the exception level on ARMv7 we do this by checking
if a first stage loader has passed us a device tree.

First of all the device tree is passed in r2, not in r0, so fix the
register we use.

Then we have to check if r2 is within the SDRAM. We check against
MX6_MMDC_P0_BASE_ADDR which is the base of the SDRAM controller. Use the
base address of the SDRAM instead.

Finally we manipulate the TZASC which we are obviously not allowed in
EL1, so move the manipulation to the code which is only executed in EL2.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
---
 arch/arm/boards/webasto-ccbv2/lowlevel.c | 18 ++++++++----------
 1 file changed, 8 insertions(+), 10 deletions(-)

diff --git a/arch/arm/boards/webasto-ccbv2/lowlevel.c b/arch/arm/boards/webasto-ccbv2/lowlevel.c
index 7a198bd801..17264479c2 100644
--- a/arch/arm/boards/webasto-ccbv2/lowlevel.c
+++ b/arch/arm/boards/webasto-ccbv2/lowlevel.c
@@ -31,23 +31,21 @@ static void configure_uart(void)
 
 }
 
-static void noinline start_ccbv2(u32 r0, unsigned long mem_size, char *fdt)
+static void noinline start_ccbv2(u32 r2, unsigned long mem_size, char *fdt)
 {
 	int tee_size;
 	void *tee;
 
-	/* Enable normal/secure r/w for TZC380 region0 */
-	writel(0xf0000000, 0x021D0108);
-
 	configure_uart();
 
 	/*
 	 * Chainloading barebox will pass a device tree within the RAM in r0,
 	 * skip OP-TEE early loading in this case
 	 */
-	if(IS_ENABLED(CONFIG_FIRMWARE_CCBV2_OPTEE)
-	   && !(r0 > MX6_MMDC_P0_BASE_ADDR
-	        &&  r0 < MX6_MMDC_P0_BASE_ADDR + mem_size)) {
+	if(IS_ENABLED(CONFIG_FIRMWARE_CCBV2_OPTEE) &&
+	   !(r2 > MX6_MMDC_PORT0_BASE_ADDR && r2 < MX6_MMDC_PORT0_BASE_ADDR + mem_size)) {
+		/* Enable normal/secure r/w for TZC380 region0 */
+		writel(0xf0000000, 0x021D0108);
 		get_builtin_firmware(ccbv2_optee_bin, &tee, &tee_size);
 
 		memset((void *)OPTEE_OVERLAY_LOCATION, 0, 0x1000);
@@ -70,7 +68,7 @@ ENTRY_FUNCTION(start_imx6ul_ccbv2_256m, r0, r1, r2)
 	setup_c();
 	barrier();
 
-	start_ccbv2(r0, SZ_256M, __dtb_z_imx6ul_webasto_ccbv2_start);
+	start_ccbv2(r2, SZ_256M, __dtb_z_imx6ul_webasto_ccbv2_start);
 }
 
 ENTRY_FUNCTION(start_imx6ul_ccbv2_512m, r0, r1, r2)
@@ -83,7 +81,7 @@ ENTRY_FUNCTION(start_imx6ul_ccbv2_512m, r0, r1, r2)
 	setup_c();
 	barrier();
 
-	start_ccbv2(r0, SZ_512M, __dtb_z_imx6ul_webasto_ccbv2_start);
+	start_ccbv2(r2, SZ_512M, __dtb_z_imx6ul_webasto_ccbv2_start);
 }
 
 extern char __dtb_z_imx6ul_webasto_marvel_start[];
@@ -97,5 +95,5 @@ ENTRY_FUNCTION(start_imx6ul_marvel, r0, r1, r2)
 	setup_c();
 	barrier();
 
-	start_ccbv2(r0, SZ_512M, __dtb_z_imx6ul_webasto_marvel_start);
+	start_ccbv2(r2, SZ_512M, __dtb_z_imx6ul_webasto_marvel_start);
 }
-- 
2.39.5




  reply	other threads:[~2025-06-26 14:04 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-26 14:03 [PATCH 1/2] ARM: i.MX: tqma6ulx: " Sascha Hauer
2025-06-26 14:03 ` Sascha Hauer [this message]
2025-06-26 15:16   ` [PATCH 2/2] ARM: i.MX: Webasto ccbv2: " Marco Felsch
2025-06-26 15:17 ` [PATCH 1/2] ARM: i.MX: tqma6ulx: " Marco Felsch
2025-06-26 15:37 ` Ahmad Fatoum
2025-06-26 22:36   ` 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=20250626140329.418033-2-s.hauer@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