spl_image->arg is passed to the kernel as an argument in the x0
register. However in cases when the kernel is loaded from a FIT
container along with a DT, the arg remains unset which leads to boot
failure.

Therefore, this patch sets the arg to fdt address if it's null.

Signed-off-by: Anshul Dalal <[email protected]>
---
 arch/arm/lib/spl.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/arch/arm/lib/spl.c b/arch/arm/lib/spl.c
index c43a63f1819..2e7613a6f2e 100644
--- a/arch/arm/lib/spl.c
+++ b/arch/arm/lib/spl.c
@@ -53,6 +53,8 @@ void __weak board_init_f(ulong dummy)
 #ifdef CONFIG_ARM64
 void __noreturn jump_to_image_linux(struct spl_image_info *spl_image)
 {
+       if (!spl_image->arg)
+               spl_image->arg = spl_image_fdt_addr(spl_image);
        debug("Entering kernel arg pointer: 0x%p\n", spl_image->arg);
        cleanup_before_linux();
        armv8_switch_to_el2((u64)spl_image->arg, 0, 0, 0,
-- 
2.51.0

Reply via email to