Hi folks,
So, here is the current state of the seabios update for the upcoming qemu 3.0 release. This time it is a bit more than just the usual "update submodule and binaries".
seabios 1.11.2 is not released yet. The plan is to cherry-pick the changes needed to support the new qemu 3.0 display devices (bochs-display and ramfb) into the 1.11-stable branch for the 1.11.2 release. Current state is here: https://git.kraxel.org/cgit/seabios/log/?h=1.11-stable-testing
Changes in this patch series: - seabios submodule update (to the testing branch). - new vgabios configs for bochs-display and ramfb. - update the bios config to enables ide dma (for qnx). - drop (old) vgabios submodule and build rules. - seabios binary update. - make bochs-display and ramfb load the new vgabios roms.
Git branch for this series is here: https://git.kraxel.org/cgit/qemu/log/?h=seabios-1.11.2
cheers, Gerd
Gerd Hoffmann (7): seabios: update submodule to 1.11.2-testing seabios: add vga configs for bochs-display and ramfb seabios: enable ide dma vgabios: remove submodule and build rules. seabios: update binaries bochs-display: enable vgabios ramfb: enable vgabios
hw/display/bochs-display.c | 1 + hw/display/ramfb.c | 1 + .gitmodules | 3 --- pc-bios/bios-256k.bin | Bin 262144 -> 262144 bytes pc-bios/bios.bin | Bin 131072 -> 131072 bytes pc-bios/vgabios-cirrus.bin | Bin 38400 -> 38400 bytes pc-bios/vgabios-qxl.bin | Bin 38912 -> 38912 bytes pc-bios/vgabios-stdvga.bin | Bin 38912 -> 38912 bytes pc-bios/vgabios-virtio.bin | Bin 38912 -> 38912 bytes pc-bios/vgabios-vmware.bin | Bin 38912 -> 38912 bytes pc-bios/vgabios.bin | Bin 38400 -> 38400 bytes roms/Makefile | 20 +++----------------- roms/config.seabios-128k | 1 + roms/config.seabios-256k | 1 + roms/config.vga-bochs-display | 3 +++ roms/config.vga-ramfb | 3 +++ roms/seabios | 2 +- roms/vgabios | 1 - 18 files changed, 14 insertions(+), 22 deletions(-) create mode 100644 roms/config.vga-bochs-display create mode 100644 roms/config.vga-ramfb delete mode 160000 roms/vgabios
https://git.kraxel.org/cgit/seabios/log/?h=1.11-stable-testing
For testing, will be replaced with final 1.11.2 of course ...
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- roms/seabios | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/roms/seabios b/roms/seabios index 0551a4be2c..84c60f980e 160000 --- a/roms/seabios +++ b/roms/seabios @@ -1 +1 @@ -Subproject commit 0551a4be2ce599fb60e478b4c15e06ab6587822c +Subproject commit 84c60f980e9deb3372a55e572a8f28c6733e8c01
Both bochs-display and ramfb are devices with a simple framebuffer and no vga emulation or text mode. seavgabios has support for text mode emulation (at vgabios call level), we are using that to provide some vga compatibility support for these devices.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- roms/Makefile | 2 +- roms/config.vga-bochs-display | 3 +++ roms/config.vga-ramfb | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 roms/config.vga-bochs-display create mode 100644 roms/config.vga-ramfb
diff --git a/roms/Makefile b/roms/Makefile index 02b69fbac8..a73778f60b 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -1,5 +1,5 @@
-vgabios_variants := stdvga cirrus vmware qxl isavga virtio +vgabios_variants := stdvga cirrus vmware qxl isavga virtio bochs-display ramfb vgabios_targets := $(subst -isavga,,$(patsubst %,vgabios-%.bin,$(vgabios_variants))) pxerom_variants := e1000 e1000e eepro100 ne2k_pci pcnet rtl8139 virtio vmxnet3 pxerom_targets := 8086100e 808610d3 80861209 10500940 10222000 10ec8139 1af41000 15ad07b0 diff --git a/roms/config.vga-bochs-display b/roms/config.vga-bochs-display new file mode 100644 index 0000000000..d2adaaef66 --- /dev/null +++ b/roms/config.vga-bochs-display @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_DISPLAY_BOCHS=y +CONFIG_VGA_PCI=y diff --git a/roms/config.vga-ramfb b/roms/config.vga-ramfb new file mode 100644 index 0000000000..c809c799b9 --- /dev/null +++ b/roms/config.vga-ramfb @@ -0,0 +1,3 @@ +CONFIG_BUILD_VGABIOS=y +CONFIG_VGA_RAMFB=y +CONFIG_VGA_PCI=n
QNX reportedly requires this to boot. Should also speed up booting other guests.
Note: Upstream seabios defaults this to 'n' to due to known problems on physical hardware (qemu not affected), and wouldn't flip the default to 'y'. So we adjust our local build config accordingly.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- roms/config.seabios-128k | 1 + roms/config.seabios-256k | 1 + 2 files changed, 2 insertions(+)
diff --git a/roms/config.seabios-128k b/roms/config.seabios-128k index 486ef0e132..35b5a07d8f 100644 --- a/roms/config.seabios-128k +++ b/roms/config.seabios-128k @@ -2,6 +2,7 @@ # need to turn off features (xhci,uas) to make it fit into 128k CONFIG_QEMU=y CONFIG_ROM_SIZE=128 +CONFIG_ATA_DMA=y CONFIG_BOOTSPLASH=n CONFIG_XEN=n CONFIG_USB_OHCI=n diff --git a/roms/config.seabios-256k b/roms/config.seabios-256k index 65e5015c2f..b14b614fcc 100644 --- a/roms/config.seabios-256k +++ b/roms/config.seabios-256k @@ -1,3 +1,4 @@ # for qemu machine types 2.0 + newer CONFIG_QEMU=y CONFIG_ROM_SIZE=256 +CONFIG_ATA_DMA=y
It's the old, lgpl vgabios implementation.
Was left in as fallback when we switched to seavgabios, so we could easily switch back in case we see regressions. It's unused since years now, reportedly doesn't even build, and lacks support for recently (and not so recently) added display devices.
Zap it.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- .gitmodules | 3 --- roms/Makefile | 18 ++---------------- roms/vgabios | 1 - 3 files changed, 2 insertions(+), 20 deletions(-) delete mode 160000 roms/vgabios
diff --git a/.gitmodules b/.gitmodules index 49e9c2e3f4..d108478e0a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "roms/vgabios"] - path = roms/vgabios - url = git://git.qemu-project.org/vgabios.git/ [submodule "roms/seabios"] path = roms/seabios url = git://git.qemu-project.org/seabios.git/ diff --git a/roms/Makefile b/roms/Makefile index a73778f60b..f1ac85ae9b 100644 --- a/roms/Makefile +++ b/roms/Makefile @@ -56,8 +56,7 @@ default: @echo "nothing is build by default" @echo "available build targets:" @echo " bios -- update bios.bin (seabios)" - @echo " seavgabios -- update vgabios binaries (seabios)" - @echo " lgplvgabios -- update vgabios binaries (lgpl)" + @echo " vgabios -- update vgabios binaries (seabios)" @echo " sgabios -- update sgabios binaries" @echo " pxerom -- update nic roms (bios only)" @echo " efirom -- update nic roms (bios+efi, this needs" @@ -71,7 +70,7 @@ bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin cp seabios/builds/seabios-256k/bios.bin ../pc-bios/bios-256k.bin
-seavgabios: $(patsubst %,seavgabios-%,$(vgabios_variants)) +vgabios seavgabios: $(patsubst %,seavgabios-%,$(vgabios_variants))
seavgabios-isavga: build-seabios-config-vga-isavga cp seabios/builds/vga-isavga/vgabios.bin ../pc-bios/vgabios.bin @@ -94,17 +93,6 @@ build-seabios-config-%: config.% OUT=$(CURDIR)/seabios/builds/$*/ all
-lgplvgabios: $(patsubst %,lgplvgabios-%,$(vgabios_variants)) - -lgplvgabios-isavga: build-lgplvgabios - cp vgabios/VGABIOS-lgpl-latest.bin ../pc-bios/vgabios.bin -lgplvgabios-%: build-lgplvgabios - cp vgabios/VGABIOS-lgpl-latest.$*.bin ../pc-bios/vgabios-$*.bin - -build-lgplvgabios: - $(MAKE) -C vgabios $(vgabios_targets) - - .PHONY: sgabios skiboot sgabios: $(MAKE) -C sgabios @@ -159,8 +147,6 @@ skiboot:
clean: rm -rf seabios/.config seabios/out seabios/builds - $(MAKE) -C vgabios clean - rm -f vgabios/VGABIOS-lgpl-latest* $(MAKE) -C sgabios clean rm -f sgabios/.depend $(MAKE) -C ipxe/src veryclean diff --git a/roms/vgabios b/roms/vgabios deleted file mode 160000 index 19ea12c230..0000000000 --- a/roms/vgabios +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 19ea12c230ded95928ecaef0db47a82231c2e485
Add vgabios binary to pci rom bar.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- hw/display/bochs-display.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c index 1187d77576..12d8a66c6c 100644 --- a/hw/display/bochs-display.c +++ b/hw/display/bochs-display.c @@ -337,6 +337,7 @@ static void bochs_display_class_init(ObjectClass *klass, void *data) k->device_id = PCI_DEVICE_ID_QEMU_VGA;
k->realize = bochs_display_realize; + k->romfile = "vgabios-bochs-display.bin"; k->exit = bochs_display_exit; dc->vmsd = &vmstate_bochs_display; dc->props = bochs_display_properties;
Add vgabios binary to fw_cfg vgaroms.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- hw/display/ramfb.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/hw/display/ramfb.c b/hw/display/ramfb.c index 6867bce8ae..44c572c356 100644 --- a/hw/display/ramfb.c +++ b/hw/display/ramfb.c @@ -88,6 +88,7 @@ RAMFBState *ramfb_setup(Error **errp)
s = g_new0(RAMFBState, 1);
+ rom_add_vga("vgabios-ramfb.bin"); fw_cfg_add_file_callback(fw_cfg, "etc/ramfb", NULL, ramfb_fw_cfg_write, s, &s->cfg, sizeof(s->cfg), false);
Hi,
seabios 1.11.2 is not released yet. The plan is to cherry-pick the changes needed to support the new qemu 3.0 display devices (bochs-display and ramfb) into the 1.11-stable branch for the 1.11.2 release. Current state is here: https://git.kraxel.org/cgit/seabios/log/?h=1.11-stable-testing
seabios release 1.11.2 tagged and pushed now. Re-created the branch to make sure the commit ids in the log are correct (they changed due to a repo setup issue). Cherry-picked one additional bugfix commit.
cheers, Gerd