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>
Showing
- Documentation/kernel-parameters.txt 6 additions, 0 deletionsDocumentation/kernel-parameters.txt
- Documentation/x86/x86_64/mm.txt 7 additions, 0 deletionsDocumentation/x86/x86_64/mm.txt
- arch/x86/include/asm/efi.h 47 additions, 17 deletionsarch/x86/include/asm/efi.h
- arch/x86/include/asm/pgtable_types.h 2 additions, 1 deletionarch/x86/include/asm/pgtable_types.h
- arch/x86/platform/efi/efi.c 66 additions, 28 deletionsarch/x86/platform/efi/efi.c
- arch/x86/platform/efi/efi_32.c 8 additions, 1 deletionarch/x86/platform/efi/efi_32.c
- arch/x86/platform/efi/efi_64.c 109 additions, 0 deletionsarch/x86/platform/efi/efi_64.c
- arch/x86/platform/efi/efi_stub_64.S 54 additions, 0 deletionsarch/x86/platform/efi/efi_stub_64.S
- include/linux/efi.h 1 addition, 0 deletionsinclude/linux/efi.h
Loading
Please register or sign in to comment