Commit 873ec746158403af82c57ce26780166aafc159e1
Committed by
Linus Torvalds
1 parent
f038f9a361
Exists in
master
and in
7 other branches
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 |
include/linux/efi.h