mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: Sascha Hauer <s.hauer@pengutronix.de>,
	BAREBOX <barebox@lists.infradead.org>
Subject: Re: [PATCH 2/3] ARM: rockchip: boards: leave moving to the load address to atf.c
Date: Thu, 1 Oct 2026 10:30:49 +0200	[thread overview]
Message-ID: <5e5c848a-207c-45db-ad29-bf0b326badff@pengutronix.de> (raw)
In-Reply-To: <20261001-rockchip-early-boottime-v1-2-dd891bcdb74f@pengutronix.de>

Hello Sascha,

On 10/1/26 9:42 AM, Sascha Hauer wrote:
> The SoC entry functions now move barebox to the load address themselves,
> with the MMU enabled. Stop doing it upfront with relocate_to_adr_full(),
> which copies the image with the MMU off, and just relocate in place.
> 
> Assisted-by: Claude:claude-opus-5-5
> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>

Will an out-of-tree board that still has the same old pattern continue
to work normally?

Thanks,
Ahmad


> ---
>  arch/arm/boards/pine64-pinetab2/lowlevel.c           | 10 ++--------
>  arch/arm/boards/pine64-quartz64/lowlevel.c           |  5 +----
>  arch/arm/boards/protonic-prtpuk/lowlevel.c           |  5 +----
>  arch/arm/boards/protonic-rk356x/lowlevel.c           |  5 +----
>  arch/arm/boards/qnap-tsx33/lowlevel.c                | 18 ++----------------
>  arch/arm/boards/radxa-cm3/lowlevel.c                 |  5 +----
>  arch/arm/boards/radxa-rock3/lowlevel.c               |  5 +----
>  arch/arm/boards/radxa-rock5/lowlevel.c               | 10 ++--------
>  arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c      |  5 +----
>  arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c |  5 +----
>  arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c |  5 +----
>  arch/arm/boards/rockchip-rk3568-evb/lowlevel.c       |  5 +----
>  arch/arm/boards/wolfvision-pf5/lowlevel.c            |  9 +--------
>  arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c   |  5 +----
>  14 files changed, 17 insertions(+), 80 deletions(-)
> 
> diff --git a/arch/arm/boards/pine64-pinetab2/lowlevel.c b/arch/arm/boards/pine64-pinetab2/lowlevel.c
> index 73ca6866f0..63286bf630 100644
> --- a/arch/arm/boards/pine64-pinetab2/lowlevel.c
> +++ b/arch/arm/boards/pine64-pinetab2/lowlevel.c
> @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_pinetab2_v0, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> @@ -26,10 +23,7 @@ ENTRY_FUNCTION(start_pinetab2_v2, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/pine64-quartz64/lowlevel.c b/arch/arm/boards/pine64-quartz64/lowlevel.c
> index 7723d47860..6a1169d24a 100644
> --- a/arch/arm/boards/pine64-quartz64/lowlevel.c
> +++ b/arch/arm/boards/pine64-quartz64/lowlevel.c
> @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_quartz64a, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/protonic-prtpuk/lowlevel.c b/arch/arm/boards/protonic-prtpuk/lowlevel.c
> index 08de527bf6..df1588d343 100644
> --- a/arch/arm/boards/protonic-prtpuk/lowlevel.c
> +++ b/arch/arm/boards/protonic-prtpuk/lowlevel.c
> @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_prtpuk, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3576_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/protonic-rk356x/lowlevel.c b/arch/arm/boards/protonic-rk356x/lowlevel.c
> index 830d708b6e..1959881951 100644
> --- a/arch/arm/boards/protonic-rk356x/lowlevel.c
> +++ b/arch/arm/boards/protonic-rk356x/lowlevel.c
> @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_mecsbc, r0, r1, r2)
>  
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/qnap-tsx33/lowlevel.c b/arch/arm/boards/qnap-tsx33/lowlevel.c
> index c5458937d1..88e94471d2 100644
> --- a/arch/arm/boards/qnap-tsx33/lowlevel.c
> +++ b/arch/arm/boards/qnap-tsx33/lowlevel.c
> @@ -13,14 +13,7 @@ extern char __dtb_rk3568_qnap_ts433eu_start[];
>  
>  ENTRY_FUNCTION(start_rk3568_qnap_ts433, r0, r1, r2)
>  {
> -	/*
> -	 * Image execution starts at 0x0, but this is used for ATF and
> -	 * OP-TEE later, so move away from here.
> -	 */
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> @@ -35,14 +28,7 @@ ENTRY_FUNCTION(start_rk3568_qnap_ts433, r0, r1, r2)
>   */
>  ENTRY_FUNCTION(start_rk3568_qnap_ts433eu, r0, r1, r2)
>  {
> -	/*
> -	 * Image execution starts at 0x0, but this is used for ATF and
> -	 * OP-TEE later, so move away from here.
> -	 */
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/radxa-cm3/lowlevel.c b/arch/arm/boards/radxa-cm3/lowlevel.c
> index e1b453f21f..2c91444d46 100644
> --- a/arch/arm/boards/radxa-cm3/lowlevel.c
> +++ b/arch/arm/boards/radxa-cm3/lowlevel.c
> @@ -21,10 +21,7 @@ ENTRY_FUNCTION(start_radxa_cm3_io, r0, r1, r2)
>  
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/radxa-rock3/lowlevel.c b/arch/arm/boards/radxa-rock3/lowlevel.c
> index ec407404b9..50ec27d272 100644
> --- a/arch/arm/boards/radxa-rock3/lowlevel.c
> +++ b/arch/arm/boards/radxa-rock3/lowlevel.c
> @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_rock3a, r0, r1, r2)
>  
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/radxa-rock5/lowlevel.c b/arch/arm/boards/radxa-rock5/lowlevel.c
> index e70752be31..f00c394c4d 100644
> --- a/arch/arm/boards/radxa-rock5/lowlevel.c
> +++ b/arch/arm/boards/radxa-rock5/lowlevel.c
> @@ -15,10 +15,7 @@ ENTRY_FUNCTION(start_rock5b, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> @@ -29,10 +26,7 @@ ENTRY_FUNCTION(start_rock5t, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c b/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c
> index 474f1a1332..9e083514e1 100644
> --- a/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c
> +++ b/arch/arm/boards/rockchip-rk3562-evb2/lowlevel.c
> @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_rk3562_evb2, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3562_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c
> index 4afe83189d..b56f8d62cf 100644
> --- a/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c
> +++ b/arch/arm/boards/rockchip-rk3562-kickpi-k3/lowlevel.c
> @@ -12,10 +12,7 @@ ENTRY_FUNCTION(start_rk3562_kickpi_k3, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3562_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c b/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c
> index 12c2445287..021438e12f 100644
> --- a/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c
> +++ b/arch/arm/boards/rockchip-rk3568-bpi-r2pro/lowlevel.c
> @@ -26,10 +26,7 @@ ENTRY_FUNCTION(start_rk3568_bpi_r2pro, r0, r1, r2)
>  	//clear bit 6 for 3v3 as it was set to 1v8
>  	writel(RK_CLRBITS(BIT(6)), PMU_GRF_IO_VSEL1);
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c b/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c
> index d5ae70049e..a238f8bd73 100644
> --- a/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c
> +++ b/arch/arm/boards/rockchip-rk3568-evb/lowlevel.c
> @@ -22,10 +22,7 @@ ENTRY_FUNCTION(start_rk3568_evb, r0, r1, r2)
>  
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/wolfvision-pf5/lowlevel.c b/arch/arm/boards/wolfvision-pf5/lowlevel.c
> index c20ca4ae13..49fb2143d7 100644
> --- a/arch/arm/boards/wolfvision-pf5/lowlevel.c
> +++ b/arch/arm/boards/wolfvision-pf5/lowlevel.c
> @@ -21,14 +21,7 @@ ENTRY_FUNCTION(start_rk3568_wolfvision_pf5, r0, r1, r2)
>  	 */
>  	writel(RK_SETBITS(0x30), 0xfdc20140);
>  
> -	/*
> -	 * Image execution starts at 0x0, but this is used for ATF and
> -	 * OP-TEE later, so move away from here.
> -	 */
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3568_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> diff --git a/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c b/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c
> index 2fa921eee0..45ba471d24 100644
> --- a/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c
> +++ b/arch/arm/boards/xunlong-orangepi-5-plus/lowlevel.c
> @@ -14,10 +14,7 @@ ENTRY_FUNCTION(start_orangepi_5_plus, r0, r1, r2)
>  {
>  	putc_ll('>');
>  
> -	if (current_el() == 3)
> -		relocate_to_adr_full(RK3588_BAREBOX_LOAD_ADDRESS);
> -	else
> -		relocate_to_current_adr();
> +	relocate_to_current_adr();
>  
>  	setup_c();
>  
> 

-- 
Pengutronix e.K.                  |                             |
Steuerwalder Str. 21              | http://www.pengutronix.de/  |
31137 Hildesheim, Germany         | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686  | Fax:   +49-5121-206917-5555 |




  reply	other threads:[~2026-10-01  8:32 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 [this message]
2026-10-01 10:19     ` Sascha Hauer
2026-10-01  7:42 ` [PATCH 3/3] ARM: rockchip: pack the device tree passed to TF-A and OP-TEE Sascha Hauer

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=5e5c848a-207c-45db-ad29-bf0b326badff@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    --cc=s.hauer@pengutronix.de \
    /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