On Wed, 13 May 2026 at 23:49, <[email protected]> wrote: > > From: Randolph Sapp <[email protected]> > > Add a image_fdt suite and a check for boot_fdt_add_mem_rsv_regions. This > will ensure the user is properly informed of any reservation failures. > It will also validate that reservations are cleaned up correctly when > switching FDTs. > > Signed-off-by: Randolph Sapp <[email protected]> > ---
Acked-by: Ilias Apalodimas <[email protected]> > > v8: > - Rework test_boot_fdt_add_mem_rsv_regions to mitigate lingering state > > test/boot/Makefile | 1 + > test/boot/image_fdt.c | 70 +++++++++++++++++++++++++++++++++++++ > test/cmd_ut.c | 2 ++ > test/py/tests/test_suite.py | 2 +- > 4 files changed, 74 insertions(+), 1 deletion(-) > create mode 100644 test/boot/image_fdt.c > > diff --git a/test/boot/Makefile b/test/boot/Makefile > index 89538d4f0a6..640af6593cd 100644 > --- a/test/boot/Makefile > +++ b/test/boot/Makefile > @@ -14,6 +14,7 @@ endif > > ifdef CONFIG_SANDBOX > obj-$(CONFIG_$(PHASE_)CMDLINE) += bootm.o > +obj-$(CONFIG_$(PHASE_)OF_LIBFDT) += image_fdt.o > endif > obj-$(CONFIG_MEASURED_BOOT) += measurement.o > > diff --git a/test/boot/image_fdt.c b/test/boot/image_fdt.c > new file mode 100644 > index 00000000000..778951c1290 > --- /dev/null > +++ b/test/boot/image_fdt.c > @@ -0,0 +1,70 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * Copyright (C) 2026 Texas Instruments Incorporated - https://www.ti.com/ > + */ > + > +#include <config.h> > + > +#include <fdt_support.h> > +#include <image.h> > +#include <lmb.h> > +#include <malloc.h> > + > +#include <asm/global_data.h> > + > +#include <test/test.h> > +#include <test/ut.h> > + > +#define IMAGE_FDT_TEST(_name, _flags) UNIT_TEST(_name, _flags, image_fdt) > + > +DECLARE_GLOBAL_DATA_PTR; > + > +static int test_boot_fdt_add_mem_rsv_regions(struct unit_test_state *uts) > +{ > + phys_addr_t start = CFG_SYS_SDRAM_BASE + 0x100000; > + const void *old_blob = gd->fdt_blob; > + int ret = CMD_RET_FAILURE; > + ulong fdt_sz; > + int nodeoffset; > + void *new_blob; > + > + /* Default reservation should exist */ > + ut_asserteq(1, lmb_is_reserved_flags(start, LMB_NOMAP)); > + > + /* Attempting to re-reserve should warn the user */ > + boot_fdt_add_mem_rsv_regions(gd->fdt_blob); > + ut_assert_nextlinen("ERROR: reserving"); > + ut_assert_console_end(); > + > + /* Loading a new_blob device tree should be allowed */ > + fdt_sz = fdt_totalsize(gd->fdt_blob); > + new_blob = malloc(fdt_sz); > + ut_assertok_ptr(new_blob); > + memcpy(new_blob, gd->fdt_blob, fdt_sz); > + > + nodeoffset = fdt_path_offset(new_blob, "/reserved-memory"); > + if (nodeoffset < 0) > + goto free_blob; > + > + if (fdt_del_node(new_blob, nodeoffset)) > + goto free_blob; > + > + boot_fdt_add_mem_rsv_regions(new_blob); > + gd->fdt_blob = new_blob; > + > + if (ut_assert_console_end()) > + goto switch_fdt; > + > + /* Reservation should not exist now */ > + if (!lmb_is_reserved_flags(start, LMB_NOMAP)) > + ret = 0; > + > + /* Cleanup */ > +switch_fdt: > + boot_fdt_add_mem_rsv_regions(old_blob); > + gd->fdt_blob = old_blob; > +free_blob: > + free(new_blob); > + return ret; > +} > +IMAGE_FDT_TEST(test_boot_fdt_add_mem_rsv_regions, UTF_LIVE_TREE | > UTF_CONSOLE); > diff --git a/test/cmd_ut.c b/test/cmd_ut.c > index 44e5fdfdaa6..363ed4eab30 100644 > --- a/test/cmd_ut.c > +++ b/test/cmd_ut.c > @@ -61,6 +61,7 @@ SUITE_DECL(fdt); > SUITE_DECL(fdt_overlay); > SUITE_DECL(font); > SUITE_DECL(hush); > +SUITE_DECL(image_fdt); > SUITE_DECL(lib); > SUITE_DECL(loadm); > SUITE_DECL(log); > @@ -88,6 +89,7 @@ static struct suite suites[] = { > SUITE(fdt_overlay, "device tree overlays"), > SUITE(font, "font command"), > SUITE(hush, "hush behaviour"), > + SUITE(image_fdt, "image fdt parsing"), > SUITE(lib, "library functions"), > SUITE(loadm, "loadm command parameters and loading memory blob"), > SUITE(log, "logging functions"), > diff --git a/test/py/tests/test_suite.py b/test/py/tests/test_suite.py > index 7fe9a90dfd3..08285f12a5f 100644 > --- a/test/py/tests/test_suite.py > +++ b/test/py/tests/test_suite.py > @@ -8,7 +8,7 @@ import re > EXPECTED_SUITES = [ > 'addrmap', 'bdinfo', 'bloblist', 'bootm', 'bootstd', > 'cmd', 'common', 'dm', 'env', 'exit', 'fdt_overlay', > - 'fdt', 'font', 'hush', 'lib', > + 'fdt', 'font', 'hush', 'image_fdt', 'lib', > 'loadm', 'log', 'mbr', 'measurement', 'mem', > 'pci_mps', 'setexpr', 'upl', > ] > -- > 2.54.0 >

