summaryrefslogtreecommitdiffstats
path: root/arch/x86
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 /arch/x86
parent8a53554e12e98d1759205afd7b8e9e2ea0936f48 (diff)
parentf5f3497cad8c8416a74b9aaceb127908755d020a (diff)
downloadlinux-1a800589052f03ce09008f82ad2c69f0af5d315a.tar.gz
linux-1a800589052f03ce09008f82ad2c69f0af5d315a.tar.bz2
linux-1a800589052f03ce09008f82ad2c69f0af5d315a.zip
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>
Diffstat (limited to 'arch/x86')
-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 fdb7f2a2d328..a3cccbfc5f77 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();