On Sun, Feb 11, 2024 at 11:42:48PM +0300, Maxim Moskalets wrote: > diff --git a/cmd/elf.c b/cmd/elf.c > index b7b9f506a5..4d365771eb 100644 > --- a/cmd/elf.c > +++ b/cmd/elf.c > @@ -38,6 +38,8 @@ static unsigned long do_bootelf_exec(ulong (*entry)(int, > char * const[]), > /* Interpreter command to boot an arbitrary ELF image from memory */ > int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) > { > + unsigned long fdt_addr; > + struct bootm_headers img = { 0 }; > unsigned long addr; /* Address of the ELF image */ > unsigned long rc; /* Return value from user code */ > char *sload = NULL; > @@ -68,6 +70,18 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, > char *const argv[]) > else > addr = load_elf_image_shdr(addr); > > + if (!env_get_elf_need_fdt()) {
Should the ! be there? This looks reversed... > + if (argc >= 1 && strict_strtoul(argv[0], 16, &fdt_addr) != > -EINVAL) { > + printf("Got FDT at 0x%08lx ...\n", fdt_addr); > + > + if (image_setup_libfdt(&img, (void *)fdt_addr, 0, > NULL)) { > + printf("ERROR: Failed to process device > tree\n"); > + return 1; > + } > + } > + } > + > + > if (!env_get_autostart()) > return rcode; There are a few style nits that I have with this change like the double blank line at the end. Try running scripts/checkpatch.pl on your patch. We could also combine the conditions and pull the code in a tab. Also I recognize that you just copied the != -EINVAL from a few lines earlier and it does work, but it's better to check for == 0 instead. if (env_get_elf_need_fdt() && argc >= 1 && strict_strtoul(argv[0], 16, &fdt_addr) == 0) { printf("Got FDT at 0x%08lx ...\n", fdt_addr); if (image_setup_libfdt(&img, (void *)fdt_addr, 0, NULL)) { printf("ERROR: Failed to process device tree\n"); return 1; } } regards, dan carpenter