[PATCH 24/35] x86: Allow booting a kernel from the EFI app

Heinrich Schuchardt xypron.glpk at gmx.de
Wed Sep 8 20:22:31 CEST 2021



On 9/8/21 3:33 PM, Simon Glass wrote:
> At present this is disabled, but it should work so long as the kernel does
> not need EFI services. Enable it and add a note about remaining work.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
>   arch/x86/lib/bootm.c | 11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/arch/x86/lib/bootm.c b/arch/x86/lib/bootm.c
> index 733dd712570..ff0e9f6a085 100644
> --- a/arch/x86/lib/bootm.c
> +++ b/arch/x86/lib/bootm.c
> @@ -179,10 +179,14 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
>   		* U-Boot is setting them up that way for itself in
>   		* arch/i386/cpu/cpu.c.
>   		*
> -		* Note that we cannot currently boot a kernel while running as
> -		* an EFI application. Please use the payload option for that.
> +		* Note: this is incomplete for EFI kernels!
> +		*
> +		* This can boot a kernel while running as an EFI application,
> +		* but if the kernel requires EFI support then that support needs
> +		* to be enabled first (see EFI_LOADER). Also the EFI information
> +		* must enabled with setup_efi_info(). See setup_zimage() for
> +		* how this is done with the stub.

Did you test launching an EFI application with EFI_LOADER from the EFI
app? If you get it working, please provide a defconfig and a testcase
that runs helloworld.efi.

Best regards

Heinrich

>   		*/
> -#ifndef CONFIG_EFI_APP
>   		__asm__ __volatile__ (
>   		"movl $0, %%ebp\n"
>   		"cli\n"
> @@ -191,7 +195,6 @@ int boot_linux_kernel(ulong setup_base, ulong load_address, bool image_64bit)
>   		[boot_params] "S"(setup_base),
>   		"b"(0), "D"(0)
>   		);
> -#endif
>   	}
>
>   	/* We can't get to here */
>


More information about the U-Boot mailing list