efi_loader: carving out memory reservations
The "Devicetree Specification 0.2" does not prescribe that memory reservations must be EFI page aligned. So let's not make such an assumption in our code. Do not carve out the pages for the device tree. This memory area is already marked as EFI_RUNTIME_SERVICES_DATA. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
4574d1b3d1
commit
23fd84b3ec
@ -275,7 +275,16 @@ static void efi_carve_out_dt_rsv(void *fdt)
|
||||
if (fdt_get_mem_rsv(fdt, i, &addr, &size) != 0)
|
||||
continue;
|
||||
|
||||
pages = ALIGN(size, EFI_PAGE_SIZE) >> EFI_PAGE_SHIFT;
|
||||
/*
|
||||
* Do not carve out the device tree. It is already marked as
|
||||
* EFI_RUNTIME_SERVICES_DATA
|
||||
*/
|
||||
if (addr == (uintptr_t)fdt)
|
||||
continue;
|
||||
|
||||
pages = ALIGN(size + (addr & EFI_PAGE_MASK), EFI_PAGE_SIZE) >>
|
||||
EFI_PAGE_SHIFT;
|
||||
addr &= ~EFI_PAGE_MASK;
|
||||
if (!efi_add_memory_map(addr, pages, EFI_RESERVED_MEMORY_TYPE,
|
||||
false))
|
||||
printf("FDT memrsv map %d: Failed to add to map\n", i);
|
||||
|
Loading…
Reference in New Issue
Block a user