summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/efi.c
diff options
context:
space:
mode:
authorHuang, Ying <ying.huang@intel.com>2008-01-30 13:34:10 +0100
committerIngo Molnar <mingo@elte.hu>2008-01-30 13:34:10 +0100
commita3828064be4ed8e95907d3943e7af13cb709694d (patch)
treeb5458f61681a0bf4c3640f28c51ccd0a24c0c6b5 /arch/x86/kernel/efi.c
parentx86: use reboot_type on EFI 32 (diff)
downloadlinux-a3828064be4ed8e95907d3943e7af13cb709694d.tar.xz
linux-a3828064be4ed8e95907d3943e7af13cb709694d.zip
x86: fixes some bugs about EFI memory map handling
This patch fixes some bugs of EFI memory handing code. - On x86_64, it is possible that EFI memory map can not be mapped via identity map, so efi_map_memmap is removed, just use early_ioremap. - On i386, the EFI memory map mapping take effect cross paging_init, so it is not necessary to use efi_map_memmap. - EFI memory map is unmapped in efi_enter_virtual_mode to avoid early_ioremap leak. Signed-off-by: Huang Ying <ying.huang@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/kernel/efi.c')
-rw-r--r--arch/x86/kernel/efi.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/efi.c b/arch/x86/kernel/efi.c
index 174b067b9d03..1411324a625c 100644
--- a/arch/x86/kernel/efi.c
+++ b/arch/x86/kernel/efi.c
@@ -474,6 +474,8 @@ void __init efi_enter_virtual_mode(void)
efi.reset_system = virt_efi_reset_system;
efi.set_virtual_address_map = virt_efi_set_virtual_address_map;
runtime_code_page_mkexec();
+ early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size);
+ memmap.map = NULL;
}
/*