[PATCH] cmd: add resize for FDT in bootelf

In some FDTs, there is not enough free memory to add nodes, so this operation fails.
Signed-off-by: Maxim Moskalets maximmosk4@gmail.com --- cmd/elf.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/cmd/elf.c b/cmd/elf.c index 32b7462f92..673c6c3051 100644 --- a/cmd/elf.c +++ b/cmd/elf.c @@ -68,6 +68,8 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) log_debug("Setting up FDT at 0x%08lx ...\n", fdt_addr); flush();
+ fdt_set_totalsize((void *)fdt_addr, + fdt_totalsize(fdt_addr) + CONFIG_SYS_FDT_PAD); if (image_setup_libfdt(&img, (void *)fdt_addr, NULL)) return 1; }

Hi Maxim,
On Fri, 28 Jun 2024 at 09:34, Maxim Moskalets maximmosk4@gmail.com wrote:
In some FDTs, there is not enough free memory to add nodes, so this operation fails.
Signed-off-by: Maxim Moskalets maximmosk4@gmail.com
cmd/elf.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/cmd/elf.c b/cmd/elf.c index 32b7462f92..673c6c3051 100644 --- a/cmd/elf.c +++ b/cmd/elf.c @@ -68,6 +68,8 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) log_debug("Setting up FDT at 0x%08lx ...\n", fdt_addr); flush();
fdt_set_totalsize((void *)fdt_addr,
fdt_totalsize(fdt_addr) + CONFIG_SYS_FDT_PAD); if (image_setup_libfdt(&img, (void *)fdt_addr, NULL)) return 1; }
-- 2.39.2
Reviewed-by: Simon Glass sjg@chromium.org
Would you mind adding some docs for this comment in doc/usage/cmd/elf.rst ?
You can also use the 'fdt addr <addr> <size>' to expand the FDT.
Regards, Simon

Hi Simon,
On 29.06.2024 09:56, Simon Glass wrote:
Hi Maxim,
On Fri, 28 Jun 2024 at 09:34, Maxim Moskalets maximmosk4@gmail.com wrote:
In some FDTs, there is not enough free memory to add nodes, so this operation fails.
Signed-off-by: Maxim Moskalets maximmosk4@gmail.com
cmd/elf.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/cmd/elf.c b/cmd/elf.c index 32b7462f92..673c6c3051 100644 --- a/cmd/elf.c +++ b/cmd/elf.c @@ -68,6 +68,8 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) log_debug("Setting up FDT at 0x%08lx ...\n", fdt_addr); flush();
fdt_set_totalsize((void *)fdt_addr,
fdt_totalsize(fdt_addr) + CONFIG_SYS_FDT_PAD); if (image_setup_libfdt(&img, (void *)fdt_addr, NULL)) return 1; }
-- 2.39.2
Reviewed-by: Simon Glass sjg@chromium.org
Would you mind adding some docs for this comment in doc/usage/cmd/elf.rst ?
I added the documentation, but since it's not relevant to this patch, it's in the [PATCH] doc: add bootelf command documentation
Regards, Maxim
You can also use the 'fdt addr <addr> <size>' to expand the FDT.
Regards, Simon
participants (4)
-
Maxim M. Moskalets
-
Maxim Moskalets
-
Simon Glass
-
Tom Rini