[PATCH 00/11] efi: Permanent runtime EFI memmap support

From: Matt Fleming
Date: Thu Jun 23 2016 - 07:35:00 EST


This series adds support for keeping the EFI memory map around at
runtime for x86 (ARM and arm64 already have this support).

Additionally, drivers can now reserve EFI boot services regions such
that they are not released back to the kernel during
efi_free_boot_services().

With these two features it becomes possible to pass things like the
EFI System Resource Table data structures across kexec reboot.

This series also includes a whole bunch of refactoring and cleanups to
move code out of arch or driver-specific files into generic places.

I've given these patches some light testing, but it would be good if
others could provide more given that this series touches so many
different code paths.

ARM/arm64 folks, you're going to want to pay particular attention to
PATCH 3 where I drop the read-only mapping of the EFI memory map since
it causes problems for x86.

I am aware that we leak memory maps when new ones get installed, e.g.
during __efi_enter_virtual_mode(), but that's an existing bug that
requires everyone to allocate memory maps the same way before it can
be fixed.

arch/x86/include/asm/efi.h | 1 -
arch/x86/kernel/setup.c | 13 +-
arch/x86/platform/efi/efi-bgrt.c | 13 +-
arch/x86/platform/efi/efi.c | 198 ++++++++++++-------------
arch/x86/platform/efi/efi_64.c | 20 ---
arch/x86/platform/efi/quirks.c | 123 ++++++++++++++--
drivers/firmware/efi/Makefile | 2 +-
drivers/firmware/efi/arm-init.c | 17 +--
drivers/firmware/efi/arm-runtime.c | 4 +-
drivers/firmware/efi/efi.c | 64 ++++----
drivers/firmware/efi/esrt.c | 20 +--
drivers/firmware/efi/fake_mem.c | 125 ++--------------
drivers/firmware/efi/memmap.c | 292 +++++++++++++++++++++++++++++++++++++
drivers/firmware/efi/runtime-map.c | 35 ++---
include/linux/efi.h | 34 ++++-
15 files changed, 605 insertions(+), 356 deletions(-)
create mode 100644 drivers/firmware/efi/memmap.c