Commit 873ec746158403af82c57ce26780166aafc159e1

Authored by Bjorn Helgaas
Committed by Linus Torvalds
1 parent f038f9a361

EFI: warn only for pre-1.00 system tables

We used to warn unless the EFI system table major revision was exactly 1.
But EFI 2.00 firmware is starting to appear, and the 2.00 changes don't
affect anything in Linux.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Andi Kleen <ak@suse.de>
Cc: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 4 changed files with 11 additions and 14 deletions Side-by-side Diff

arch/i386/kernel/efi.c
... ... @@ -347,14 +347,12 @@
347 347 printk(KERN_ERR PFX "Woah! Couldn't map the EFI system table.\n");
348 348 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
349 349 printk(KERN_ERR PFX "Woah! EFI system table signature incorrect\n");
350   - if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0)
351   - printk(KERN_ERR PFX
352   - "Warning: EFI system table major version mismatch: "
353   - "got %d.%02d, expected %d.%02d\n",
  350 + if ((efi.systab->hdr.revision >> 16) == 0)
  351 + printk(KERN_ERR PFX "Warning: EFI system table version "
  352 + "%d.%02d, expected 1.00 or greater\n",
354 353 efi.systab->hdr.revision >> 16,
355   - efi.systab->hdr.revision & 0xffff,
356   - EFI_SYSTEM_TABLE_REVISION >> 16,
357   - EFI_SYSTEM_TABLE_REVISION & 0xffff);
  354 + efi.systab->hdr.revision & 0xffff);
  355 +
358 356 /*
359 357 * Grab some details from the system table
360 358 */
arch/ia64/hp/sim/boot/fw-emu.c
... ... @@ -287,7 +287,7 @@
287 287  
288 288 memset(efi_systab, 0, sizeof(efi_systab));
289 289 efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE;
290   - efi_systab->hdr.revision = EFI_SYSTEM_TABLE_REVISION;
  290 + efi_systab->hdr.revision = ((1 << 16) | 00);
291 291 efi_systab->hdr.headersize = sizeof(efi_systab->hdr);
292 292 efi_systab->fw_vendor = __pa("H\0e\0w\0l\0e\0t\0t\0-\0P\0a\0c\0k\0a\0r\0d\0\0");
293 293 efi_systab->fw_revision = 1;
arch/ia64/kernel/efi.c
... ... @@ -445,11 +445,11 @@
445 445 panic("Woah! Can't find EFI system table.\n");
446 446 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
447 447 panic("Woah! EFI system table signature incorrect\n");
448   - if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0)
449   - printk(KERN_WARNING "Warning: EFI system table major version mismatch: "
450   - "got %d.%02d, expected %d.%02d\n",
451   - efi.systab->hdr.revision >> 16, efi.systab->hdr.revision & 0xffff,
452   - EFI_SYSTEM_TABLE_REVISION >> 16, EFI_SYSTEM_TABLE_REVISION & 0xffff);
  448 + if ((efi.systab->hdr.revision >> 16) == 0)
  449 + printk(KERN_WARNING "Warning: EFI system table version "
  450 + "%d.%02d, expected 1.00 or greater\n",
  451 + efi.systab->hdr.revision >> 16,
  452 + efi.systab->hdr.revision & 0xffff);
453 453  
454 454 config_tables = __va(efi.systab->tables);
455 455  
... ... @@ -213,7 +213,6 @@
213 213 } efi_config_table_t;
214 214  
215 215 #define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
216   -#define EFI_SYSTEM_TABLE_REVISION ((1 << 16) | 00)
217 216  
218 217 typedef struct {
219 218 efi_table_hdr_t hdr;