diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2020-01-20 15:45:39 +0100 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2020-02-23 21:59:42 +0100 |
commit | c0019f576818b6e867bcb1feece10d9a21a7bc9f (patch) | |
tree | b454626311a2952f25ae783eeeb94c8b53210abc /arch/ia64/kernel/esi.c | |
parent | 14fb4209094355928d5a742e35afabdf7b404c17 (diff) | |
download | linux-stable-c0019f576818b6e867bcb1feece10d9a21a7bc9f.tar.gz linux-stable-c0019f576818b6e867bcb1feece10d9a21a7bc9f.tar.bz2 linux-stable-c0019f576818b6e867bcb1feece10d9a21a7bc9f.zip |
efi/ia64: Use existing helpers to locate ESI table
Instead of iterating over the EFI config table array manually,
declare it as an arch table so it gets picked up by the existing
config table handling code.
Tested-by: Tony Luck <tony.luck@intel.com> # arch/ia64
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'arch/ia64/kernel/esi.c')
-rw-r--r-- | arch/ia64/kernel/esi.c | 21 |
1 files changed, 4 insertions, 17 deletions
diff --git a/arch/ia64/kernel/esi.c b/arch/ia64/kernel/esi.c index cb514126ef7f..4df57c93e0a8 100644 --- a/arch/ia64/kernel/esi.c +++ b/arch/ia64/kernel/esi.c @@ -19,10 +19,6 @@ MODULE_LICENSE("GPL"); #define MODULE_NAME "esi" -#define ESI_TABLE_GUID \ - EFI_GUID(0x43EA58DC, 0xCF28, 0x4b06, 0xB3, \ - 0x91, 0xB7, 0x50, 0x59, 0x34, 0x2B, 0xD4) - enum esi_systab_entry_type { ESI_DESC_ENTRY_POINT = 0 }; @@ -48,27 +44,18 @@ struct pdesc { static struct ia64_sal_systab *esi_systab; +extern unsigned long esi_phys; + static int __init esi_init (void) { - efi_config_table_t *config_tables; struct ia64_sal_systab *systab; - unsigned long esi = 0; char *p; int i; - config_tables = __va(efi.systab->tables); - - for (i = 0; i < (int) efi.systab->nr_tables; ++i) { - if (efi_guidcmp(config_tables[i].guid, ESI_TABLE_GUID) == 0) { - esi = config_tables[i].table; - break; - } - } - - if (!esi) + if (esi_phys == EFI_INVALID_TABLE_ADDR) return -ENODEV; - systab = __va(esi); + systab = __va(esi_phys); if (strncmp(systab->signature, "ESIT", 4) != 0) { printk(KERN_ERR "bad signature in ESI system table!"); |