Hi,
Here is a patch for discussing how to best make qemu vgabioses selectable for all targets, while not making it confusing for users.
Denis.
The qemu vgabioses can be usefull in coreboot, since coreboot does support qemu.
Signed-off-by: Denis 'GNUtoo' Carikli GNUtoo@no-log.org --- vgasrc/Kconfig | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/vgasrc/Kconfig b/vgasrc/Kconfig index 951240c..719c90b 100644 --- a/vgasrc/Kconfig +++ b/vgasrc/Kconfig @@ -11,7 +11,7 @@ menu "VGA ROM" Do not build a VGA BIOS.
config VGA_STANDARD_VGA - depends on QEMU + depends on QEMU_HARDWARE bool "QEMU/Bochs Original IBM 256K VGA" select VGA_STDVGA_PORTS help @@ -19,7 +19,7 @@ menu "VGA ROM" on emulators.
config VGA_CIRRUS - depends on QEMU + depends on QEMU_HARDWARE bool "QEMU/Bochs Cirrus SVGA" select VGA_STDVGA_PORTS help @@ -28,7 +28,7 @@ menu "VGA ROM" intended for use on real Cirrus hardware.
config VGA_BOCHS - depends on QEMU + depends on QEMU_HARDWARE bool "QEMU/Bochs VBE SVGA" select VGA_STDVGA_PORTS help
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.
-Kevin
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On Mon, 25 Aug 2014 11:35:14 -0400 Kevin O'Connor kevin@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.
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).
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.
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?
Denis.
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@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
On Tue, 26 Aug 2014 15:44:57 -0400 Kevin O'Connor kevin@koconnor.net wrote:
Here's an example of my test configuration:
[...]
There is a lot of possible variations for such setup:
Coreboot:
[...]
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).
I was aware of it, but the way I phrased it is misleading indeed, sorry for the confusion.
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.
Yes, the idea was to make it easy for everybody, and not to have to change configuration for building the option rom: some options in .config might have been lost because of that (since Kconfig do select some options based on what the current configuration is).
I think you can by adding "-device cirrus-vga,romfile=" to the QEMU command line. It may need additional tweaks though.
Thanks a lot for the tip, I'll try when I find the time.
Denis.
Kevin O'Connor wrote:
Although SeaVGABIOS is in the SeaBIOS git repo, it builds a totally separate ROM.
How much source code overlap is there?
//Peter
On Fri, Sep 12, 2014 at 11:43:51PM +0200, Peter Stuge wrote:
Kevin O'Connor wrote:
Although SeaVGABIOS is in the SeaBIOS git repo, it builds a totally separate ROM.
How much source code overlap is there?
From the makefile, these seabios files get pulled into seavgabios:
src/output.c src/string.c src/hw/pci.c src/hw/serialio.c src/fw/coreboot.c
It's basically debugging, pci config access, some simple string functions, and coreboot table traversal.
There are also some header files that get pulled in for generic definitions (eg, src/x86.h, src/std/*.h).
-Kevin
Kevin O'Connor wrote:
Although SeaVGABIOS is in the SeaBIOS git repo, it builds a totally separate ROM.
How much source code overlap is there?
It's basically debugging, pci config access, some simple string functions, and coreboot table traversal.
Would it make sense to turn them into two separate projects?
//Peter
On Sat, Sep 13, 2014 at 12:41:54AM +0200, Peter Stuge wrote:
Kevin O'Connor wrote:
Although SeaVGABIOS is in the SeaBIOS git repo, it builds a totally separate ROM.
How much source code overlap is there?
It's basically debugging, pci config access, some simple string functions, and coreboot table traversal.
Would it make sense to turn them into two separate projects?
If by "separate projects" you mean different web sites, email lists, etc, then no, I don't think it would be worth it.
If you mean separate git repos, then that is an open question. I'd lean towards keeping them together right now. Although they produce mostly separate binaries, there is a bit of infrastructure and conceptual overlap to the building and executing of 16bit code that they both share.
-Kevin
Kevin O'Connor wrote:
Would it make sense to turn them into two separate projects?
If you mean separate git repos, then that is an open question.
Right, that's what I meant.
I'd lean towards keeping them together right now.
Could another option be to allow building of both, without needing to reconfigure in between?
It does make sense to me to have two repos for what seems to be two mostly different codebases resulting in very different binaries.
//Peter
On So, 2014-08-24 at 23:45 +0200, Denis 'GNUtoo' Carikli wrote:
Hi,
Here is a patch for discussing how to best make qemu vgabioses selectable for all targets, while not making it confusing for users.
What is the point?
As normal user you don't need it, qemu ships with vgabios binaries and seabios will load them just fine from the pci rom bar even when running on coreboot.
For distro packaging you have to re-configure seabios multiple times anyway to build vgabios variants for all vga variants, so this doesn't buy you much.
cheers, Gerd