[PATCH v4 24/25] rockchip: Relocate bloblist at the end of the SPL phase
Jonas Karlman
jonas at kwiboo.se
Sun May 25 21:44:13 CEST 2025
Hi Simon,
On 2025-05-25 12:48, Simon Glass wrote:
> Where the bloblist is located in internal memory and TF-A's BL31 blob
> removes access to this memory, the best option seems to be to relocate
> the bloblist just before running TF-A.
>
> Do this at the end of SPL.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> Suggested-by: Raymond Mao <raymond.mao at linaro.org>
> ---
>
> (no changes since v3)
>
> Changes in v3:
> - Add the BLOBLIST_RELOC condition as well
>
> Changes in v2:
> - Move this logic into board-specific code
>
> arch/arm/mach-rockchip/spl.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/spl.c b/arch/arm/mach-rockchip/spl.c
> index 305373a161c..a919246c4aa 100644
> --- a/arch/arm/mach-rockchip/spl.c
> +++ b/arch/arm/mach-rockchip/spl.c
> @@ -3,6 +3,7 @@
> * (C) Copyright 2019 Rockchip Electronics Co., Ltd
> */
>
> +#include <bloblist.h>
> #include <cpu_func.h>
> #include <debug_uart.h>
> #include <dm.h>
> @@ -133,6 +134,20 @@ void board_init_f(ulong dummy)
>
> void spl_board_prepare_for_boot(void)
> {
> + /*
> + * On RK3399, TF-A is executed after SPL and before U-Boot. It removes
> + * our access to the IRAM. So move the bloblist to RAM.
Please rephrase this as TF-A is executed after SPL and before U-Boot
proper for all Rockchip AArch64 not just RK3399. Also please reference
SRAM instead of IRAM, as SRAM is what is referenced in Rockchip docs.
> + */
> + if (xpl_phase() == PHASE_SPL && IS_ENABLED(CONFIG_VPL) &&
It does not make sense to make this VPL only, as relocation of bloblist
could possible be used without VPL?
Regards,
Jonas
> + CONFIG_IS_ENABLED(BLOBLIST_RELOC)) {
> + ulong addr = CONFIG_IF_ENABLED_INT(BLOBLIST_RELOC,
> + BLOBLIST_RELOC_ADDR);
> +
> + log_debug("Relocating bloblist %p to %lx\n", gd_bloblist(),
> + addr);
> + bloblist_reloc(map_sysmem(addr, 0), bloblist_get_total_size());
> + }
> +
> if (!IS_ENABLED(CONFIG_ARM64) || CONFIG_IS_ENABLED(SYS_DCACHE_OFF))
> return;
>
More information about the U-Boot
mailing list