[SeaBIOS] [PATCH] Support more than one vga card

Mark Marshall Mark.Marshall at csr.com
Thu May 5 14:44:04 CEST 2011

> On Wed, May 04, 2011 at 11:51:02AM -0500, Anthony Liguori wrote:
> > I'm a bit confused.  With sgabios, how is it normally loaded on bare
> > metal?  I thought it's often just flashed in a dummy PCI device,
> > make part of the BIOS image with a bios editor, or even loaded as
> > part of a NICs firmware.
> Yes.
> > Is it critical that this is loaded as a VGA rom verses a normal
> option ROM?
> It runs as a regular option rom, but runs later in the boot.
> > The only difference with VGA roms are that they are loaded slightly
> > earlier in the process.
> In regard to sgabios - yes.  (In general, vga roms are special in a
> few different ways.)
> >You shouldn't lose a lot loading them with
> > normal PCI option roms.
> You lose the boot menu.  If sgabios runs after other roms, then you
> lose those rom's boot menus.
> Not having access to the very beginning of the boot really limited
> sgabios' capabilities, so the "vgaroms/" trick was added to SeaBIOS.
> (In particular, one couldn't change the boot order on a real machine.)
> It's ~3 lines of code though.

I'm a bit confused here.  If we run sgabios with the other non-VGA option ROMS do we lose the boot menu?  I would image that the boot menu would come after all option ROMs have been run?  Does sgabios work with legacy BIOS's (I assume as a non-VGA ROM)?

I always assumed that the boot sequence was this:
 - do some HW initialisation
 - load first VGA option ROM
 - do some more HW initialisation
 - load all non-VGA option ROMS
 - show boot menu

I've played with adding debug via serial to a real VGA option ROM.  This has fun problems if you are not using coreboot.  
On a real/legacy system the VGA option ROM is run very early, so that you get some output and can see what fails.  It actually seems to get run before the superIO has been fully initialised, so you can't easily get serial output.
(you also can't rely on "standard" hardware, like the timer)

My solution was to move to coreboot.


Member of the CSR plc group of companies. CSR plc registered in England and Wales, registered number 4187346, registered office Churchill House, Cambridge Business Park, Cowley Road, Cambridge, CB4 0WZ, United Kingdom

More information about the SeaBIOS mailing list