| // SPDX-License-Identifier: GPL-2.0-or-later | |
| /* | |
| * Test memory functions | |
| * | |
| * Copyright (c) 2025 Heinrich Schuchardt <xypron.glpk@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); |