On 9/16/25 2:49 PM, Mathieu Othacehe wrote:
Hello,
+CC Biju, Chris
I am working on the RZG2L devkit from Renesas and trying to get the mainline U-Boot working there. I have noticed that in several locations, U-Boot is unconditionally expecting the TF-A to pass a DTB blob: In board/renesas/rzg2l/rzg2l.c: --8<---------------cut here---------------start------------->8--- static void apply_atf_overlay(void *fdt_blob) { void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]); ... } --8<---------------cut here---------------end--------------->8--- In arch/arm/mach-renesas/cpu_info-rzg2l.c: --8<---------------cut here---------------start------------->8--- static const struct tfa_info *get_tfa_info(void) { void *atf_fdt_blob = (void *)(rcar_atf_boot_args[1]); ... } --8<---------------cut here---------------end--------------->8--- Now, the TF-A that I have compiled (v2.5/rzg2l-1.00-43-g950d6a6b9) from https://github.com/renesas-rz/rzg_trusted-firmware-a.git is not passing any DTB blob: --8<---------------cut here---------------start------------->8--- INFO: BL31: Preparing for EL3 exit to normal world INFO: Entry point address = 0x50000000 INFO: SPSR = 0x3c5 VERBOSE: Argument #0 = 0x0 VERBOSE: Argument #1 = 0x0 VERBOSE: Argument #2 = 0x0 VERBOSE: Argument #3 = 0x0 VERBOSE: Argument #4 = 0x0 VERBOSE: Argument #5 = 0x0 VERBOSE: Argument #6 = 0x0 VERBOSE: Argument #7 = 0x0 --8<---------------cut here---------------end--------------->8--- That results in dereferencing a NULL pointer and failing to run U-Boot on that platform. On the other hand, disabling the two pieces of code mentioned below is enough to have a working U-Boot. It does not seem that the upstream TF-A has support for the RZG2L CPU. So my question is, what is the expected TF-A branch / repository that is meant to be used together with the renesas_rzg2l_smarc_defconfig U-Boot configuration? Thanks in advance,
Software versions would be good to include, U-Boot version, TFA version. -- Best regards, Marek Vasut