[SeaBIOS] Proper support for PCI-based option rom loading (was Re: [Qemu-devel] Re: qdev property bug?)

Gerd Hoffmann kraxel at redhat.com
Wed Dec 16 13:31:58 CET 2009


> 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.

I think using fw_config is the only sane way to make it work, especially 
in case we switch vga bios load to pci bar too.

base address for vga bios    is 0xc0000
base address for option roms is 0xc8000

If the vga bios is larger than 0x08000 bytes then the first option rom 
has to be loaded at a higher address.  Which is actually the case, check 
'info roms':

addr=00000000000c0000 size=0x008c00 mem=ram name="vgabios-cirrus.bin"
addr=00000000000c9000 size=0x00dc00 mem=ram name="pxe-virtio.bin"
addr=00000000fffe0000 size=0x020000 mem=rom name="bios.bin"

Thus having qemu load -- say -- linuxboot.bin and seabios load 
vgabios-cirrus.bin and pxe-virtio.bin simply isn't going to work.  qemu 
has no idea what address linuxboot.bin can be loaded at (without 
introducing dirty hacks).


More information about the SeaBIOS mailing list