linux/arch/x86/platform/efi
Omar Sandoval 6f6266a561 x86/efi: Don't try to reserve runtime regions
Reserving a runtime region results in splitting the EFI memory
descriptors for the runtime region. This results in runtime region
descriptors with bogus memory mappings, leading to interesting crashes
like the following during a kexec:

  general protection fault: 0000 [#1] SMP
  Modules linked in:
  CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.11.0-rc1 #53
  Hardware name: Wiwynn Leopard-Orv2/Leopard-DDR BW, BIOS LBM05   09/30/2016
  RIP: 0010:virt_efi_set_variable()
  ...
  Call Trace:
   efi_delete_dummy_variable()
   efi_enter_virtual_mode()
   start_kernel()
   ? set_init_arg()
   x86_64_start_reservations()
   x86_64_start_kernel()
   start_cpu()
  ...
  Kernel panic - not syncing: Fatal exception

Runtime regions will not be freed and do not need to be reserved, so
skip the memmap modification in this case.

Signed-off-by: Omar Sandoval <osandov@fb.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Cc: <stable@vger.kernel.org> # v4.9+
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Dave Young <dyoung@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Jones <pjones@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-efi@vger.kernel.org
Fixes: 8e80632fb2 ("efi/esrt: Use efi_mem_reserve() and avoid a kmalloc()")
Link: http://lkml.kernel.org/r/20170412152719.9779-2-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-04-13 08:09:27 +02:00
..
early_printk.c treewide: replace obsolete _refok by __ref 2016-08-02 17:31:41 -04:00
efi_32.c x86/mm: Remove kernel_unmap_pages_in_pgd() and efi_cleanup_page_tables() 2016-07-15 10:26:26 +02:00
efi_64.c x86/efi: Add support for EFI_MEMORY_ATTRIBUTES_TABLE 2017-02-01 08:45:44 +01:00
efi_stub_32.S x86/efi: Mark initialization code as such 2014-10-03 18:41:03 +01:00
efi_stub_64.S x86/efi: Fix 7-parameter efi_call()s 2016-05-17 08:25:06 +02:00
efi_thunk_64.S x86/efi: Avoid triple faults during EFI mixed mode calls 2015-02-13 15:42:56 +00:00
efi-bgrt.c efi/x86: Move the EFI BGRT init code to early init code 2017-02-01 08:45:46 +01:00
efi.c efi/x86: Add debug code to print cooked memmap 2017-02-01 08:45:46 +01:00
Makefile objtool: Mark non-standard object files and directories 2016-02-29 08:35:02 +01:00
quirks.c x86/efi: Don't try to reserve runtime regions 2017-04-13 08:09:27 +02:00