* 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
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABAgAGBQJWIMkHAAoJEC84WcCNIz1VS0cQAIsUoM/Rr4kDBeDsRDEGF02E
 gxjIejflBnis75dXigPZjT830w4bcs64HdivtCTQUgX4dqcQOFUK6NUXmxzUvTGd
 uDBZR7H7uvFlQ8XnW3NkS6D4dRQJXtcI37nLcgWM6lPlR7+s5IAaeY3tGx0rRr/p
 mpDeyknK7KjHXdJWBjzOdQaIFT0fyzZjIWI0+M1XpUntT5dHu6PUQuxSl367aq5p
 B13JYLD99Ahm320yg0eP3w3hB5aQiNS6IBXP+JiQrUpzqbhsEmS410tCkFCIh9xO
 1qzGZh8acs8RwONJePYgb2P8Vox4alAy5nBjUhJMu1dvycFaDfGX70GVhUCRv3sx
 aldBv+SQ8tyDuuxEPQjlW5RKUlqq9aYuzIBD76SODqneQgA5eJveZPUOOBjK3eUD
 TAWKo4XmT6J2QDY7P2+lVGqpIH3VqHriZ2yR05+R4rlmYvh8r85aQKOeGK72x4YS
 atnQUK4z3hVCF1/rpeZJiCekgcxwmVmJjk5uwR+dcitXU+uu+owb5n6b3e/1rJrP
 mumX+2NXD0GCrjaW5t1s+pDjQXub0ahx1SA2GArDKH493w3tAjc6Yp1FC3OxgOA1
 AOhtR33TEUbjaULBS0DOt/GbkkDzN2bRj/eI2zMyXmxK0K5cE6JcrsWcICdHubLu
 81+ewHa8yd7tQz6+YwjV
 =2uOg
 -----END PGP SIGNATURE-----

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>
This commit is contained in:
Ingo Molnar 2015-10-16 12:03:22 +02:00
commit 1a80058905

View File

@ -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();