From mboxrd@z Thu Jan 1 00:00:00 1970 From: catalin.marinas@arm.com (Catalin Marinas) Date: Fri, 23 May 2014 14:47:20 +0100 Subject: EFI_STUB fails to boot non-EFI on arm64 In-Reply-To: <20140523131656.GR4179@bivouac.eciton.net> References: <20140523094513.GC9252@arm.com> <20140523131656.GR4179@bivouac.eciton.net> Message-ID: <20140523134720.GA9256@arm.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Fri, May 23, 2014 at 02:16:56PM +0100, Leif Lindholm wrote: > Subject: [PATCH] arm64: efi: only attempt efi map setup if booting via EFI > > Booting a kernel with CONFIG_EFI enabled on a non-EFI system caused > an oops with the current UEFI support code. > Add the required test to prevent this. > > Signed-off-by: Leif Lindholm > --- > arch/arm64/kernel/efi.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c > index 7bfd650..14db1f6 100644 > --- a/arch/arm64/kernel/efi.c > +++ b/arch/arm64/kernel/efi.c > @@ -333,6 +333,9 @@ void __init efi_init(void) > > void __init efi_idmap_init(void) > { > + if (!efi_enabled(EFI_BOOT)) > + return; > + That's a first (possibly temporary) step and I think it's fine: Acked-by: Catalin Marinas But we need some further tweaking to the way we call efi_init(). Currently it doesn't matter whether Linux booted as an EFI application or not and efi_init() is always called, causing some pr_err() in fdt_find_uefi_params(). It's not really an error as we support the same image booting non-EFI as well. Can we add another of detecting whether it's an EFI application and avoid calling efi_init()? I can see x86 sets some efi_loader_signature string in exit_boot() and checks against it later when calling efi_init(). -- Catalin