Hi Heinrich, On Sat, 4 Jan 2025 at 05:16, Heinrich Schuchardt <[email protected]> wrote: > > On 28.11.24 04:47, Kever Yang wrote: > > The efi_stub is useing DEBUG_UART interface by default, Enable it. > > As Simon already wrote in a code comment the implementation of the EFI > stub is broken as it is not hardware agnostic.
If I said that I was wrong, sorry. Actually that is the stub's intent, to take over the machine, exit boot-services and carry on. It is the EFI app which is designed to use boot services. So the stub cannot be hardware-agnostic, unfortunately. It only runs on x86 hardware, unless, for example, EFI has something like serial_getinfo() or we disable the UART / keyboard input. > > In the EFI stub we should never directly access hardware. Please, use > SimpleTextOutputProtocol.OutputString() for printing. Once the stub starts, boot services are gone. See efi_main() for how this works. There is a definite point at which we stop using that and start using U-Boot's own thing. At this point I think I may be misunderstanding what you said... > > > > > Signed-off-by: Kever Yang <[email protected]> > > --- > > > > configs/efi-x86_payload32_defconfig | 1 + > > configs/efi-x86_payload64_defconfig | 1 + > > 2 files changed, 2 insertions(+) > > > > diff --git a/configs/efi-x86_payload32_defconfig > > b/configs/efi-x86_payload32_defconfig > > index 071ddb8e36d..f0b9acc358d 100644 > > --- a/configs/efi-x86_payload32_defconfig > > +++ b/configs/efi-x86_payload32_defconfig > > @@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="efi-x86_payload" > > CONFIG_PRE_CON_BUF_ADDR=0x100000 > > CONFIG_VENDOR_EFI=y > > CONFIG_TARGET_EFI_PAYLOAD=y > > +CONFIG_DEBUG_UART=y > > On x86 this uses the NS16550 UART driver. This is fine as long as we > don't use the debug UART in the EFI stub. But correcting this is for a > separate patch. > > Having a debug UART available after the EFI stub makes sense. > > I will update the commit message when merging. > > Reviewed-by: Heinrich Schuchardt <[email protected]> > > > CONFIG_EFI=y > > CONFIG_EFI_STUB=y > > CONFIG_FIT=y > > diff --git a/configs/efi-x86_payload64_defconfig > > b/configs/efi-x86_payload64_defconfig > > index 71612d7fb19..b02a861e59c 100644 > > --- a/configs/efi-x86_payload64_defconfig > > +++ b/configs/efi-x86_payload64_defconfig > > @@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="efi-x86_payload" > > CONFIG_PRE_CON_BUF_ADDR=0x100000 > > CONFIG_VENDOR_EFI=y > > CONFIG_TARGET_EFI_PAYLOAD=y > > +CONFIG_DEBUG_UART=y > > CONFIG_EFI=y > > CONFIG_EFI_STUB=y > > CONFIG_EFI_STUB_64BIT=y > Regards, Simon

