Halting auto-boot process in the U-Boot shell https://lore.kernel.org/u-boot/20220614060203.33600-1-heinrich.schuchardt at canonical.com/
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Wed Feb 26 09:23:00 CET 2025
On 2/26/25 07:48, Kummari, Prasad wrote:
> [AMD Official Use Only - AMD Internal Distribution Only]
>
>
> Hi Heinrich,
>
> Regarding below commit.
>
> commit 68edbed454b863dbcd197e19e1ab26a0a05c7d85
> Author: Heinrich Schuchardt <xypron.glpk at gmx.de>
> AuthorDate: Tue Jun 14 08:02:03 2022 +0200
> Commit: Heinrich Schuchardt <xypron.glpk at gmx.de>
> CommitDate: Sun Jun 19 15:53:09 2022 +0200
>
> efi_loader: initialize console size late
>
> If CONFIG_VIDEO_DM=n we query the display size from the serial console.
> Especially when using a remote console the response can be so late that
> it interferes with autoboot.
>
> * Only query the console size when running an EFI binary.*
>
> https://lore.kernel.org/u-boot/20220614060203.33600-1-
> heinrich.schuchardt at canonical.com/ <https://lore.kernel.org/u-
> boot/20220614060203.33600-1-heinrich.schuchardt at canonical.com/>
>
> Commit 68edbed454b863dbcd197e19e1ab26a0a05c7d85 modifies the system to
> query the console size only when running an EFI binary. However, when
> CONFIG_EFI_CAPSULE_ON_DISK is enabled, the console is still being
> invoked, which shouldn't happen. This results in issues on our terminal,
> which cannot handle the resulting characters, leading to incorrect
> display and halting the auto-boot process in the U-Boot shell.
>
> *Log Output:*
>
> Warning: ethernet at ff0c0000 (eth0) using random MAC address -
> ee:df:0a:38:a8:c4
>
> eth0: ethernet at ff0c0000, eth1: mrmac at a40f0000, eth2: mrmac at a40f1000,
> eth3: mrmac at a40f2000, eth4: mrmac at a40f3000
>
> Cannot persist EFI variables without system partition
>
> Missing TPMv2 device for EFI_TCG_PROTOCOL
>
> Missing RNG device for EFI_RNG_PROTOCOL
>
> Hit any key to stop autoboot: 0
>
> *Versal> [42;173R*
>
> *Unknown command '[42' - try 'help'*
Hello Prasad,
The terminal emulation seems to be sending a valid reply indicating 42
rows and 173 columns.
It could be that in your setup you are hitting the time out in
term_get_char().
Could you, please, check what happens if you apply
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -92,8 +92,7 @@ static int term_get_char(s32 *c)
timeout = timer_get_us() + 100000;
while (!tstc())
- if (timer_get_us() > timeout)
- return 1;
+ ;
*c = getchar();
return 0;
If the failure disappears, next you would have to analyze why the
timeout is occurring (e.g. timer_get_us() running too fast).
If you still get failures, please, add debug output term_read_reply() to
understand what is happening.
Best regards
Heinrich
>
> *Unknown command '173R' - try 'help'*
>
> *Versal>*
>
> Debug logs:
>
> Before entering the U-Boot shell, set a breakpoint at getc, which is
> invoked by efi_setup_console_size() and display problems and auto-boot
> interruptions.
>
> xsdb% bt
> 0 0x7ff0d648 pl01x_serial_getc()+2011873280: drivers/serial/
> serial_pl01x.c, line 339
> 1 0x7ff0d134 __serial_getc()+2011873316: drivers/serial/serial-
> uclass.c, line 310
> * 2 0x7ff47dcc efi_setup_console_size()+2011873540: lib/efi_loader/
> efi_console.c, line 291
> * 3 0x7ff4e40c efi_init_obj_list()+2011873316: lib/efi_loader/
> efi_setup.c, line 225
> 4 0x7fed699c main_loop()+2011873324: common/main.c, line 61
> 5 0x7fed69d8 add_mem_region()+2011873280: common/main.c, line 84
> xsdb%
>
> code snippet: Disabling the efi_setup_console_size() function prevents
> the issue from occurring.
>
> diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
> index aa59bc7779d..ad68ac19526 100644
> --- a/lib/efi_loader/efi_setup.c
> +++ b/lib/efi_loader/efi_setup.c
> @@ -220,9 +220,10 @@ efi_status_t efi_init_obj_list(void)
> /* Initialize once only */
> if (efi_obj_list_initialized != OBJ_LIST_NOT_INITIALIZED)
> return efi_obj_list_initialized;
> -
> +#if 0
> /* Set up console modes */
> efi_setup_console_size();
> +#endif
>
> Regards,
>
> Prasad.
>
More information about the U-Boot
mailing list