View | Details | Raw Unified | Return to bug 206459 | Differences between
and this patch

Collapse All | Expand All

(-)a/arch/x86/platform/efi/efi.c (+24 lines)
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
}

Return to bug 206459