qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
       [not found] ` <201210220904.31653.hahn@univention.de>
@ 2012-10-22 11:23   ` Avi Kivity
  2012-10-23 20:38     ` Doug Goldstein
                       ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Avi Kivity @ 2012-10-22 11:23 UTC (permalink / raw)
  To: Philipp Hahn; +Cc: Doug Goldstein, qemu-devel, KVM mailing list, Juan Quintela

On 10/22/2012 09:04 AM, Philipp Hahn wrote:
> Hello Doug,
> 
> On Saturday 20 October 2012 00:46:43 Doug Goldstein wrote:
>> I'm using libvirt 0.10.2 and I had qemu-kvm 1.1.1 running all my VMs.
> ...
>> I had upgraded to qemu-kvm 1.1.2
> ... 
>> qemu: warning: error while loading state for instance 0x0 of device 'ram'
>> load of migration failed
> 
> That error can be from many things. For me it was that the PXE-ROM images for 
> the network cards were updated as well. Their size changed over the next 
> power-of-two size, so kvm needed to allocate less/more memory and changed 
> some PCI configuration registers, where the size of the ROM region is stored.
> On loading the saved state those sizes were compared and failed to validate. 
> KVM then aborts loading the saved state with that little helpful message.
> 
> So you might want to check, if your case is similar to mine.
> 
> I diagnosed that using gdb to single step kvm until I found 
> hw/pci.c#get_pci_config_device() returning -EINVAL.
> 

Seems reasonable.  Doug, please verify to see if it's the same issue or
another one.

Juan, how can we fix this?  It's clear that the option ROM size has to
be fixed and not change whenever the blob is updated.  This will fix it
for future releases.  But what to do about the ones in the field?

-- 
error compiling committee.c: too many arguments to function

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-10-22 11:23   ` [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue Avi Kivity
@ 2012-10-23 20:38     ` Doug Goldstein
  2012-10-24  6:59       ` Philipp Hahn
  2012-10-29  6:22     ` Doug Goldstein
  2012-11-04 21:51     ` Anthony Liguori
  2 siblings, 1 reply; 7+ messages in thread
From: Doug Goldstein @ 2012-10-23 20:38 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Juan Quintela, qemu-devel, KVM mailing list, Philipp Hahn

On Mon, Oct 22, 2012 at 6:23 AM, Avi Kivity <avi@redhat.com> wrote:
> On 10/22/2012 09:04 AM, Philipp Hahn wrote:
>> Hello Doug,
>>
>> On Saturday 20 October 2012 00:46:43 Doug Goldstein wrote:
>>> I'm using libvirt 0.10.2 and I had qemu-kvm 1.1.1 running all my VMs.
>> ...
>>> I had upgraded to qemu-kvm 1.1.2
>> ...
>>> qemu: warning: error while loading state for instance 0x0 of device 'ram'
>>> load of migration failed
>>
>> That error can be from many things. For me it was that the PXE-ROM images for
>> the network cards were updated as well. Their size changed over the next
>> power-of-two size, so kvm needed to allocate less/more memory and changed
>> some PCI configuration registers, where the size of the ROM region is stored.
>> On loading the saved state those sizes were compared and failed to validate.
>> KVM then aborts loading the saved state with that little helpful message.
>>
>> So you might want to check, if your case is similar to mine.
>>
>> I diagnosed that using gdb to single step kvm until I found
>> hw/pci.c#get_pci_config_device() returning -EINVAL.
>>
>
> Seems reasonable.  Doug, please verify to see if it's the same issue or
> another one.

Sorry it took a little bit to juggle the break points with libvirt and
qemu to get gdb attached correctly. 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.

>
> Juan, how can we fix this?  It's clear that the option ROM size has to
> be fixed and not change whenever the blob is updated.  This will fix it
> for future releases.  But what to do about the ones in the field?
>

Any recommendations to fix this? Or do I need to kill the saved state
and start over?

Thanks.
-- 
Doug Goldstein

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-10-23 20:38     ` Doug Goldstein
@ 2012-10-24  6:59       ` Philipp Hahn
  0 siblings, 0 replies; 7+ messages in thread
From: Philipp Hahn @ 2012-10-24  6:59 UTC (permalink / raw)
  To: Doug Goldstein; +Cc: qemu-devel, Avi Kivity, KVM mailing list, Juan Quintela


[-- 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 --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-10-22 11:23   ` [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue Avi Kivity
  2012-10-23 20:38     ` Doug Goldstein
@ 2012-10-29  6:22     ` Doug Goldstein
  2012-11-04 21:51     ` Anthony Liguori
  2 siblings, 0 replies; 7+ messages in thread
From: Doug Goldstein @ 2012-10-29  6:22 UTC (permalink / raw)
  To: Avi Kivity; +Cc: Juan Quintela, qemu-devel, KVM mailing list, Philipp Hahn

On Mon, Oct 22, 2012 at 6:23 AM, Avi Kivity <avi@redhat.com> wrote:
> On 10/22/2012 09:04 AM, Philipp Hahn wrote:
>> Hello Doug,
>>
>> On Saturday 20 October 2012 00:46:43 Doug Goldstein wrote:
>>> I'm using libvirt 0.10.2 and I had qemu-kvm 1.1.1 running all my VMs.
>> ...
>>> I had upgraded to qemu-kvm 1.1.2
>> ...
>>> qemu: warning: error while loading state for instance 0x0 of device 'ram'
>>> load of migration failed
>>
>> That error can be from many things. For me it was that the PXE-ROM images for
>> the network cards were updated as well. Their size changed over the next
>> power-of-two size, so kvm needed to allocate less/more memory and changed
>> some PCI configuration registers, where the size of the ROM region is stored.
>> On loading the saved state those sizes were compared and failed to validate.
>> KVM then aborts loading the saved state with that little helpful message.
>>
>> So you might want to check, if your case is similar to mine.
>>
>> I diagnosed that using gdb to single step kvm until I found
>> hw/pci.c#get_pci_config_device() returning -EINVAL.
>>
>
> Seems reasonable.  Doug, please verify to see if it's the same issue or
> another one.
>
> Juan, how can we fix this?  It's clear that the option ROM size has to
> be fixed and not change whenever the blob is updated.  This will fix it
> for future releases.  But what to do about the ones in the field?
>
> --
> error compiling committee.c: too many arguments to function

Avi,

Please consider the following patch based off qemu master:

http://article.gmane.org/gmane.comp.emulators.kvm.devel/100231

It should hopefully help users with this issue in the future.

-- 
Doug Goldstein

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-10-22 11:23   ` [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue Avi Kivity
  2012-10-23 20:38     ` Doug Goldstein
  2012-10-29  6:22     ` Doug Goldstein
@ 2012-11-04 21:51     ` Anthony Liguori
  2012-11-05  5:41       ` Doug Goldstein
  2 siblings, 1 reply; 7+ messages in thread
From: Anthony Liguori @ 2012-11-04 21:51 UTC (permalink / raw)
  To: Avi Kivity, Philipp Hahn
  Cc: Doug Goldstein, qemu-devel, KVM mailing list, Juan Quintela

Avi Kivity <avi@redhat.com> writes:

> On 10/22/2012 09:04 AM, Philipp Hahn wrote:
>> Hello Doug,
>> 
>> On Saturday 20 October 2012 00:46:43 Doug Goldstein wrote:
>>> I'm using libvirt 0.10.2 and I had qemu-kvm 1.1.1 running all my VMs.
>> ...
>>> I had upgraded to qemu-kvm 1.1.2
>> ... 
>>> qemu: warning: error while loading state for instance 0x0 of device 'ram'
>>> load of migration failed
>> 
>> That error can be from many things. For me it was that the PXE-ROM images for 
>> the network cards were updated as well. Their size changed over the next 
>> power-of-two size, so kvm needed to allocate less/more memory and changed 
>> some PCI configuration registers, where the size of the ROM region is stored.
>> On loading the saved state those sizes were compared and failed to validate. 
>> KVM then aborts loading the saved state with that little helpful message.
>> 
>> So you might want to check, if your case is similar to mine.
>> 
>> I diagnosed that using gdb to single step kvm until I found 
>> hw/pci.c#get_pci_config_device() returning -EINVAL.
>> 
>
> Seems reasonable.  Doug, please verify to see if it's the same issue or
> another one.
>
> Juan, how can we fix this?  It's clear that the option ROM size has to
> be fixed and not change whenever the blob is updated.  This will fix it
> for future releases.  But what to do about the ones in the field?

This is not a problem upstream because we don't alter the ROMs.  If we
did, we would keep the old ROMs around and set the romfile property in
the compatible machine.

This is what distros that are shipping ROMs outside of QEMU ought to
do.  It's a bug to unconditionally change the ROMs (in a guest visible
way) without adding compatibility support.

Regards,

Anthony Liguori

>
> -- 
> error compiling committee.c: too many arguments to function
> --
> To unsubscribe from this list: send the line "unsubscribe kvm" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-11-04 21:51     ` Anthony Liguori
@ 2012-11-05  5:41       ` Doug Goldstein
  2012-11-06 15:05         ` Juan Quintela
  0 siblings, 1 reply; 7+ messages in thread
From: Doug Goldstein @ 2012-11-05  5:41 UTC (permalink / raw)
  To: Anthony Liguori
  Cc: qemu-devel, Juan Quintela, Avi Kivity, KVM mailing list,
	Philipp Hahn

On Sun, Nov 4, 2012 at 3:51 PM, Anthony Liguori <anthony@codemonkey.ws> wrote:
> Avi Kivity <avi@redhat.com> writes:
>
>> On 10/22/2012 09:04 AM, Philipp Hahn wrote:
>>> Hello Doug,
>>>
>>> On Saturday 20 October 2012 00:46:43 Doug Goldstein wrote:
>>>> I'm using libvirt 0.10.2 and I had qemu-kvm 1.1.1 running all my VMs.
>>> ...
>>>> I had upgraded to qemu-kvm 1.1.2
>>> ...
>>>> qemu: warning: error while loading state for instance 0x0 of device 'ram'
>>>> load of migration failed
>>>
>>> That error can be from many things. For me it was that the PXE-ROM images for
>>> the network cards were updated as well. Their size changed over the next
>>> power-of-two size, so kvm needed to allocate less/more memory and changed
>>> some PCI configuration registers, where the size of the ROM region is stored.
>>> On loading the saved state those sizes were compared and failed to validate.
>>> KVM then aborts loading the saved state with that little helpful message.
>>>
>>> So you might want to check, if your case is similar to mine.
>>>
>>> I diagnosed that using gdb to single step kvm until I found
>>> hw/pci.c#get_pci_config_device() returning -EINVAL.
>>>
>>
>> Seems reasonable.  Doug, please verify to see if it's the same issue or
>> another one.
>>
>> Juan, how can we fix this?  It's clear that the option ROM size has to
>> be fixed and not change whenever the blob is updated.  This will fix it
>> for future releases.  But what to do about the ones in the field?
>
> This is not a problem upstream because we don't alter the ROMs.  If we
> did, we would keep the old ROMs around and set the romfile property in
> the compatible machine.
>
> This is what distros that are shipping ROMs outside of QEMU ought to
> do.  It's a bug to unconditionally change the ROMs (in a guest visible
> way) without adding compatibility support.
>
> Regards,
>
> Anthony Liguori
>

Anthony,

Gerd updated seabios on August 7th and before that on April 17. The
default VGA ROM size also changed in recent releases. There are no old
versions of the ROMs included once these updates are performed so a
user building a new version from source will hit this problem. Juan
Quintela even mentioned that he has been bit by this issue and had to
use gdb to track it down as did Philipp that responded earlier in the
thread. The patch is a simple fprintf() which would have saved at
least 3 users the effort of tracking down an issue with gdb. So I urge
you to reconsider.

Thanks.
-- 
Doug Goldstein

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue
  2012-11-05  5:41       ` Doug Goldstein
@ 2012-11-06 15:05         ` Juan Quintela
  0 siblings, 0 replies; 7+ messages in thread
From: Juan Quintela @ 2012-11-06 15:05 UTC (permalink / raw)
  To: Doug Goldstein
  Cc: qemu-devel, KVM mailing list, Avi Kivity, Anthony Liguori,
	Philipp Hahn

Doug Goldstein <cardoe@gentoo.org> wrote:
> On Sun, Nov 4, 2012 at 3:51 PM, Anthony Liguori <anthony@codemonkey.ws> wrote:
>>>
>>> Seems reasonable.  Doug, please verify to see if it's the same issue or
>>> another one.
>>>
>>> Juan, how can we fix this?  It's clear that the option ROM size has to
>>> be fixed and not change whenever the blob is updated.  This will fix it
>>> for future releases.  But what to do about the ones in the field?
>>
>> This is not a problem upstream because we don't alter the ROMs.  If we
>> did, we would keep the old ROMs around and set the romfile property in
>> the compatible machine.
>>
>> This is what distros that are shipping ROMs outside of QEMU ought to
>> do.  It's a bug to unconditionally change the ROMs (in a guest visible
>> way) without adding compatibility support.
>>
>> Regards,
>>
>> Anthony Liguori
>>
>
> Anthony,
>
> Gerd updated seabios on August 7th and before that on April 17. The
> default VGA ROM size also changed in recent releases. There are no old
> versions of the ROMs included once these updates are performed so a
> user building a new version from source will hit this problem. Juan
> Quintela even mentioned that he has been bit by this issue and had to
> use gdb to track it down as did Philipp that responded earlier in the
> thread. The patch is a simple fprintf() which would have saved at
> least 3 users the effort of tracking down an issue with gdb. So I urge
> you to reconsider.

I hit this problem.  But it was a bug, the problem was to detect it.

The problem was doing migration to an old version, we now "round" the
RAM amount to a multiple of 8k.  If your old ram memory was mulitple of
4k, you get this prolbem with migration.

And it only prints "migration failed".  Printing a message telling that:
memory size of %foo is %d and expected %d would have make error trivial
to found.

Later, Juan.

PD.  Problem was really a bit more complex than this, this is a
     simplification.

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2012-11-06 15:05 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <CAFWqQMRAOuw3sDWDC1cGofuvWNiAffiL5MpRqFnuihQizr9+vg@mail.gmail.com>
     [not found] ` <201210220904.31653.hahn@univention.de>
2012-10-22 11:23   ` [Qemu-devel] 1.1.1 -> 1.1.2 migrate /managedsave issue Avi Kivity
2012-10-23 20:38     ` Doug Goldstein
2012-10-24  6:59       ` Philipp Hahn
2012-10-29  6:22     ` Doug Goldstein
2012-11-04 21:51     ` Anthony Liguori
2012-11-05  5:41       ` Doug Goldstein
2012-11-06 15:05         ` Juan Quintela

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).