[coreboot] More SeaBIOS timings
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 -
* 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
* 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 coreboot