diff options
author | Ingo Molnar <mingo@kernel.org> | 2015-10-16 12:03:22 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2015-10-16 12:03:22 +0200 |
commit | 1a800589052f03ce09008f82ad2c69f0af5d315a (patch) | |
tree | dff91e9cbe6fa43060885ed45529296d905bf774 /arch/x86 | |
parent | 8a53554e12e98d1759205afd7b8e9e2ea0936f48 (diff) | |
parent | f5f3497cad8c8416a74b9aaceb127908755d020a (diff) | |
download | linux-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.c | 8 |
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(); |