On Mon, Nov 26, 2018 at 12:39:12PM +0100, Stefano Garzarella wrote: > Speed up the boot phase when qemu uses "linuxboot" optionrom > (qemu -kernel) and the boot-menu is not required. > Under these conditions we can skip the setup of devices and VGA, > because they will be initialized (if they are required) during > the Linux boot phase. > > Following the time measured between SeaBIOS entry point and > "linuxboot" entry point: > > * Before this patch > qemu -kernel | qemu -vga none -kernel > --------------+----------------------- > 53.5 msec | 23.34 msec > > * After this patch > qemu -kernel | qemu -vga none -kernel > --------------+----------------------- > 12.82 msec | 10.89 msec > > Note: For the measuring, we used the default configuration disabling > debug messages (CONFIG_DEBUG_LEVEL=0) and applying Stephen's patch: > "tpm: Check for TPM related ACPI tables before attempting hw" > > Signed-off-by: Stefano Garzarella <sgarz...@redhat.com> > --- > src/bootsplash.c | 3 +++ > src/fw/paravirt.c | 10 ++++++++++ > src/fw/paravirt.h | 4 ++++ > src/optionroms.c | 3 ++- > src/post.c | 3 +++ > 5 files changed, 22 insertions(+), 1 deletion(-) > > diff --git a/src/bootsplash.c b/src/bootsplash.c > index 165c98d..0eda7f2 100644 > --- a/src/bootsplash.c > +++ b/src/bootsplash.c > @@ -8,6 +8,7 @@ > #include "bregs.h" // struct bregs > #include "config.h" // CONFIG_* > #include "farptr.h" // FLATPTR_TO_SEG > +#include "fw/paravirt.h" // runningOnQEMUFastBoot > #include "malloc.h" // free > #include "output.h" // dprintf > #include "romfile.h" // romfile_loadfile > @@ -39,6 +40,8 @@ call16_int10(struct bregs *br) > void > enable_vga_console(void) > { > + if(runningOnQEMUFastBoot()) > + return; > dprintf(1, "Turning on vga text mode console\n"); > struct bregs br; > > diff --git a/src/fw/paravirt.c b/src/fw/paravirt.c > index 0770c47..9e6e618 100644 > --- a/src/fw/paravirt.c > +++ b/src/fw/paravirt.c > @@ -621,4 +621,14 @@ void qemu_cfg_init(void) > if (nogfx && !romfile_find("etc/sercon-port") > && !romfile_find("vgaroms/sgabios.bin")) > const_romfile_add_int("etc/sercon-port", PORT_SERIAL1); > + > + /* > + * Enable QEMU fast boot if there is "linuxboot" optionrom and > + * the boot menu is not required. > + */ > + if ((romfile_find("genroms/linuxboot_dma.bin") > + || romfile_find("genroms/linuxboot.bin")) > + && !romfile_loadint("etc/show-boot-menu", 1)) { > + PlatformRunningOn |= PF_QEMU_FB; > + }
I don't think we should hardcode special meanings to the names of bootable files. If QEMU wants SeaBIOS to not perform some type of hardware init, then I think QEMU should explicitly request that from SeaBIOS (eg, a "etc/dont-run-hardware-init"). Thanks, -Kevin _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://mail.coreboot.org/mailman/listinfo/seabios