efi_loader: round the memory area in efi_add_memory_map()
[oweals/u-boot.git] / cmd / bootefi.c
index 54b4b8f98455a8af7ccb60abcf1ae8074d45d032..9849eb4f9950da0d0c008d3ec1b14760cfcc71bf 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");
@@ -151,14 +151,10 @@ done:
 
 static void efi_reserve_memory(u64 addr, u64 size)
 {
-       u64 pages;
-
        /* Convert from sandbox address space. */
        addr = (uintptr_t)map_sysmem(addr, 0);
-       pages = efi_size_in_pages(size + (addr & EFI_PAGE_MASK));
-       addr &= ~EFI_PAGE_MASK;
-       if (efi_add_memory_map(addr, pages, EFI_RESERVED_MEMORY_TYPE,
-                              false) != EFI_SUCCESS)
+       if (efi_add_memory_map(addr, size,
+                              EFI_RESERVED_MEMORY_TYPE) != EFI_SUCCESS)
                printf("Reserved memory mapping failed addr %llx size %llx\n",
                       addr, size);
 }