[SeaBIOS] [PATCH] vgabios: Make the qemu vgabioses selectable when building for coreboot.

Kevin O'Connor kevin at koconnor.net
Tue Aug 26 21:44:57 CEST 2014


On Tue, Aug 26, 2014 at 12:56:18AM +0200, Denis 'GNUtoo' Carikli wrote:
> On Mon, 25 Aug 2014 11:35:14 -0400
> Kevin O'Connor <kevin at koconnor.net> wrote:
> > On Sun, Aug 24, 2014 at 11:45:35PM +0200, Denis 'GNUtoo' Carikli
> > wrote:
> > > The qemu vgabioses can be usefull in coreboot, since coreboot
> > >   does support qemu.
> > I'm not sure why you'd want to build the QEMU vga roms when
> > CONFIG_COREBOOT is set.  All it would do is rebuild the same roms that
> > already come with QEMU.
> I have some i945 laptops which have coreboot with the native GPU
> initialization. (I've also an Alix-1c with a geode LX).
> 
> So, I wanted to have a (virtual) machine that is closer to my
> coreboot machines.
> 
> The goal is to test the payloads way faster with qemu, then once ready,
> to try the payload on the real hardware.
> 
> Right now qemu uses the roms that comes with it, and it probably make it
> looks like a flash chip that is on the (virtual) GPU.

That's right, by default QEMU places SeaVGABIOS in the VGA device's
PCI ROM BAR.

> Here's an example of my test configuration:
> Coreboot loads grub. Then grub has an entry for SeaBIOS.
> At that point the goal is to have a functional SeaBIOS with keyboard
> and VGA graphics.
> 
> There is a lot of possible variations for such setup:
> 
> Coreboot:
> - ---------
> * Both setup(i945 laptops and qemu) can run a VGA option
>   rom(CONFIG_ON_DEVICE_ROM_RUN), or not.
>   They can run the rom in two different ways: 
>   * native(CONFIG_PCI_OPTION_ROM_RUN_REALMODE)
>   * secure(CONFIG_PCI_OPTION_ROM_RUN_YABEL)
> * It can use native graphics initialization
>   (CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT), but its selection seem to be
>   forced for qemu, it's not for the i945 laptops.
> * It can switch to VESA(CONFIG_FRAMEBUFFER_KEEP_VESA_MODE) or keep the
>   "coreboot framebuffer mode"
>   * With qemu(not yet available for the i945 laptops), it can choose a
>     resolution resolution(CONFIG_FRAMEBUFFER_SET_VESA_MODE)
> 
> SeaBIOS:
> - --------
> * Hardware specific VGA helpers(VGAHOOKS) enabled or disabled.
> * Then there is the choice of building no option
>   rom(CONFIG_NO_VGABIOS), or building the "coreboot linear
>   framebuffer" one (CONFIG_VGA_COREBOOT).

I think you may be confusing SeaBIOS with SeaVGABIOS.  Although
SeaVGABIOS is in the SeaBIOS git repo, it builds a totally separate
ROM.  The choices under the "VGA ROM" menu only impact the creation of
SeaVGABIOS (which results in out/vgabios.rom).  The options in that
menu have no impact on the main SeaBIOS rom (out/bios.bin.elf).

> Given the ammount of variations, testing on qemu could save a lot of
> time, even if testing on real hardware is unavoidable.
> 
> The i945 laptops don't have free software standalone VGA option roms.
> 
> But given the number of possibilites for testing on qemu, I was
> wondering if disabling all the VGA related options in coreboot, and
> only using SeaBIOS's vga option roms for qemu could help for getting
> started.

By default, QEMU now uses SeaVGABIOS ROMS.  So, I don't see why you'd
want to recompile them.  But, if you do, then select CONFIG_QEMU,
select CONFIG_VGA_CIRRUS (or CONFIG_VGA_BOCHS), then run make, and
then copy the vgarom to your qemu area (cp out/vgabios.bin
/path/to/somewhere/).  You can then change SeaBIOS back to build for
coreboot (select CONFIG_COREBOOT) and build the SeaBIOS rom for
coreboot.

> That would give a (hopefully working) reference configuration.
> 
> Then I would step by step modify the configurations to get something
> closer to the i945 laptops.
> 
> PS: Maybe someone has a hint on how to disable the "flash chip that
> is on the (virtual) GPU" in qemu?

I think you can by adding "-device cirrus-vga,romfile=" to the QEMU
command line.  It may need additional tweaks though.

-Kevin



More information about the SeaBIOS mailing list