From: Philipp Hahn <hahn@univention.de>
To: Doug Goldstein <cardoe@gentoo.org>
Cc: Avi Kivity <avi@redhat.com>,
KVM mailing list <kvm@vger.kernel.org>,
Juan Quintela <quintela@redhat.com>,
"qemu-devel" <qemu-devel@nongnu.org>
Subject: Re: 1.1.1 -> 1.1.2 migrate /managedsave issue
Date: Wed, 24 Oct 2012 08:59:28 +0200 [thread overview]
Message-ID: <201210240859.32887.hahn@univention.de> (raw)
In-Reply-To: <CAFWqQMSm4wf0CzdyFt=uDYmBCiZ5V_o8d5=T8vKPT2JQ+dOXyw@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2323 bytes --]
Hello Doug,
On Tuesday 23 October 2012 22:38:47 Doug Goldstein wrote:
> >>> qemu: warning: error while loading state for instance 0x0 of device
> >>> 'ram' load of migration failed
...
> >> I diagnosed that using gdb to single step kvm until I found
> >> hw/pci.c#get_pci_config_device() returning -EINVAL.
...
> But yes I can confirm that
> vmstate_load_state() which is calling field->info->get() which is
> calling get_pci_config_device() is returning -EINVAL.
...
> Any recommendations to fix this? Or do I need to kill the saved state
> and start over?
For start try to re-get the old PXE ROM files, that is for Debian re-install
the old etherboot-qemu or an older Version of the ipxe-qemu package. If that
then works again, you can go further. Otherwise you need to get the exact
index "i" where get_pci_config_device() returns -EINVAL and match that with
the PCI spec. For short see hw/pci_regs.h.
For our Debian based UCS distribution I patched qemu(-kvm) to use the old
image files (which are still available and installed in parallel to the new
files) if the pc-level is 0.14 or lower (which is the version we currently
ship; only our next release will switch to 1.1.2).
I've attached my patch FYI. That is only a work around until QEMU provides a
real solution. If you've used an e1000, that is not enougth because some more
PCI configuration bits (PCI_STATUS_CAP_LIST) were changed in an incompatible
way.
If I remember correctly there was a different bug report, where changed PCI
bits were also responsible for breaking saved states: Some PCI devices were
changed to multi-function devices (or the other way around), which also
breaks loading of previous saved stated. I think it was a bug in libvirt
which started adding an explicit "multifunction=on", while the save was done
using an implicit "multifinction=off".
(<https://forge.univention.org/bugzilla/show_bug.cgi?id=22877#c6> in our
German BZ)
Sincerely
Philipp Hahn
--
Philipp Hahn Open Source Software Engineer hahn@univention.de
Univention GmbH be open. fon: +49 421 22 232- 0
Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99
http://www.univention.de/
[-- Attachment #1.2: 0002-Bug-24702-Rom-file-compatibility.patch --]
[-- Type: text/x-diff, Size: 2942 bytes --]
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)
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Philipp Hahn <hahn@univention.de>
To: Doug Goldstein <cardoe@gentoo.org>
Cc: qemu-devel <qemu-devel@nongnu.org>, Avi Kivity <avi@redhat.com>,
KVM mailing list <kvm@vger.kernel.org>,
Juan Quintela <quintela@redhat.com>
Subject: Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
Date: Wed, 24 Oct 2012 08:59:28 +0200 [thread overview]
Message-ID: <201210240859.32887.hahn@univention.de> (raw)
In-Reply-To: <CAFWqQMSm4wf0CzdyFt=uDYmBCiZ5V_o8d5=T8vKPT2JQ+dOXyw@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2323 bytes --]
Hello Doug,
On Tuesday 23 October 2012 22:38:47 Doug Goldstein wrote:
> >>> qemu: warning: error while loading state for instance 0x0 of device
> >>> 'ram' load of migration failed
...
> >> I diagnosed that using gdb to single step kvm until I found
> >> hw/pci.c#get_pci_config_device() returning -EINVAL.
...
> But yes I can confirm that
> vmstate_load_state() which is calling field->info->get() which is
> calling get_pci_config_device() is returning -EINVAL.
...
> Any recommendations to fix this? Or do I need to kill the saved state
> and start over?
For start try to re-get the old PXE ROM files, that is for Debian re-install
the old etherboot-qemu or an older Version of the ipxe-qemu package. If that
then works again, you can go further. Otherwise you need to get the exact
index "i" where get_pci_config_device() returns -EINVAL and match that with
the PCI spec. For short see hw/pci_regs.h.
For our Debian based UCS distribution I patched qemu(-kvm) to use the old
image files (which are still available and installed in parallel to the new
files) if the pc-level is 0.14 or lower (which is the version we currently
ship; only our next release will switch to 1.1.2).
I've attached my patch FYI. That is only a work around until QEMU provides a
real solution. If you've used an e1000, that is not enougth because some more
PCI configuration bits (PCI_STATUS_CAP_LIST) were changed in an incompatible
way.
If I remember correctly there was a different bug report, where changed PCI
bits were also responsible for breaking saved states: Some PCI devices were
changed to multi-function devices (or the other way around), which also
breaks loading of previous saved stated. I think it was a bug in libvirt
which started adding an explicit "multifunction=on", while the save was done
using an implicit "multifinction=off".
(<https://forge.univention.org/bugzilla/show_bug.cgi?id=22877#c6> in our
German BZ)
Sincerely
Philipp Hahn
--
Philipp Hahn Open Source Software Engineer hahn@univention.de
Univention GmbH be open. fon: +49 421 22 232- 0
Mary-Somerville-Str.1 D-28359 Bremen fax: +49 421 22 232-99
http://www.univention.de/
[-- Attachment #1.2: 0002-Bug-24702-Rom-file-compatibility.patch --]
[-- Type: text/x-diff, Size: 2942 bytes --]
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)
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
next prev parent reply other threads:[~2012-10-24 6:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-19 22:46 1.1.1 -> 1.1.2 migrate /managedsave issue Doug Goldstein
2012-10-22 7:04 ` Philipp Hahn
2012-10-22 11:23 ` Avi Kivity
2012-10-22 11:23 ` [Qemu-devel] " Avi Kivity
2012-10-23 20:38 ` Doug Goldstein
2012-10-23 20:38 ` [Qemu-devel] " Doug Goldstein
2012-10-24 6:59 ` Philipp Hahn [this message]
2012-10-24 6:59 ` Philipp Hahn
2012-10-29 6:22 ` Doug Goldstein
2012-10-29 6:22 ` [Qemu-devel] " Doug Goldstein
2012-11-04 21:51 ` Anthony Liguori
2012-11-04 21:51 ` [Qemu-devel] " Anthony Liguori
2012-11-05 5:41 ` Doug Goldstein
2012-11-05 5:41 ` [Qemu-devel] " Doug Goldstein
2012-11-06 15:05 ` Juan Quintela
2012-11-06 15:05 ` [Qemu-devel] " Juan Quintela
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=201210240859.32887.hahn@univention.de \
--to=hahn@univention.de \
--cc=avi@redhat.com \
--cc=cardoe@gentoo.org \
--cc=kvm@vger.kernel.org \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.