For kexec/kdump kernel efi runtime mappings are saved, printing original whole memmap ranges does not make sense anymore. So introduce a new function to only print runtime maps in case kexec/kdump kernel is used. Signed-off-by: Dave Young --- arch/x86/platform/efi/efi.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) --- efi.orig/arch/x86/platform/efi/efi.c +++ efi/arch/x86/platform/efi/efi.c @@ -430,6 +430,24 @@ int __init efi_memblock_x86_reserve_rang return 0; } +/* for kexec kernel runtime maps are passed in setup_data */ +static void __init print_saved_runtime_map(void) +{ +#ifdef EFI_DEBUG + int i; + efi_memory_desc_t *md; + + for (i = 0; i < nr_efi_runtime_map; i++) { + md = esdata->map + i; + pr_info("mem%02u: type=%u, attr=0x%llx, " + "range=[0x%016llx-0x%016llx) (%lluMB)\n", + i, md->type, md->attribute, md->phys_addr, + md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT), + (md->num_pages >> (20 - EFI_PAGE_SHIFT))); + } +#endif /* EFI_DEBUG */ +} + static void __init print_efi_memmap(void) { #ifdef EFI_DEBUG @@ -782,7 +800,10 @@ void __init efi_init(void) x86_platform.set_wallclock = efi_set_rtc_mmss; } #endif - print_efi_memmap(); + if (esdata) + print_saved_runtime_map(); + else + print_efi_memmap(); } void __init efi_late_init(void)