aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Fleming <matt.fleming@intel.com>2014-01-15 08:49:51 -0500
committerMatt Fleming <matt.fleming@intel.com>2014-03-04 11:17:20 -0500
commit092063808c498eccac8e891973bf143e7b60d723 (patch)
treefd07996db565ebe33beb787c524b877ddd73577a
parentfabb37c736f9f688fe3eec98550a5c032a07cfaa (diff)
ia64/efi: Implement efi_enabled()
There's no good reason to keep efi_enabled() under CONFIG_X86 anymore, since nothing about the implementation is specific to x86. Set EFI feature flags in the ia64 boot path instead of claiming to support all features. The old behaviour was actually buggy since efi.memmap never points to a valid memory map, so we shouldn't be claiming to support EFI_MEMMAP. Fortunately, this bug was never triggered because EFI_MEMMAP isn't used outside of arch/x86 currently, but that may not always be the case. Reviewed-and-tested-by: Tony Luck <tony.luck@intel.com> Signed-off-by: Matt Fleming <matt.fleming@intel.com>
-rw-r--r--arch/ia64/kernel/efi.c7
-rw-r--r--include/linux/efi.h8
2 files changed, 7 insertions, 8 deletions
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c
index da5b462e6de6..741b99c1a0b1 100644
--- a/arch/ia64/kernel/efi.c
+++ b/arch/ia64/kernel/efi.c
@@ -477,6 +477,9 @@ efi_init (void)
477 char *cp, vendor[100] = "unknown"; 477 char *cp, vendor[100] = "unknown";
478 int i; 478 int i;
479 479
480 set_bit(EFI_BOOT, &efi.flags);
481 set_bit(EFI_64BIT, &efi.flags);
482
480 /* 483 /*
481 * It's too early to be able to use the standard kernel command line 484 * It's too early to be able to use the standard kernel command line
482 * support... 485 * support...
@@ -529,6 +532,8 @@ efi_init (void)
529 efi.systab->hdr.revision >> 16, 532 efi.systab->hdr.revision >> 16,
530 efi.systab->hdr.revision & 0xffff, vendor); 533 efi.systab->hdr.revision & 0xffff, vendor);
531 534
535 set_bit(EFI_SYSTEM_TABLES, &efi.flags);
536
532 palo_phys = EFI_INVALID_TABLE_ADDR; 537 palo_phys = EFI_INVALID_TABLE_ADDR;
533 538
534 if (efi_config_init(arch_tables) != 0) 539 if (efi_config_init(arch_tables) != 0)
@@ -657,6 +662,8 @@ efi_enter_virtual_mode (void)
657 return; 662 return;
658 } 663 }
659 664
665 set_bit(EFI_RUNTIME_SERVICES, &efi.flags);
666
660 /* 667 /*
661 * Now that EFI is in virtual mode, we call the EFI functions more 668 * Now that EFI is in virtual mode, we call the EFI functions more
662 * efficiently: 669 * efficiently:
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 214833b4a97d..64d532ca890a 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -660,8 +660,6 @@ extern int __init efi_setup_pcdp_console(char *);
660#define EFI_ARCH_1 6 /* First arch-specific bit */ 660#define EFI_ARCH_1 6 /* First arch-specific bit */
661 661
662#ifdef CONFIG_EFI 662#ifdef CONFIG_EFI
663# ifdef CONFIG_X86
664
665/* 663/*
666 * Test whether the above EFI_* bits are enabled. 664 * Test whether the above EFI_* bits are enabled.
667 */ 665 */
@@ -669,12 +667,6 @@ static inline bool efi_enabled(int feature)
669{ 667{
670 return test_bit(feature, &efi.flags) != 0; 668 return test_bit(feature, &efi.flags) != 0;
671} 669}
672# else
673static inline bool efi_enabled(int feature)
674{
675 return true;
676}
677# endif
678#else 670#else
679static inline bool efi_enabled(int feature) 671static inline bool efi_enabled(int feature)
680{ 672{