[SeaBIOS] [PATCH] boot: Show boot splash until all threads are complete

Kevin O'Connor kevin at koconnor.net
Fri Sep 16 14:45:20 CEST 2016


On Wed, Sep 14, 2016 at 06:20:34PM +0200, Paul Menzel wrote:
> Currently, even with `etc/threads` set to 2 in CBFS, the boot splash is
> only shown for a short period, while SeaBIOS detects the hard disk on
> the ASRock E350M1, which takes 10 seconds with this particular hard
> drive model.
> 
> So move the call to wait for the threads to finish further up, so it is
> before the instruction to disable the boot splash.
> 
> On the ASRock E350M1 the boot splash is shown the whole time now. Note,
> sometimes the GRUB menu from the MBR is not shown, and boot splash can
> still  be seen. The screen only changes, once the Linux kernel boots.
> This seems to be a GRUB issue though [1].
> 
> [1] http://metadata.ftp-master.debian.org/changelogs//main/g/grub2/grub2_2.02~beta2-36_changelog
> 
> Suggested-by: Kevin O'Connor <kevin at koconnor.net>
> Signed-off-by: Paul Menzel <pmenzel at molgen.mpg.de>
> ---
>  src/boot.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/boot.c b/src/boot.c
> index 706b7df..af3c627 100644
> --- a/src/boot.c
> +++ b/src/boot.c
> @@ -468,6 +468,7 @@ interactive_bootmenu(void)
>      u32 menutime = romfile_loadint("etc/boot-menu-wait",
> DEFAULT_BOOTMENU_WAIT);
>      enable_bootsplash();
>      int scan_code = get_keystroke(menutime);
> +    wait_threads();
>      disable_bootsplash();
>      if (scan_code != menukey)
>          return;

If wait_threads() is moved up, then the user may not get immediate
feedback from hitting the boot menu key.  So, if it takes 10 seconds
to bring up the drive and the user hits ESC in the first second, then
they'll wait another 9 seconds before knowing that the ESC took.

-Kevin



More information about the SeaBIOS mailing list