diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 09:31:31 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-03-22 09:31:31 -0700 |
commit | f06fc0c0de0b4f01dbad8ec5552e78192c7abbb8 (patch) | |
tree | d31b0639244cbcaca2957b1c0c6c05686d4aeffa /arch/x86/kernel | |
parent | 4c64616bb51b399886ded8f4f69bad4da2da1817 (diff) | |
parent | 1adbfa3511ee1c1118e16a9a0246870f12fef4e6 (diff) |
Merge branch 'x86-eficross-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/eficross (booting 32/64-bit kernel from 64/32-bit EFI) from Ingo Molnar
* 'x86-eficross-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86, efi: Allow basic init with mixed 32/64-bit efi/kernel
x86, efi: Add basic error handling
x86, efi: Cleanup config table walking
x86, efi: Convert printk to pr_*()
x86, efi: Refactor efi_init() a bit
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r-- | arch/x86/kernel/setup.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index d7d5099fe87..88638883176 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -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(); |