qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] rtl8139: IO memory is not part of vmstate


From: Alex Williamson
Subject: [Qemu-devel] Re: [PATCH] rtl8139: IO memory is not part of vmstate
Date: Thu, 09 Dec 2010 15:14:17 -0700

On Thu, 2010-12-09 at 22:49 +0100, Juan Quintela wrote:
> Alex Williamson <address@hidden> wrote:
> > The cpu_register_io_memory() value is unique to the VM instance and
> > should not be restored after migration/save.  Doing so means we
> > could be pointing at arbitrary device's io regions after migration/restore.
> >
> > In this case, if we start a VM with a single rtl8139, hot add a 2nd,
> > migrate the VM, then hot remove the added NIC, the 1st NIC stops
> > working and the VM segfaults on reboot.
> >
> > Signed-off-by: Alex Williamson <address@hidden>
> > ---
> >
> >  hw/rtl8139.c |    4 ++--
> >  1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/rtl8139.c b/hw/rtl8139.c
> > index d92981d..9c5fc84 100644
> > --- a/hw/rtl8139.c
> > +++ b/hw/rtl8139.c
> > @@ -3186,7 +3186,7 @@ static void rtl8139_pre_save(void *opaque)
> >  
> >  static const VMStateDescription vmstate_rtl8139 = {
> >      .name = "rtl8139",
> > -    .version_id = 4,
> > +    .version_id = 5,
> 
> No need to change version, format is still the same.
> 
> >      .minimum_version_id = 3,
> >      .minimum_version_id_old = 3,
> >      .post_load = rtl8139_post_load,
> > @@ -3234,7 +3234,7 @@ static const VMStateDescription vmstate_rtl8139 = {
> >  
> >          VMSTATE_UNUSED(4),
> >          VMSTATE_MACADDR(conf.macaddr, RTL8139State),
> > -        VMSTATE_INT32(rtl8139_mmio_io_addr, RTL8139State),
> > +        VMSTATE_UNUSED(4),
> 
> If we migrate from an old guest: we just ignore the value.
> If we migrate to one old guest, we send garbage, but as you told that we
> were already sending garbage, it looks ok, no?

NAK, if we don't bump the version, we don't know if we're migration
to/from a version 4 that includes the io address or not.  We have no
good way to debug different binaries on different systems.  It seems to
work today if we don't involve hotplug, so I think we have to maintain
version 4 as including the io address, and let version 5 drop it.  I
tested old to new migrations, and as you expect, it does work.

Alex




reply via email to

[Prev in Thread] Current Thread [Next in Thread]