Skip to content

Commit

Permalink
efi/ia64: Use existing helpers to locate ESI table
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Ard Biesheuvel committed Feb 23, 2020
1 parent 14fb420 commit c0019f5
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 17 deletions.
6 changes: 6 additions & 0 deletions arch/ia64/kernel/efi.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,13 +45,19 @@

#define EFI_DEBUG 0

#define ESI_TABLE_GUID \
EFI_GUID(0x43EA58DC, 0xCF28, 0x4b06, 0xB3, \
0x91, 0xB7, 0x50, 0x59, 0x34, 0x2B, 0xD4)

static unsigned long mps_phys = EFI_INVALID_TABLE_ADDR;
static __initdata unsigned long palo_phys;

unsigned long __initdata esi_phys = EFI_INVALID_TABLE_ADDR;
unsigned long hcdp_phys = EFI_INVALID_TABLE_ADDR;
unsigned long sal_systab_phys = EFI_INVALID_TABLE_ADDR;

static __initdata efi_config_table_type_t arch_tables[] = {
{ESI_TABLE_GUID, "ESI", &esi_phys},
{HCDP_TABLE_GUID, "HCDP", &hcdp_phys},
{MPS_TABLE_GUID, "MPS", &mps_phys},
{PROCESSOR_ABSTRACTION_LAYER_OVERWRITE_GUID, "PALO", &palo_phys},
Expand Down
21 changes: 4 additions & 17 deletions arch/ia64/kernel/esi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
Expand All @@ -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!");
Expand Down

0 comments on commit c0019f5

Please sign in to comment.