Skip to contentSkip to conversation

x86/eficross changes for v3.4

GIT PULL Ingo Molnar 1 participant 1 message Mar 19, 2012

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Linus,

Please pull the latest x86-eficross-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-eficross-for-linus

HEAD: 1adbfa3511ee1c1118e16a9a0246870f12fef4e6 x86, efi: Allow basic init with mixed 32/64-bit efi/kernel

Thanks,

Ingo

------------------>
Olof Johansson (5):
x86, efi: Refactor efi_init() a bit
x86, efi: Convert printk to pr_*()
x86, efi: Cleanup config table walking
x86, efi: Add basic error handling
x86, efi: Allow basic init with mixed 32/64-bit efi/kernel

 arch/x86/include/asm/efi.h  |    2 +-
 arch/x86/kernel/setup.c     |   10 +-
 arch/x86/platform/efi/efi.c |  377 +++++++++++++++++++++++++++++++------------
 include/linux/efi.h         |   45 +++++
 4 files changed, 324 insertions(+), 110 deletions(-)
arch/x86/include/asm/efi.h +1 -1
index 844f735..c9dcc18 100644
@@ -95,7 +95,7 @@ extern void __iomem *efi_ioremap(unsigned long addr, unsigned long size,
 
 extern int add_efi_memmap;
 extern void efi_set_executable(efi_memory_desc_t *md, bool executable);
-extern void efi_memblock_x86_reserve_range(void);
+extern int efi_memblock_x86_reserve_range(void);
 extern void efi_call_phys_prelog(void);
 extern void efi_call_phys_epilog(void);
 
arch/x86/kernel/setup.c +8 -2
index d7d5099..8863888 100644
@@ -749,10 +749,16 @@ void __init setup_arch(char **cmdline_p)
 #endif
 #ifdef CONFIG_EFI
 	if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
-		     EFI_LOADER_SIGNATURE, 4)) {
+		     "EL32", 4)) {
 		efi_enabled = 1;
-		efi_memblock_x86_reserve_range();
+		efi_64bit = false;
+	} else if (!strncmp((char *)&boot_params.efi_info.efi_loader_signature,
+		     "EL64", 4)) {
+		efi_enabled = 1;
+		efi_64bit = true;
 	}
+	if (efi_enabled && efi_memblock_x86_reserve_range())
+		efi_enabled = 0;
 #endif
 
 	x86_init.oem.arch_setup();
arch/x86/platform/efi/efi.c +270 -107

514 lines not on this page · raw message

include/linux/efi.h +45 -0

63 lines not on this page · raw message