]> xenbits.xensource.com Git - people/julieng/linux-arm.git/commitdiff
arm64/efi: ignore DT memreserve entries instead of removing them
authorArd Biesheuvel <ard.biesheuvel@linaro.org>
Sun, 10 May 2015 06:41:31 +0000 (08:41 +0200)
committerJulien Grall <julien.grall@citrix.com>
Mon, 28 Sep 2015 11:05:15 +0000 (12:05 +0100)
Now that the reservation of the FDT image itself is split off, we
can make the DT scanning of memreserves conditional on whether we
booted via UEFI and have its memory map available. This allows us
to drop deletion of these memreserves in the stub. It also fixes
the issue where the /reserved-memory/ node (which offers another
way of reserving memory ranges) was not being ignored under UEFI.

Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Signed-off-by: Robert Richter <rrichter@cavium.com>
Signed-off-by: Vadim Lomovtsev <Vadim.Lomovtsev@caviumnetworks.com>
arch/arm64/mm/init.c
drivers/firmware/efi/libstub/fdt.c

index fd57ca5a4922de2ab72970e8b265a084ce504c98..d659618d0a51f870ed85b144a87b3d0e4aed6688 100644 (file)
@@ -179,7 +179,8 @@ void __init arm64_memblock_init(void)
                memblock_reserve(__virt_to_phys(initrd_start), initrd_end - initrd_start);
 #endif
 
-       early_init_fdt_scan_reserved_mem();
+       if (!efi_enabled(EFI_MEMMAP))
+               early_init_fdt_scan_reserved_mem();
 
        /* 4GB maximum for 32-bit only capable devices */
        if (IS_ENABLED(CONFIG_ZONE_DMA))
index 343e7992bd8f3df1e3691f7cd037c9c3b1f80442..a7e87cd582f2bd96a5de6fe73c0ae202484b568b 100644 (file)
@@ -24,8 +24,7 @@ efi_status_t update_fdt(efi_system_table_t *sys_table, void *orig_fdt,
                        unsigned long map_size, unsigned long desc_size,
                        u32 desc_ver)
 {
-       int node, num_rsv;
-       int status;
+       int node, status;
        u32 fdt_val32;
        u64 fdt_val64;
 
@@ -53,14 +52,6 @@ efi_status_t update_fdt(efi_system_table_t *sys_table, void *orig_fdt,
        if (status != 0)
                goto fdt_set_fail;
 
-       /*
-        * Delete all memory reserve map entries. When booting via UEFI,
-        * kernel will use the UEFI memory map to find reserved regions.
-        */
-       num_rsv = fdt_num_mem_rsv(fdt);
-       while (num_rsv-- > 0)
-               fdt_del_mem_rsv(fdt, num_rsv);
-
        node = fdt_subnode_offset(fdt, 0, "chosen");
        if (node < 0) {
                node = fdt_add_subnode(fdt, 0, "chosen");