linux/arch/x86/platform/efi
Matt Fleming 753b11ef8e x86/efi: Setup separate EFI page tables in kexec paths
The switch to using a new dedicated page table for EFI runtime
calls in commit commit 67a9108ed4 ("x86/efi: Build our own
page table structures") failed to take into account changes
required for the kexec code paths, which are unfortunately
duplicated in the EFI code.

Call the allocation and setup functions in
kexec_enter_virtual_mode() just like we do for
__efi_enter_virtual_mode() to avoid hitting NULL-pointer
dereferences when making EFI runtime calls.

At the very least, the call to efi_setup_page_tables() should
have existed for kexec before the following commit:

  67a9108ed4 ("x86/efi: Build our own page table structures")

Things just magically worked because we were actually using
the kernel's page tables that contained the required mappings.

Reported-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Tested-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Signed-off-by: Matt Fleming <matt@codeblueprint.co.uk>
Cc: Andy Lutomirski <luto@amacapital.net>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dave Young <dyoung@redhat.com>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/1453385519-11477-1-git-send-email-matt@codeblueprint.co.uk
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-01-21 21:01:34 +01:00
..
early_printk.c x86/efi: earlyprintk=efi,keep fix 2014-05-03 06:39:06 +01:00
efi_32.c x86/efi: Build our own page table structures 2015-11-29 09:15:42 +01:00
efi_64.c * We don't need to carry our own formatting code in the esrt driver 2015-12-19 21:24:52 +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: Hoist page table switching code into efi_call_virt() 2015-11-29 09:15:42 +01: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 x86/efi-bgrt: Replace early_memremap() with memremap() 2016-01-06 18:28:52 +01:00
efi.c x86/efi: Setup separate EFI page tables in kexec paths 2016-01-21 21:01:34 +01:00
Makefile x86/efi: Move all workarounds to a separate file quirks.c 2014-06-19 11:14:33 +01:00
quirks.c x86/efi: Preface all print statements with efi* tag 2015-12-14 15:24:03 +00:00