[SeaBIOS] Proper support for PCI-based option rom loading (was Re: [Qemu-devel] Re: qdev property bug?)
kevin at koconnor.net
Wed Dec 16 05:57:25 CET 2009
On Tue, Dec 15, 2009 at 03:41:02PM -0600, Anthony Liguori wrote:
> SeaBIOS can also load roms from up to two fixed physical addresses (when
> !CONFIG_OPTIONROMS_DEPLOYED) or from a CBFS payload.
The support for loading of two static option roms wont work well for
qemu - it requires compiling into SeaBIOS the PCI ids of the roms.
The CBFS payload loading is closer to what qemu wants. Basically,
CBFS (coreboot filesystem) is a mechanism that coreboot uses for
storing named files in flash. Code to mix PCI bar roms with other
roms is something SeaBIOS already handles with the CBFS system. I
doubt it would be worthwhile to introduce CBFS to qemu, but I think
adding a "named file" interface to qemu cfg would help.
That way, SeaBIOS could load roms from the PCI bar, CBFS, or qemu cfg
without having to duplicate the logic.
This came up before in the discussion at:
Right now, qemu cfg uses two ports - a file select port (0x510) and a
data port (0x511). Perhaps two new ports could be added - a file name
port (0x0512) and a file length port (0x513).
Basically, if there is some way for SeaBIOS to walk a list of "files"
in the "qemu cfg" space, then it should be straight forward to enhance
the existing code in seabios to extract and deploy roms in addition to
those found in the PCI bar.
> You mean, non-PCI x86 systems? I think -m isapc is mainly used for dos
> guests. I don't think it's really useful in combination with -kernel
> and certainly not for extboot.
I think the issue here is that a "-m isapc" machine wont be able to
run the vga rom if the vga rom is only available from a pci bar.
More information about the SeaBIOS