efi_loader: put device tree into EfiACPIReclaimMemory
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Wed, 6 May 2020 18:32:31 +0000 (20:32 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 7 May 2020 16:23:16 +0000 (18:23 +0200)
According to the UEFI spec ACPI tables should be placed in
EfiACPIReclaimMemory. Let's do the same with the device tree.

Suggested-by: Ard Biesheuvel <ardb@kernel.org>
Cc: Grant Likely <grant.likely@arm.com>
Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
cmd/bootefi.c
lib/efi_selftest/efi_selftest_memory.c

index 54b4b8f..06573b1 100644 (file)
@@ -127,13 +127,13 @@ static efi_status_t copy_fdt(void **fdtp)
        new_fdt_addr = (uintptr_t)map_sysmem(fdt_ram_start + 0x7f00000 +
                                             fdt_size, 0);
        ret = efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
-                                EFI_BOOT_SERVICES_DATA, fdt_pages,
+                                EFI_ACPI_RECLAIM_MEMORY, fdt_pages,
                                 &new_fdt_addr);
        if (ret != EFI_SUCCESS) {
                /* If we can't put it there, put it somewhere */
                new_fdt_addr = (ulong)memalign(EFI_PAGE_SIZE, fdt_size);
                ret = efi_allocate_pages(EFI_ALLOCATE_MAX_ADDRESS,
-                                        EFI_BOOT_SERVICES_DATA, fdt_pages,
+                                        EFI_ACPI_RECLAIM_MEMORY, fdt_pages,
                                         &new_fdt_addr);
                if (ret != EFI_SUCCESS) {
                        printf("ERROR: Failed to reserve space for FDT\n");
index e71732d..4d32a28 100644 (file)
@@ -176,9 +176,9 @@ static int execute(void)
        /* Check memory reservation for the device tree */
        if (fdt_addr &&
            find_in_memory_map(map_size, memory_map, desc_size, fdt_addr,
-                              EFI_BOOT_SERVICES_DATA) != EFI_ST_SUCCESS) {
+                              EFI_ACPI_RECLAIM_MEMORY) != EFI_ST_SUCCESS) {
                efi_st_error
-                       ("Device tree not marked as boot services data\n");
+                       ("Device tree not marked as ACPI reclaim memory\n");
                return EFI_ST_FAILURE;
        }
        return EFI_ST_SUCCESS;