x86: Allow booting a kernel from the EFI app

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@chromium.org>
This commit is contained in:
Simon Glass 2021-12-29 11:57:38 -07:00 committed by Heinrich Schuchardt
parent 2996066110
commit 6e7ad4a45f
2 changed files with 8 additions and 5 deletions

View File

@ -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.
*/
#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 */

View File

@ -269,7 +269,7 @@ This work could be extended in a number of ways:
- Avoid turning off boot services in the stub. Instead allow U-Boot to make
use of boot services in case it wants to. It is unclear what it might want
though.
though. It is better to use the app.
Where is the code?
------------------