efi: sandbox: Adjust memory usage for sandbox
authorSimon Glass <sjg@chromium.org>
Mon, 18 Jun 2018 15:23:12 +0000 (17:23 +0200)
committerAlexander Graf <agraf@suse.de>
Wed, 25 Jul 2018 12:57:44 +0000 (14:57 +0200)
With sandbox the U-Boot code is not mapped into the sandbox memory range
so does not need to be excluded when allocating EFI memory. Update the EFI
memory init code to take account of that.

Signed-off-by: Simon Glass <sjg@chromium.org>
[agraf: Remove map_sysmem() call and header reference]
Signed-off-by: Alexander Graf <agraf@suse.de>
lib/efi_loader/efi_memory.c

index ce29bcc6a3030d9260bb514c712908a62cd2ef34..d533aeeab730a453c7c830eabab7dac091d6ba6a 100644 (file)
@@ -496,14 +496,13 @@ __weak void efi_add_known_memory(void)
        }
 }
 
-int efi_memory_init(void)
+/* Add memory regions for U-Boot's memory and for the runtime services code */
+static void add_u_boot_and_runtime(void)
 {
        unsigned long runtime_start, runtime_end, runtime_pages;
        unsigned long uboot_start, uboot_pages;
        unsigned long uboot_stack_size = 16 * 1024 * 1024;
 
-       efi_add_known_memory();
-
        /* Add U-Boot */
        uboot_start = (gd->start_addr_sp - uboot_stack_size) & ~EFI_PAGE_MASK;
        uboot_pages = (gd->ram_top - uboot_start) >> EFI_PAGE_SHIFT;
@@ -516,6 +515,14 @@ int efi_memory_init(void)
        runtime_pages = (runtime_end - runtime_start) >> EFI_PAGE_SHIFT;
        efi_add_memory_map(runtime_start, runtime_pages,
                           EFI_RUNTIME_SERVICES_CODE, false);
+}
+
+int efi_memory_init(void)
+{
+       efi_add_known_memory();
+
+       if (!IS_ENABLED(CONFIG_SANDBOX))
+               add_u_boot_and_runtime();
 
 #ifdef CONFIG_EFI_LOADER_BOUNCE_BUFFER
        /* Request a 32bit 64MB bounce buffer region */