diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2014-03-04 15:49:59 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-03-04 15:50:06 -0800 |
commit | 3c0b566334c9942c89927bd1b5ad2f32baab81fa (patch) | |
tree | 2dac7217b98b7aa3f13f8213932f678e7b4fede7 /arch/x86/platform/efi/efi.c | |
parent | 0414855fdc4a40da05221fc6062cccbc0c30f169 (diff) | |
parent | a5d90c923bcfb9632d998ed06e9569216ad695f3 (diff) |
Merge tag 'efi-urgent' into x86/urgent
* Disable the new EFI 1:1 virtual mapping for SGI UV because using it
causes a crash during boot - Borislav Petkov
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/platform/efi/efi.c')
-rw-r--r-- | arch/x86/platform/efi/efi.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c index 1a201ac7cef..b97acecf3fd 100644 --- a/arch/x86/platform/efi/efi.c +++ b/arch/x86/platform/efi/efi.c @@ -52,6 +52,7 @@ #include <asm/tlbflush.h> #include <asm/x86_init.h> #include <asm/rtc.h> +#include <asm/uv/uv.h> #define EFI_DEBUG @@ -1210,3 +1211,22 @@ static int __init parse_efi_cmdline(char *str) return 0; } early_param("efi", parse_efi_cmdline); + +void __init efi_apply_memmap_quirks(void) +{ + /* + * Once setup is done earlier, unmap the EFI memory map on mismatched + * firmware/kernel architectures since there is no support for runtime + * services. + */ + if (!efi_is_native()) { + pr_info("efi: Setup done, disabling due to 32/64-bit mismatch\n"); + efi_unmap_memmap(); + } + + /* + * UV doesn't support the new EFI pagetable mapping yet. + */ + if (is_uv_system()) + set_bit(EFI_OLD_MEMMAP, &x86_efi_facility); +} |