It's found that BINMAN_SYMBOLS_OK always evaluates to false on RISC-V, because our linkerscripts don't define symbol __image_copy_start, on which binman depends for determining the base address of an entry. Binman simply bails out in case of missing the symbol.
This series first defaults SPL_BINMAN_UBOOT_SYMBOLS to N on RISC-V to prevent binman from looking for a plain proper U-Boot image, which isn't desired since binman configuration on RISC-V wraps proper U-Boot in a FIT image. Then we define __image_copy_start and the paired __image_copy_end to really fix binman_sym's functionality. I've tested building with - ae350_rv64_defconfig - ae350_rv64_spl_defconfig - bananapi-f3_defconfig - k230_canmv_defconfig - microchip_mpfs_icicle_defconfig and booting successfully on - milkv_duo_defconfig - qemu-riscv64_smode_defconfig - qemu-riscv64_defconfig - sifive_unleashed_defconfig - starfive_visionfive2_defconfig with either real hardware or QEMU. Thanks for your time and review. Yao Zi (2): spl: riscv: Disable SPL_BINMAN_UBOOT_SYMBOLS by default riscv: Provide __image_copy_{start_end} symbols in linkerscript arch/riscv/cpu/u-boot-spl.lds | 2 ++ arch/riscv/cpu/u-boot.lds | 3 +++ common/spl/Kconfig | 2 ++ 3 files changed, 7 insertions(+) -- 2.49.0