Patchwork [for-1.4,0/2] fix migration failure from 1.3 due to SeaBIOS size change

login
register
mail settings
Submitter Philipp Hahn
Date Feb. 11, 2013, 4:13 p.m.
Message ID <201302111713.23490.hahn@univention.de>
Download mbox | patch
Permalink /patch/219737/
State New
Headers show

Comments

Philipp Hahn - Feb. 11, 2013, 4:13 p.m.
Hello,

On Wednesday 06 February 2013 01:48:24 Michael Roth wrote:
> Migration from 1.3 currently fails due to a mismatch between the expected
> size of 256KB and the received size of 128KB for seabios.
...
> 2) We can begin checking in past versions of SeaBIOS and other roms and
> loading those according to selected machine type. This would be similar to
> be how we've dealt with similar issues regarding the default vram size
> changing for VGA, but might not scale well with ISPs.

We currenty are carrying the attached patch with our Debian based 
distribution, which fixes a very similar issue with the PXE-BIOSs, because 
Debian provides it's own compilation of etherboot and iPXE.

As each upgrade threatens to break all your previous snapshots, would it help 
to include the BIOSs within the saved state instead of letting qemu pickup the 
current external file?

Sincerely
Philipp
Paolo Bonzini - Feb. 12, 2013, 7:51 a.m.
Il 11/02/2013 17:13, Philipp Hahn ha scritto:
> We currenty are carrying the attached patch with our Debian based 
> distribution, which fixes a very similar issue with the PXE-BIOSs, because 
> Debian provides it's own compilation of etherboot and iPXE.
> 
> As each upgrade threatens to break all your previous snapshots, would it help 
> to include the BIOSs within the saved state instead of letting qemu pickup the 
> current external file?

IIRC it does.  The problem is that the ROM regions are created before
migration starts, and thus have unexpected size.  In your patch, picking
up the correct file only matters because it tells QEMU the right size
for the ROM region.

Paolo

Patch

diff -urN qemu-kvm-1.1.2+dfsg.orig/debian/patches/romfile-compatibility.diff qemu-kvm-1.1.2+dfsg/debian/patches/romfile-compatibility.diff
--- qemu-kvm-1.1.2+dfsg.orig/debian/patches/romfile-compatibility.diff	1970-01-01 01:00:00.000000000 +0100
+++ qemu-kvm-1.1.2+dfsg/debian/patches/romfile-compatibility.diff	2012-10-08 14:25:09.225656404 +0200
@@ -0,0 +1,39 @@ 
+Bug #24702: Fix PXE ROM size mismatch
+
+For pc-0.14 and older use the PXE ROMs from the deprecated etherboot-qemu
+package, which have different sizes. Without the patch the virtual PC gets
+build with the current ROM sizes. Loading then fails because the stored PCI ROM
+BAR size mismatches the configured size.
+--- a/hw/pc_piix.c
++++ b/hw/pc_piix.c
+@@ -433,6 +433,30 @@ static QEMUMachine pc_machine_v0_15 = {
+             .driver   = "virtio-balloon-pci",\
+             .property = "event_idx",\
+             .value    = "off",\
++        },{\
++            .driver   = "ne2000",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/rtl8029.rom",\
++        },{\
++            .driver   = "rtl8139",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/rtl8139.rom",\
++        },{\
++            .driver   = "e1000",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/e1000-82540em.rom",\
++        },{\
++            .driver   = "pcnet",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/pcnet32.rom",\
++        },{\
++            .driver   = "ne2k-isa",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/ne.rom",\
++        },{\
++            .driver   = "virtio-net-pci",\
++            .property = "romfile",\
++            .value   = "/usr/lib/etherboot/virtio-net.rom",\
+         }
+ 
+ static QEMUMachine pc_machine_v0_14 = {
diff -urN qemu-kvm-1.1.2+dfsg.orig/debian/patches/series qemu-kvm-1.1.2+dfsg/debian/patches/series
--- qemu-kvm-1.1.2+dfsg.orig/debian/patches/series	2012-09-10 12:14:05.000000000 +0200
+++ qemu-kvm-1.1.2+dfsg/debian/patches/series	2012-10-08 14:24:51.497155189 +0200
@@ -8,3 +8,4 @@ 
 
 net-add--netdev-options-to-man-page.patch
 revert-serial-fix-retry-logic.patch
+romfile-compatibility.diff
diff -urN qemu-kvm-1.1.2+dfsg.orig/debian/control qemu-kvm-1.1.2+dfsg/debian/control
--- qemu-kvm-1.1.2+dfsg.orig/debian/control	2012-09-11 08:29:43.000000000 +0200
+++ qemu-kvm-1.1.2+dfsg/debian/control	2012-10-08 15:06:39.201155102 +0200
@@ -37,7 +37,8 @@ 
  seabios (>> 1.7.0~), vgabios (>= 0.6c-3~),
  qemu-keymaps, qemu-utils (>> 0.14.0),
  ipxe-qemu | ipxe (<< 1.0.0+git-20120202.f6840ba-2)
-Recommends: bridge-utils, iproute
+Recommends: bridge-utils, iproute,
+ etherboot-qemu
 Suggests: debootstrap, vde2, samba
 Provides: kvm
 Conflicts: kvm-source (<= 18-1), kvm-data (<= 66+dfsg-1.1), kvm (<< 1:0)