Lines 303-308
static void __init efi_clean_memmap(void)
Link Here
|
303 |
} |
303 |
} |
304 |
} |
304 |
} |
305 |
|
305 |
|
|
|
306 |
/* |
307 |
* On EFI systems, a bootloader or EFI stub converts the EFI memory map to |
308 |
* the E820 map consumed by Linux, typically making E820_TYPE_RESERVED |
309 |
* entries for EFI_MEMORY_MAPPED_IO regions. |
310 |
*/ |
311 |
static void __init efi_clean_e820(void) |
312 |
{ |
313 |
efi_memory_desc_t *md; |
314 |
u64 size, start, end; |
315 |
|
316 |
for_each_efi_memory_desc(md) { |
317 |
if (md->type == EFI_MEMORY_MAPPED_IO) { |
318 |
size = md->num_pages << EFI_PAGE_SHIFT; |
319 |
start = md->phys_addr; |
320 |
end = start + size - 1; |
321 |
pr_info("removing MMIO range=[0x%016llx-0x%016llx] (%lluMB) from E820 reservations\n", |
322 |
start, end, size >> 20); |
323 |
e820__range_remove(start, size, E820_TYPE_RESERVED, 1); |
324 |
} |
325 |
} |
326 |
} |
327 |
|
306 |
void __init efi_print_memmap(void) |
328 |
void __init efi_print_memmap(void) |
307 |
{ |
329 |
{ |
308 |
efi_memory_desc_t *md; |
330 |
efi_memory_desc_t *md; |
Lines 474-479
void __init efi_init(void)
Link Here
|
474 |
set_bit(EFI_RUNTIME_SERVICES, &efi.flags); |
496 |
set_bit(EFI_RUNTIME_SERVICES, &efi.flags); |
475 |
efi_clean_memmap(); |
497 |
efi_clean_memmap(); |
476 |
|
498 |
|
|
|
499 |
efi_clean_e820(); |
500 |
|
477 |
if (efi_enabled(EFI_DBG)) |
501 |
if (efi_enabled(EFI_DBG)) |
478 |
efi_print_memmap(); |
502 |
efi_print_memmap(); |
479 |
} |
503 |
} |