|
@@ -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);
|
|
|
+}
|