From: Vitaly Wool Date: Tue, 6 Apr 2021 07:50:16 +0000 (+0300) Subject: riscv: booti: do not force relocation if force_reloc is not set X-Git-Url: http://git.dujemihanovic.xyz/html/%7B%7B%20.Permalink%20%7D%7D?a=commitdiff_plain;h=6ba8eeb6f17c08a7a7fd97683161330d01a8ef2e;p=u-boot.git riscv: booti: do not force relocation if force_reloc is not set If force_reloc flag is not set and booti is called for an address ouside RAM (i. e. QSPI NOR flash), we should honor that and not try to force relocation in a bogus fashion. Signed-off-by: Vitaly Wool Reviewed-by: Leo Yu-Chi Liang --- diff --git a/arch/riscv/lib/image.c b/arch/riscv/lib/image.c index 47f2edcf7f..a65a5b8d17 100644 --- a/arch/riscv/lib/image.c +++ b/arch/riscv/lib/image.c @@ -50,7 +50,12 @@ int booti_setup(ulong image, ulong *relocated_addr, ulong *size, return -EINVAL; } *size = lhdr->image_size; - *relocated_addr = gd->ram_base + lhdr->text_offset; + if (force_reloc || + (gd->ram_base <= image && image < gd->ram_base + gd->ram_size)) { + *relocated_addr = gd->ram_base + lhdr->text_offset; + } else { + *relocated_addr = image; + } unmap_sysmem(lhdr);