[SeaBIOS] Next steps

Kevin O'Connor kevin at koconnor.net
Sat Dec 26 20:27:18 CET 2009

Here are my thoughts on upcoming enhancements that should go into

* Merge recent patches.  Most are simple fixes.  The only big change
  is the ATA DMA support.

* Add 32bit PCI BIOS support.  SeaBIOS has lots of 32bit code, but the
  32bit PCI BIOS support requires use of segmented 32bit mode - so,
  it's a bit of a pain to add.  Right now, there are two main parts of
  seabios that are linked together in the final compile stage - the
  16bit code and 32bit flat mode code.  To support 32bit PCI, there
  will need to be three parts (16bit, 32bit flat, and 32bit
  segmented).  This will also involve changing a bunch of "#if MODE16"
  tests to a new "#if MODESEGMENTS".  This will make the final binary
  a bit bigger (eg, there will be another copy of dprintf).  While
  doing this, it makes sense to convert the 32bit APM code to work the
  same way (right now 32bit APM just transitions to 16bit mode and
  calls the 16bit APM code).

* Make CONFIG_THREAD_OPTIONROMS the default.  This experimental
  feature allows SeaBIOS hardware init (eg, usb, ata, ps2) to run in
  parallel with option rom execution.  It can speed boot time on real
  hardware.  It's probably not much use for qemu, but I think it makes
  sense to run as much of the same code on coreboot and qemu as
  possible.  There is a risk here of third-party option roms being
  confused by the preemption code - however, that should be a small
  risk and only testing will determine it.

* Add int1589 support.  This call facilitates entering 32bit mode via
  the bios.  Bochs BIOS recently added support for it.  It should be
  straight forward to add to SeaBIOS - the 'struct bregs' should have
  everything needed to restore state and directly return to the caller
  in 32bit mode.

* Finish USB keyboard support - add auto-repeat, add LED support, add
  support for usb hubs.  USB keyboard works today (at least on qemu
  and my Via hardware), but it's not fully fleshed out.  These
  remaining items should be completed.

Longer term items:

* Possibly add in DMA for packet commands, and possibly add support
  for PATA timing code.  The DMA on packet commands should be straight
  forward.  Support for PATA timing can noticeably increase transfer
  speeds on these drives, but it requires per-chipset ide
  initialization code.  That would require a lookup table based on the
  PCI ids of the ide controller to code capable of setting up the
  proper timing.

* USB booting?  This support is definitely needed, but there has been
  some debate on whether adding to SeaBIOS makes the most sense.  My
  experience with ATA DMA indicates that EHCI support will also be a

Any other items?


More information about the SeaBIOS mailing list