summaryrefslogtreecommitdiffstats
path: root/arch/x86/platform
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2014-03-05 17:22:57 +0000
committerMatt Fleming <matt.fleming@intel.com>2014-03-05 17:31:41 +0000
commit4fd69331ad227a4d8de26592d017b73e00caca9f (patch)
treebfd95ed518ff0cb44318715432d321a92a7b9a0c /arch/x86/platform
parent69e608411473ac56358ef35277563982d0565381 (diff)
parent0ac09f9f8cd1fb028a48330edba6023d347d3cea (diff)
downloadlinux-4fd69331ad227a4d8de26592d017b73e00caca9f.tar.bz2
Merge remote-tracking branch 'tip/x86/urgent' into efi-for-mingo
Conflicts: arch/x86/include/asm/efi.h
Diffstat (limited to 'arch/x86/platform')
-rw-r--r--arch/x86/platform/efi/efi.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/x86/platform/efi/efi.c b/arch/x86/platform/efi/efi.c
index 6f0a46730826..45d4f7674678 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
@@ -1302,3 +1303,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, &efi.flags);
+}