diff options
author | Ingo Molnar <mingo@kernel.org> | 2017-08-26 09:20:01 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-08-26 09:20:01 +0200 |
commit | 3cb9bc85029f2ceb7a5babadcab445c7cb861da8 (patch) | |
tree | 6453e9ebb9ad3b3cab07ff31dc9a90ea9f7951bc /drivers/firmware/efi | |
parent | firmware/efi/esrt: Constify attribute_group structures (diff) | |
parent | Merge branch 'linus' into x86/mm to pick up fixes and to fix conflicts (diff) | |
download | linux-3cb9bc85029f2ceb7a5babadcab445c7cb861da8.tar.xz linux-3cb9bc85029f2ceb7a5babadcab445c7cb861da8.zip |
Merge branch 'x86/mm' into efi/core, to pick up dependencies
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/firmware/efi')
-rw-r--r-- | drivers/firmware/efi/efi.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/firmware/efi/efi.c b/drivers/firmware/efi/efi.c index 6519be44387c..a32e1460ade8 100644 --- a/drivers/firmware/efi/efi.c +++ b/drivers/firmware/efi/efi.c @@ -55,6 +55,25 @@ struct efi __read_mostly efi = { }; EXPORT_SYMBOL(efi); +static unsigned long *efi_tables[] = { + &efi.mps, + &efi.acpi, + &efi.acpi20, + &efi.smbios, + &efi.smbios3, + &efi.sal_systab, + &efi.boot_info, + &efi.hcdp, + &efi.uga, + &efi.uv_systab, + &efi.fw_vendor, + &efi.runtime, + &efi.config_table, + &efi.esrt, + &efi.properties_table, + &efi.mem_attr_table, +}; + static bool disable_runtime; static int __init setup_noefi(char *arg) { @@ -855,6 +874,20 @@ int efi_status_to_err(efi_status_t status) return err; } +bool efi_is_table_address(unsigned long phys_addr) +{ + unsigned int i; + + if (phys_addr == EFI_INVALID_TABLE_ADDR) + return false; + + for (i = 0; i < ARRAY_SIZE(efi_tables); i++) + if (*(efi_tables[i]) == phys_addr) + return true; + + return false; +} + #ifdef CONFIG_KEXEC static int update_efi_random_seed(struct notifier_block *nb, unsigned long code, void *unused) |