[PATCH 05/10] bootm: Do bootstage processing in bootm_final()

Simon Glass sjg at chromium.org
Wed Jan 7 20:02:39 CET 2026


Hi Heinrich,

On Tue, 6 Jan 2026 at 20:58, Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> Am 7. Januar 2026 01:31:22 MEZ schrieb Simon Glass <sjg at chromium.org>:
> >From: Simon Glass <sjg at chromium.org>
> >
> >Mark kernel start before booting. If enabled, show a bootstage report.
> >
> >Signed-off-by: Simon Glass <sjg at chromium.org>
> >Signed-off-by: Simon Glass <simon.glass at canonical.com>
> >---
> >
> > boot/bootm_final.c   | 6 ++++++
> > test/boot/bootflow.c | 2 +-
> > 2 files changed, 7 insertions(+), 1 deletion(-)
> >
> >diff --git a/boot/bootm_final.c b/boot/bootm_final.c
> >index 71661334e11..dd7cac55f1e 100644
> >--- a/boot/bootm_final.c
> >+++ b/boot/bootm_final.c
> >@@ -6,11 +6,17 @@
> >  */
> >
> > #include <bootm.h>
> >+#include <bootstage.h>
> > #include <dm/root.h>
> >
> > void bootm_final(enum bootm_final_t flags)
> > {
> >       printf("\nStarting kernel ...\n\n");
>
> This noisy message makes no sense for EFI booting. The kernel in not started in ExitBootServices().

Can you explain that a bit more? I believe that's exactly when the
kernel starts.

>
> Operating systems like Ubuntu tend to boot the kernel with argument "quiet" for aesthetic reasons. We should not disrupt this.

When I boot (with this patch) I see these messages on the serial console:
>>>
Scanning for bootflows in all bootdevs
Seq  Method       State   Uclass    Part  E  Name                      Filename
---  -----------  ------  --------  ----  -  ------------------------
----------------
Scanning global bootmeth 'efi_mgr':
  0  efi_mgr      ready   (none)       0     <NULL>
** Booting bootflow '<NULL>' with efi_mgr
      try_load_entry() Booting: Label: Ubuntu Device path:
/HD(1,GPT,eccaac1c-b634-441b-a788-ab0f959111af,0x800,0x165800)/\EFI\ubuntu\shimx64.efi

Starting kernel ...
<<<

So it is not silent today. The last line is the new one. Every other
boot method writes this line.

However, the video display is silent once grub has finished and I just
noticed that this patch draws some pixels on the display, as if the
EFI display is set to a different mode from what U-Boot expects. I
suppose this is understandable, as grub has run by then and has
probably changed the mode.

So I wonder what would be best here. We don't support dynamic video
sizing right now and I don't feel the urge to implement it just for
this. Perhaps with EFI we could disable the vidconsole when
exit-boot-services is called, on the basis that we cannot deal with
whatever has happened to the display in the interim?

Regards,
Simon

>
> Best regards
>
> Heinrich
>
> >
> >+      bootstage_mark_name(BOOTSTAGE_ID_BOOTM_HANDOFF, "start_kernel");
> >+
> >+      if (IS_ENABLED(CONFIG_BOOTSTAGE_REPORT))
> >+              bootstage_report();
> >+
> >       dm_remove_devices_active();
> > }
> >diff --git a/test/boot/bootflow.c b/test/boot/bootflow.c
> >index a56435d053f..80adc074070 100644
> >--- a/test/boot/bootflow.c
> >+++ b/test/boot/bootflow.c
> >@@ -1381,7 +1381,7 @@ static int bootflow_efi(struct unit_test_state *uts)
> >
> >       /* TODO: Why the \r ? */
> >       ut_assert_nextline("U-Boot test app for EFI_LOADER\r");
> >-      ut_assert_nextline("Exiting test app");
> >+      ut_assert_skip_to_line("Exiting test app");
> >       ut_assert_nextline("Boot failed (err=-14)");
> >
> >       ut_assert_console_end();
>

Regards,
Simon


More information about the U-Boot mailing list