[SeaBIOS] More SeaBIOS timings

Kevin O'Connor kevin at koconnor.net
Mon Dec 21 06:44:38 CET 2009

I've completed another round of improvements and timings on my epia-cn
machine.  From power-on to grub serial menu is now 750ms.  For
comparison, the same equipment with the factory bios takes 9.9s.  (To
be fair though, I needed to remove the 2.5s boot menu delay in SeaBIOS
to get to 750ms.)

More background info is available in the thread at:


A breakdown of the 750ms reveals:

* cpu appears to start running around 350ms

* smbus power stabilizes around 400ms

* 20ms to program ddr ram controller

* 15ms to uncompress coreboot_ram (note flash access wasn't a factor -
  see below)

* 10ms to run coreboot_ram

* 35ms to read and uncompress seabios from flash

* 40ms to read and uncompress via vga rom from flash

* 200ms to run via vga option rom and turn on vga

* 10ms for remaining hardware init (the hardware init runs in parallel
  with the 240ms for vga option rom - the 10ms is what remains after
  vga finishes).

* 10ms time spent in grub (and in grub reads from disk)

Changes since last time:

* I'm using a SATA SSD (OCZ Vertex 30G) to store grub (and the OS).
  This device doesn't seem to require a "spin up" delay.

* I've enhanced SeaBIOS to support ATA bus mastering DMA.  I'll send a
  patch out separately with the details.  This dramatically increases
  the speed of disk reads.

* I've commented out the calls to wbinvd() in coreboot's mtrr
  cache_disable logic - those calls are expensive and the code seems
  to work without it.

* While waiting for the smbus to power stabilize, I added reads to the
  flash to seed the cache with the bootblock and coreboot_ram.  This
  eliminates the costly flash read time for that code.

Also interesting is adding a gPXE rom (rtl8169) only added 50ms to the
total SeaBIOS boot time (I set gPXE's BANNER_TIMEOUT to 0).


More information about the SeaBIOS mailing list