summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunihiko Hayashi <hayashi.kunihiko@socionext.com>2023-06-20 13:50:48 +0300
committerTom Rini <trini@konsulko.com>2023-07-14 22:21:08 +0300
commit874bf6e0e25389a9d43b5844855342595d58648e (patch)
tree4a0675b08ef9ce1335bb9e8468646ba9c245bf2b
parentef402577c2e3af6c3b967b2e4499b3796a37fde5 (diff)
downloadu-boot-874bf6e0e25389a9d43b5844855342595d58648e.tar.xz
board_f: Relocate fdt even if GD_FLG_SKIP_RELOC is set
In case of OF_SEPARATE (!OF_EMBED), the devicetree blob is placed after _end, and fdt_find_separate() always returns _end. There is a .bss section after _end and the section is cleared before relocation. When GD_FLG_SKIP_RELOC is set, relocation is skipped, so the blob is still in .bss section, but will be cleared. As a result, the devicetree become invalid. To avoid this issue, should relocate it regardless of GD_FLG_SKIP_RELOC in reloc_fdt(). Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com> Reviewed-by: Simon Glass <sjg@chromium.org>
-rw-r--r--common/board_f.c2
1 files changed, 0 insertions, 2 deletions
diff --git a/common/board_f.c b/common/board_f.c
index 1688e27071..334d04af19 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -633,8 +633,6 @@ static int init_post(void)
static int reloc_fdt(void)
{
if (!IS_ENABLED(CONFIG_OF_EMBED)) {
- if (gd->flags & GD_FLG_SKIP_RELOC)
- return 0;
if (gd->new_fdt) {
memcpy(gd->new_fdt, gd->fdt_blob,
fdt_totalsize(gd->fdt_blob));