The latest version of SeaBIOS git now supports initializing hardware in parallel. This can lead to a reduction in boot time.
For info on using SeaBIOS with coreboot see:
http://www.coreboot.org/SeaBIOS
In past experiments, I've found that waiting for hardware consumes most of the time spent in SeaBIOS. So, initializing multiple hardware controllers at the same time can reduce the boot time. The ps2 port, each ata controller, and each usb controller can now all be initialized in parallel. Note, option roms are still run synchronously.
For the curious, the system allocates a stack for each hardware controller, and explicit "yield" calls have been added to code that waits for hardware. The yield call then round-robins between available stacks. This effectively creates a simple cooperative multitasking system. No locking is needed or implemented. Only the main cpu is used (there doesn't seem to be any need for multiple cpus anyway as most of the time is spent waiting for hardware to be ready).
-Kevin
Kevin O'Connor wrote:
The latest version of SeaBIOS git now supports initializing hardware in parallel. This can lead to a reduction in boot time.
Nice!
//Peter