efi_loader: update virtual address in efi_mem_carve_out
Handle virtual address in efi_mem_carve_out() function when a new region is created to avoid issue in EFI memory map. Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com> At boottime physical and virtual addressed have to be the same. This allowed to simplify the proposed logic. Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
74f5baa28b
commit
9631fa0fd1
@ -193,6 +193,7 @@ static s64 efi_mem_carve_out(struct efi_mem_list *map,
|
||||
free(map);
|
||||
} else {
|
||||
map->desc.physical_start = carve_end;
|
||||
map->desc.virtual_start = carve_end;
|
||||
map->desc.num_pages = (map_end - carve_end)
|
||||
>> EFI_PAGE_SHIFT;
|
||||
}
|
||||
@ -211,6 +212,7 @@ static s64 efi_mem_carve_out(struct efi_mem_list *map,
|
||||
newmap = calloc(1, sizeof(*newmap));
|
||||
newmap->desc = map->desc;
|
||||
newmap->desc.physical_start = carve_start;
|
||||
newmap->desc.virtual_start = carve_start;
|
||||
newmap->desc.num_pages = (map_end - carve_start) >> EFI_PAGE_SHIFT;
|
||||
/* Insert before current entry (descending address order) */
|
||||
list_add_tail(&newmap->link, &map->link);
|
||||
|
Loading…
Reference in New Issue
Block a user