lmb: Set correct lmb flags for EFI memory map entries
When adding reserved memory areas from the EFI memory map set the NOMAP flag when applicable. When this isn't done adding "no-map" flagged entries from the fdt after receiving the same from the EFI memory map fails due to non-matching flags. Signed-off-by: Sjoerd Simons <sjoerd@collabora.com>
This commit is contained in:
parent
007ae5d108
commit
c5279ea1c3
1 changed files with 8 additions and 5 deletions
13
lib/lmb.c
13
lib/lmb.c
|
@ -175,11 +175,14 @@ static __maybe_unused int efi_lmb_reserve(struct lmb *lmb)
|
|||
return 1;
|
||||
|
||||
for (i = 0, map = memmap; i < map_size / sizeof(*map); ++map, ++i) {
|
||||
if (map->type != EFI_CONVENTIONAL_MEMORY)
|
||||
lmb_reserve(lmb,
|
||||
map_to_sysmem((void *)(uintptr_t)
|
||||
map->physical_start),
|
||||
map->num_pages * EFI_PAGE_SIZE);
|
||||
if (map->type != EFI_CONVENTIONAL_MEMORY) {
|
||||
lmb_reserve_flags(lmb,
|
||||
map_to_sysmem((void *)(uintptr_t)
|
||||
map->physical_start),
|
||||
map->num_pages * EFI_PAGE_SIZE,
|
||||
map->type == EFI_RESERVED_MEMORY_TYPE
|
||||
? LMB_NOMAP : LMB_NONE);
|
||||
}
|
||||
}
|
||||
efi_free_pool(memmap);
|
||||
|
||||
|
|
Loading…
Reference in a new issue