diff options
author | 2020-01-21 09:44:43 +0100 | |
---|---|---|
committer | 2020-02-23 21:59:42 +0100 | |
commit | 59f2a619a2db86111e8bb30f349aebff6eb75baa (patch) | |
tree | dc1aeac5b0479e863dd6feb11960d6680b8d4955 /include/linux/efi.h | |
parent | efi/x86: Merge assignments of efi.runtime_version (diff) | |
download | linux-59f2a619a2db86111e8bb30f349aebff6eb75baa.tar.gz linux-59f2a619a2db86111e8bb30f349aebff6eb75baa.tar.bz2 linux-59f2a619a2db86111e8bb30f349aebff6eb75baa.zip |
efi: Add 'runtime' pointer to struct efi
Instead of going through the EFI system table each time, just copy the
runtime services table pointer into struct efi directly. This is the
last use of the system table pointer in struct efi, allowing us to
drop it in a future patch, along with a fair amount of quirky handling
of the translated address.
Note that usually, the runtime services pointer changes value during
the call to SetVirtualAddressMap(), so grab the updated value as soon
as that call returns. (Mixed mode uses a 1:1 mapping, and kexec boot
enters with the updated address in the system table, so in those cases,
we don't need to do anything here)
Tested-by: Tony Luck <tony.luck@intel.com> # arch/ia64
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'include/linux/efi.h')
-rw-r--r-- | include/linux/efi.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/efi.h b/include/linux/efi.h index a42045568df3..1f69c4c2dd5c 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h @@ -529,6 +529,7 @@ typedef struct { * All runtime access to EFI goes through this structure: */ extern struct efi { + const efi_runtime_services_t *runtime; /* EFI runtime services table */ efi_system_table_t *systab; /* EFI system table */ unsigned int runtime_version; /* Runtime services version */ unsigned long acpi; /* ACPI table (IA64 ext 0.71) */ |