summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2015-10-16 12:03:22 +0200
committerIngo Molnar <mingo@kernel.org>2015-10-16 12:03:22 +0200
commit1a800589052f03ce09008f82ad2c69f0af5d315a (patch)
treedff91e9cbe6fa43060885ed45529296d905bf774
parent8a53554e12e98d1759205afd7b8e9e2ea0936f48 (diff)
parentf5f3497cad8c8416a74b9aaceb127908755d020a (diff)
downloadop-kernel-dev-1a800589052f03ce09008f82ad2c69f0af5d315a.zip
op-kernel-dev-1a800589052f03ce09008f82ad2c69f0af5d315a.tar.gz
Merge tag 'efi-urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/mfleming/efi into x86/urgent
Pull EFI fix from Matt Fleming: - Ensure that the identity mapping in initial_page_table is updated to cover the entire kernel range. This fixes a triple fault on non-PAE kernels when booting on 32-bit EFI due to accessing an unmapped GDT in efi_call_phys_prolog(). (Paolo Bonzini) Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/kernel/setup.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c
index fdb7f2a..a3cccbf 100644
--- a/arch/x86/kernel/setup.c
+++ b/arch/x86/kernel/setup.c
@@ -1173,6 +1173,14 @@ void __init setup_arch(char **cmdline_p)
clone_pgd_range(initial_page_table + KERNEL_PGD_BOUNDARY,
swapper_pg_dir + KERNEL_PGD_BOUNDARY,
KERNEL_PGD_PTRS);
+
+ /*
+ * sync back low identity map too. It is used for example
+ * in the 32-bit EFI stub.
+ */
+ clone_pgd_range(initial_page_table,
+ swapper_pg_dir + KERNEL_PGD_BOUNDARY,
+ KERNEL_PGD_PTRS);
#endif
tboot_probe();
OpenPOWER on IntegriCloud