On Sun, 8 Jun 2025 at 10:54, Heinrich Schuchardt <heinrich.schucha...@canonical.com> wrote: > > Provide unit tests for efi_alloc_aligned_pages() and > efi_allocate_pages(). > > Signed-off-by: Heinrich Schuchardt <heinrich.schucha...@canonical.com>
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org> > --- > v2: > no change > --- > test/lib/Makefile | 2 +- > test/lib/efi_memory.c | 63 +++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 64 insertions(+), 1 deletion(-) > create mode 100644 test/lib/efi_memory.c > > diff --git a/test/lib/Makefile b/test/lib/Makefile > index ff4ff63270d..35b40b584c4 100644 > --- a/test/lib/Makefile > +++ b/test/lib/Makefile > @@ -8,7 +8,7 @@ obj-$(CONFIG_$(PHASE_)UT_COMPRESSION) += compression.o > ifeq ($(CONFIG_XPL_BUILD),) > obj-y += abuf.o > obj-y += alist.o > -obj-$(CONFIG_EFI_LOADER) += efi_device_path.o > +obj-$(CONFIG_EFI_LOADER) += efi_device_path.o efi_memory.o > obj-$(CONFIG_EFI_SECURE_BOOT) += efi_image_region.o > obj-y += hexdump.o > obj-$(CONFIG_SANDBOX) += kconfig.o > diff --git a/test/lib/efi_memory.c b/test/lib/efi_memory.c > new file mode 100644 > index 00000000000..d2e1ab6b4a3 > --- /dev/null > +++ b/test/lib/efi_memory.c > @@ -0,0 +1,63 @@ > +// SPDX-License-Identifier: GPL-2.0-or-later > +/* > + * Test memory functions > + * > + * Copyright (c) 2025 Heinrich Schuchardt <xypron.g...@gmx.de> > + */ > + > +#include <efi_loader.h> > +#include <test/lib.h> > +#include <test/test.h> > +#include <test/ut.h> > + > +static int lib_test_efi_alloc_aligned_pages(struct unit_test_state *uts) > +{ > + efi_status_t ret; > + > + void *addr; > + unsigned long align = 0x400000; > + > + addr = efi_alloc_aligned_pages(4096, EFI_PERSISTENT_MEMORY_TYPE, > + EFI_PAGE_SIZE); > + ut_asserteq_ptr(NULL, addr); > + > + addr = efi_alloc_aligned_pages(4096, 0x6FFFFFFF, EFI_PAGE_SIZE); > + ut_asserteq_ptr(NULL, addr); > + > + align = 0x200; > + addr = efi_alloc_aligned_pages(4096, EFI_ACPI_RECLAIM_MEMORY, align); > + ut_assertnonnull(addr); > + ut_asserteq_64(0, (uintptr_t)addr & (align - 1)); > + > + ret = efi_free_pages((uintptr_t) addr, 1); > + ut_asserteq_64(ret, EFI_SUCCESS); > + > + align = 0x400000; > + addr = efi_alloc_aligned_pages(4096, EFI_ACPI_RECLAIM_MEMORY, align); > + ut_assertnonnull(addr); > + ut_asserteq_64(0, (uintptr_t)addr & (align - 1)); > + > + ret = efi_free_pages((uintptr_t) addr, 1); > + ut_asserteq_64(ret, EFI_SUCCESS); > + > + return 0; > +} > +LIB_TEST(lib_test_efi_alloc_aligned_pages, 0); > + > +static int lib_test_efi_allocate_pages(struct unit_test_state *uts) > +{ > + efi_status_t ret; > + u64 memory; > + > + ret = efi_allocate_pages(EFI_ALLOCATE_ANY_PAGES, > + EFI_ACPI_RECLAIM_MEMORY, > + 1, &memory); > + ut_asserteq_64(ret, EFI_SUCCESS); > + ut_asserteq_64(0, memory & EFI_PAGE_MASK); > + > + ret = efi_free_pages(memory, 1); > + ut_asserteq_64(ret, EFI_SUCCESS); > + > + return 0; > +} > +LIB_TEST(lib_test_efi_allocate_pages, 0); > -- > 2.48.1 >