x86/efi: Runtime services virtual mapping
authorBorislav Petkov <bp@suse.de>
Thu, 31 Oct 2013 16:25:08 +0000 (17:25 +0100)
committerMatt Fleming <matt.fleming@intel.com>
Sat, 2 Nov 2013 11:09:36 +0000 (11:09 +0000)
commitd2f7cbe7b26a74dbbbf8f325b2a6fd01bc34032c
tree69d2c1f92120fa532c77cf8634418b7622d55692
parent82f0712ca0f947170e785300b5c39d9c25e2f6ff
x86/efi: Runtime services virtual mapping

We map the EFI regions needed for runtime services non-contiguously,
with preserved alignment on virtual addresses starting from -4G down
for a total max space of 64G. This way, we provide for stable runtime
services addresses across kernels so that a kexec'd kernel can still use
them.

Thus, they're mapped in a separate pagetable so that we don't pollute
the kernel namespace.

Add an efi= kernel command line parameter for passing miscellaneous
options and chicken bits from the command line.

While at it, add a chicken bit called "efi=old_map" which can be used as
a fallback to the old runtime services mapping method in case there's
some b0rkage with a particular EFI implementation (haha, it is hard to
hold up the sarcasm here...).

Also, add the UEFI RT VA space to Documentation/x86/x86_64/mm.txt.

Signed-off-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
Documentation/kernel-parameters.txt
Documentation/x86/x86_64/mm.txt
arch/x86/include/asm/efi.h
arch/x86/include/asm/pgtable_types.h
arch/x86/platform/efi/efi.c
arch/x86/platform/efi/efi_32.c
arch/x86/platform/efi/efi_64.c
arch/x86/platform/efi/efi_stub_64.S
include/linux/efi.h