[U-Boot] [PATCH 3/9] efi_loader: memory reservation for fdt

Heinrich Schuchardt xypron.glpk at gmx.de
Sat Nov 10 19:27:21 UTC 2018


In copy_fdt() we allocate EFI pages for the fdt plus extra 12 KiB as
EFI_RUNTIME_SERVICES_DATA. Afterwards in efi_install_fdt() we overwrite
part of this memory allocation by marking it as EFI_BOOT_SERVICES_DATA.

Remove the code marking the fdt as EFI_BOOT_SERVICES_DATA.

Cf. commit 17ff6f02f5ad ("efi_loader: store DT in EFI_RUNTIME_SERVICES_DATA
memory")

Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
---
 cmd/bootefi.c | 21 +++++----------------
 1 file changed, 5 insertions(+), 16 deletions(-)

diff --git a/cmd/bootefi.c b/cmd/bootefi.c
index e16ed4adba9..f2950817a13 100644
--- a/cmd/bootefi.c
+++ b/cmd/bootefi.c
@@ -157,12 +157,11 @@ static void set_load_options(struct efi_loaded_image *loaded_image_info,
  * An additional 12KB is added to the space in case the device tree needs to be
  * expanded later with fdt_open_into().
  *
- * @fdt_addr: On entry, address of start of FDT. On exit, address of relocated
- *	FDT start
- * @fdt_sizep: Returns new size of FDT, including
- * @return new relocated address of FDT
+ * @fdt_addr:	On entry, address of start of FDT. On exit, address of relocated
+ *		FDT start
+ * Return:	status code
  */
-static efi_status_t copy_fdt(ulong *fdt_addrp, ulong *fdt_sizep)
+static efi_status_t copy_fdt(ulong *fdt_addrp)
 {
 	unsigned long fdt_ram_start = -1L, fdt_pages;
 	efi_status_t ret = 0;
@@ -214,7 +213,6 @@ static efi_status_t copy_fdt(ulong *fdt_addrp, ulong *fdt_sizep)
 	fdt_set_totalsize(new_fdt, fdt_size);
 
 	*fdt_addrp = new_fdt_addr;
-	*fdt_sizep = fdt_size;
 done:
 	return ret;
 }
@@ -292,7 +290,6 @@ static void efi_carve_out_dt_rsv(void *fdt)
 static efi_status_t efi_install_fdt(ulong fdt_addr)
 {
 	bootm_headers_t img = { 0 };
-	ulong fdt_pages, fdt_size, fdt_start;
 	efi_status_t ret;
 	void *fdt;
 
@@ -303,13 +300,12 @@ static efi_status_t efi_install_fdt(ulong fdt_addr)
 	}
 
 	/* Prepare fdt for payload */
-	ret = copy_fdt(&fdt_addr, &fdt_size);
+	ret = copy_fdt(&fdt_addr);
 	if (ret)
 		return ret;
 
 	unmap_sysmem(fdt);
 	fdt = map_sysmem(fdt_addr, 0);
-	fdt_size = fdt_totalsize(fdt);
 	if (image_setup_libfdt(&img, fdt, 0, NULL)) {
 		printf("ERROR: failed to process device tree\n");
 		return EFI_LOAD_ERROR;
@@ -322,13 +318,6 @@ static efi_status_t efi_install_fdt(ulong fdt_addr)
 	if (ret != EFI_SUCCESS)
 		return EFI_OUT_OF_RESOURCES;
 
-	/* And reserve the space in the memory map */
-	fdt_start = fdt_addr;
-	fdt_pages = fdt_size >> EFI_PAGE_SHIFT;
-
-	ret = efi_add_memory_map(fdt_start, fdt_pages,
-				 EFI_BOOT_SERVICES_DATA, true);
-
 	return ret;
 }
 
-- 
2.19.1



More information about the U-Boot mailing list