Here are my thoughts on upcoming enhancements that should go into SeaBIOS:
* 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 requirement.
Any other items?
-Kevin