aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjorn Helgaas <bjorn.helgaas@hp.com>2007-05-08 03:29:57 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-05-08 14:15:10 -0400
commit873ec746158403af82c57ce26780166aafc159e1 (patch)
treea1e853e61ac328ac7dbfb7329f6a776ddf3149fb
parentf038f9a361a764ed013447174b7170073f89cbe9 (diff)
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>
-rw-r--r--arch/i386/kernel/efi.c12
-rw-r--r--arch/ia64/hp/sim/boot/fw-emu.c2
-rw-r--r--arch/ia64/kernel/efi.c10
-rw-r--r--include/linux/efi.h1
4 files changed, 11 insertions, 14 deletions
diff --git a/arch/i386/kernel/efi.c b/arch/i386/kernel/efi.c
index dd9e7faafa7c..a1808022ea19 100644
--- a/arch/i386/kernel/efi.c
+++ b/arch/i386/kernel/efi.c
@@ -347,14 +347,12 @@ void __init efi_init(void)
347 printk(KERN_ERR PFX "Woah! Couldn't map the EFI system table.\n"); 347 printk(KERN_ERR PFX "Woah! Couldn't map the EFI system table.\n");
348 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) 348 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
349 printk(KERN_ERR PFX "Woah! EFI system table signature incorrect\n"); 349 printk(KERN_ERR PFX "Woah! EFI system table signature incorrect\n");
350 if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0) 350 if ((efi.systab->hdr.revision >> 16) == 0)
351 printk(KERN_ERR PFX 351 printk(KERN_ERR PFX "Warning: EFI system table version "
352 "Warning: EFI system table major version mismatch: " 352 "%d.%02d, expected 1.00 or greater\n",
353 "got %d.%02d, expected %d.%02d\n",
354 efi.systab->hdr.revision >> 16, 353 efi.systab->hdr.revision >> 16,
355 efi.systab->hdr.revision & 0xffff, 354 efi.systab->hdr.revision & 0xffff);
356 EFI_SYSTEM_TABLE_REVISION >> 16, 355
357 EFI_SYSTEM_TABLE_REVISION & 0xffff);
358 /* 356 /*
359 * Grab some details from the system table 357 * Grab some details from the system table
360 */ 358 */
diff --git a/arch/ia64/hp/sim/boot/fw-emu.c b/arch/ia64/hp/sim/boot/fw-emu.c
index 5a0a7afcfc3a..300acd913d9c 100644
--- a/arch/ia64/hp/sim/boot/fw-emu.c
+++ b/arch/ia64/hp/sim/boot/fw-emu.c
@@ -287,7 +287,7 @@ sys_fw_init (const char *args, int arglen)
287 287
288 memset(efi_systab, 0, sizeof(efi_systab)); 288 memset(efi_systab, 0, sizeof(efi_systab));
289 efi_systab->hdr.signature = EFI_SYSTEM_TABLE_SIGNATURE; 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 efi_systab->hdr.headersize = sizeof(efi_systab->hdr); 291 efi_systab->hdr.headersize = sizeof(efi_systab->hdr);
292 efi_systab->fw_vendor = __pa("H\0e\0w\0l\0e\0t\0t\0-\0P\0a\0c\0k\0a\0r\0d\0\0"); 292 efi_systab->fw_vendor = __pa("H\0e\0w\0l\0e\0t\0t\0-\0P\0a\0c\0k\0a\0r\0d\0\0");
293 efi_systab->fw_revision = 1; 293 efi_systab->fw_revision = 1;
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index 78d29b79947d..75ec3478d8a2 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -445,11 +445,11 @@ efi_init (void)
445 panic("Woah! Can't find EFI system table.\n"); 445 panic("Woah! Can't find EFI system table.\n");
446 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE) 446 if (efi.systab->hdr.signature != EFI_SYSTEM_TABLE_SIGNATURE)
447 panic("Woah! EFI system table signature incorrect\n"); 447 panic("Woah! EFI system table signature incorrect\n");
448 if ((efi.systab->hdr.revision ^ EFI_SYSTEM_TABLE_REVISION) >> 16 != 0) 448 if ((efi.systab->hdr.revision >> 16) == 0)
449 printk(KERN_WARNING "Warning: EFI system table major version mismatch: " 449 printk(KERN_WARNING "Warning: EFI system table version "
450 "got %d.%02d, expected %d.%02d\n", 450 "%d.%02d, expected 1.00 or greater\n",
451 efi.systab->hdr.revision >> 16, efi.systab->hdr.revision & 0xffff, 451 efi.systab->hdr.revision >> 16,
452 EFI_SYSTEM_TABLE_REVISION >> 16, EFI_SYSTEM_TABLE_REVISION & 0xffff); 452 efi.systab->hdr.revision & 0xffff);
453 453
454 config_tables = __va(efi.systab->tables); 454 config_tables = __va(efi.systab->tables);
455 455
diff --git a/include/linux/efi.h b/include/linux/efi.h
index f8ebd7c1ddb3..0b9579a4cd42 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -213,7 +213,6 @@ typedef struct {
213} efi_config_table_t; 213} efi_config_table_t;
214 214
215#define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL) 215#define EFI_SYSTEM_TABLE_SIGNATURE ((u64)0x5453595320494249ULL)
216#define EFI_SYSTEM_TABLE_REVISION ((1 << 16) | 00)
217 216
218typedef struct { 217typedef struct {
219 efi_table_hdr_t hdr; 218 efi_table_hdr_t hdr;