<div dir="ltr"><div dir="ltr"><div>Hi,<br>I'm investigating the SeaBIOS booting time, to understand if we can reduce<br>the boot time in some cases (e.g. legacy hardware is not needed). I think this<br>can be interesting also for NEMU developers.<br><br>Following this thread (<a href="https://mail.coreboot.org/pipermail/seabios/2015-July/009497.html">https://mail.coreboot.org/pipermail/seabios/2015-July/009497.html</a>),<br>I'm using qboot (<a href="https://github.com/bonzini/qboot">https://github.com/bonzini/qboot</a>) to compare the SeaBIOS<br>booting time.<br><br>As Paolo did in qboot, I manually add small debug port writes in SeaBIOS and<br>linuxboot_dma.c (QEMU) to trace the events with perf (kvm_pio events)<br><br>The goal is to have only one image of SeaBIOS configurable at runtime to reduce<br>the boot time, avoiding unnecessary initialization.<br><br>Any pointers or suggestions would be helpful.<br><br>Following I put some preliminary measurements that I obtained:<br>I used this QEMU command line:<br>./qemu-system-x86_64 -bios $BIOS -m 1G -cpu host -M accel=kvm \<br>-kernel /boot/vmlinuz-4.18.18-300.fc29.x86_64 -append 'console=ttyS0' \<br>-nographic -serial mon:stdio<br><br>For each test, I measured these times (in milliseconds) relative to the<br>"sched_process_exec" event:<br>- qemu_init_end: first kvm_entry (i.e. QEMU initialized has finished)<br>- fw_start: first entry of the BIOS<br>- fw_do_boot: after the BIOS initialization (e.g. PCI setup, etc.)<br>- linux_start_boot: before the jump to the Linux kernel<br><br># qboot<br>BIOS=/home/stefano/repos/qboot/bios.bin<br> qemu_init_end: 40.561234<br> fw_start: 40.721729 (+0.160495)<br> fw_do_boot: 47.025591 (+6.303862)<br> linux_start_boot: 48.874112 (+1.848521)<br><br># SeaBIOS with default configuration<br>BIOS=/home/stefano/repos/seabios/out_default/bios.bin<br> qemu_init_end: 40.419451<br> fw_start: 40.639967 (+0.220516)<br> fw_do_boot: 886.668828 (+846.028861)<br> linux_start_boot: 889.723547 (+3.054719)<br><br># SeaBIOS with Kevin's configuration<br># (<a href="https://mail.coreboot.org/pipermail/seabios/2015-July/009508.html">https://mail.coreboot.org/pipermail/seabios/2015-July/009508.html</a>)<br># Note: this SeaBIOS setup is so stripped down that it can't actually boot an OS<br>BIOS=/home/stefano/repos/seabios/out_kevin/bios.bin<br> qemu_init_end: 40.676412<br> fw_start: 40.755757 (+0.079345)<br> fw_do_boot: 56.427023 (+15.671266)</div><div><br></div><div>I did the same tests also with NEMU (without using -M virt) and I have</div><div>approximately the same results.</div><div><br></div><div>As the next step, I'll start from Kevin's configuration to have a minimal</div><div>SeaBIOS image ables to boot a Linux kernel.<br><br>Thanks,<br>Stefano<br><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><span style="font-family:monospace,monospace">Stefano Garzarella</span></div><div><span style="font-family:monospace,monospace">Red Hat</span><br></div></div></div></div></div>