[PATCH] x86: reserve efi map itself in e820 map Signed-off-by: Yinghai Lu diff --git a/arch/x86/kernel/efi.c b/arch/x86/kernel/efi.c index d5c7fcd..f0869bb 100644 --- a/arch/x86/kernel/efi.c +++ b/arch/x86/kernel/efi.c @@ -235,6 +235,8 @@ static void __init add_efi_memmap(void) e820_type = E820_RESERVED; e820_add_region(start, size, e820_type); } + e820_add_region(memmap.phys_map, memmap.nr_map * memmap.desc_size, + E820_RESERVED); sanitize_e820_map(e820.map, ARRAY_SIZE(e820.map), &e820.nr_map); } diff --git a/arch/x86/kernel/setup_64.c b/arch/x86/kernel/setup_64.c index de2645e..5fa241e 100644 --- a/arch/x86/kernel/setup_64.c +++ b/arch/x86/kernel/setup_64.c @@ -370,6 +370,9 @@ void __init setup_arch(char **cmdline_p) early_gart_iommu_check(); + if (efi_enabled) + efi_init(); + e820_register_active_regions(0, 0, -1UL); /* * partially used pages are not usable - thus @@ -392,8 +395,6 @@ void __init setup_arch(char **cmdline_p) check_efer(); max_pfn_mapped = init_memory_mapping(0, (end_pfn << PAGE_SHIFT)); - if (efi_enabled) - efi_init(); vsmp_init();