Blob Blame History Raw
From: Ard Biesheuvel <ardb@kernel.org>
Date: Sat, 18 Jan 2020 17:57:05 +0100
Subject: efi/x86: Disallow efi=old_map in mixed mode
Patch-mainline: v5.6-rc1
Git-commit: 0779221e7166c6865555bb6d29bf6af76fc316bd
References: jsc#SLE-16407

Before:

  1f299fad1e31: ("efi/x86: Limit EFI old memory map to SGI UV machines")

enabling the old EFI memory map on mixed mode systems
disabled EFI runtime services altogether.

Given that efi=old_map is a debug feature designed to work around
firmware problems related to EFI runtime services, and disabling
them can be achieved more straightforwardly using 'noefi' or
'efi=noruntime', it makes more sense to ignore efi=old_map on
mixed mode systems.

Currently, we do neither, and try to use the old memory map in
combination with mixed mode routines, which results in crashes,
so let's fix this by making efi=old_map functional on native
systems only.

Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Lee, Chun-Yi <jlee@suse.com>
---
 arch/x86/platform/uv/bios_uv.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/platform/uv/bios_uv.c
+++ b/arch/x86/platform/uv/bios_uv.c
@@ -371,7 +371,7 @@ static int __init arch_parse_efi_cmdline
 		return -EINVAL;
 	}
 
-	if (parse_option_str(str, "old_map"))
+	if (!efi_is_mixed() && parse_option_str(str, "old_map"))
 		set_bit(EFI_UV1_MEMMAP, &efi.flags);
 
 	return 0;