All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kurz <gkurz@linux.vnet.ibm.com>
To: "Michael S. Tsirkin" <mst@redhat.com>
Cc: "Kevin Wolf" <kwolf@redhat.com>, "Fam Zheng" <famz@redhat.com>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Juan Quintela" <quintela@redhat.com>,
	"Alexander Graf" <agraf@suse.de>,
	qemu-devel@nongnu.org, "Anthony Liguori" <aliguori@amazon.com>,
	"Amit Shah" <amit.shah@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH RFC 1/8] virtio: add subsections to the migration stream
Date: Thu, 15 May 2014 12:21:36 +0200	[thread overview]
Message-ID: <20140515122136.02e4388f@bahia.local> (raw)
In-Reply-To: <20140515101212.GA22512@redhat.com>

On Thu, 15 May 2014 13:12:12 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:

> On Thu, May 15, 2014 at 12:08:26PM +0200, Greg Kurz wrote:
> > On Thu, 15 May 2014 11:20:18 +0200
> > Andreas Färber <afaerber@suse.de> wrote:
> > > Am 15.05.2014 09:04, schrieb Greg Kurz:
> > > > On Thu, 15 May 2014 12:16:35 +0530
> > > > Amit Shah <amit.shah@redhat.com> wrote:
> > > >> On (Thu) 15 May 2014 [09:23:51], Michael S. Tsirkin wrote:
> > > >>> On Thu, May 15, 2014 at 11:34:25AM +0530, Amit Shah wrote:
> > > >>>> On (Wed) 14 May 2014 [17:41:38], Greg Kurz wrote:
> > > >>>>> Since each virtio device is streamed in its own section, the idea is to
> > > >>>>> stream subsections between the end of the device section and the start
> > > >>>>> of the next sections. This allows an older QEMU to complain and exit
> > > >>>>> when fed with subsections:
> > > >>>>>
> > > >>>>> Unknown savevm section type 5
> > > >>>>> Error -22 while loading VM state
> > > >>>>
> > > >>>> Please make this configurable -- either via configure or device
> > > >>>> properties.  That avoids having to break existing configurations that
> > > >>>> work without this patch.
> > > 
> > > Since backwards migration is not supported upstream, wouldn't it be
> > > easiest to just add support for the subsection marker and skipping to
> > > the end of section in that downstream?
> > > 
> > 
> > Not sure I understand well... Do you suggest to stream the markers first,
> > then the device, then the subsections ? And then there would be a way
> > we can have the subsections restored before the device ?
> > 
> > > >>>>> All users of virtio_load()/virtio_save() need to be patched because the
> > > >>>>> subsections are streamed AFTER the device itself.
> > > 
> > > IMO this is calling for inversion of control - i.e. let virtio devices
> > > call generic load/save functions that then dispatch to device-specific
> > > code and let us add common stuff in a central place without forgetting
> > > to add calls in some new device.
> > > 
> > 
> > That makes a lot of sense.
> > 
> > > >>>> Since all have the same fixup, I'm wondering if a new section can be
> > > >>>> added to the virtio-bus itself, which gets propagated to all devices
> > > >>>> upon load in the dest.
> > > >>>
> > > >>> This calls for a way for devices to inherit properties from the bus,
> > > >>> which doesn't exist ATM.
> > > >>> Fine but let's not hold up this patchset because of this.
> > > >>
> > > >> No, only suggestion is to add a migration section in the bus, and then
> > > >> it's easier to do this in the post-migrate functions for each device
> > > >> -- so only one new section gets introduced instead of all devices
> > > >> being modified to send a new subsection.
> > > >>
> > > > 
> > > > The main problem I see is that virtio sucks: as you see in patch 8, we have
> > > > to be careful not to call vring or virtqueue stuff before the device knows
> > > > its endianness or it breaks... I need to study how the virtio-bus gets
> > > > migrated to ensure the endian section is streamed before the devices.
> > > 
> > > There is no ordering guarantee. The state needs to be migrated in the
> > > device or bus where it sits, if post-load processing is required; i.e.,
> > > if it's in VirtIODevice then something like this series, if it were on
> > > VirtioBus exclusively (device asking bus for its endianness each time
> > > and does not do post-load stuff) then endianness could be migrated as a
> > > new bus section. Not sure if that would help the "broken" state though?
> > > 
> > 
> > IIRW the "broken" state was proposed as a per-device property...
> > 
> > Fam,
> > 
> > Do you have plans about the "broken" property ? Is it still needed ?
> > 
> > > Would touch on Stefan's alias properties for anything but virtio-mmio.
> > > 
> > 
> > OMG... maybe I should hold on then.
> 
> No need to wait imho.
> Can this be made even simpler - call this stuff
> from virtio_save/virtio_load?
> 

Andreas already suggested this inversion of control.

> Why not?
> 

No reason indeed. I'll rewrite the code that way ! :)

> 
> > > Regards,
> > > Andreas
> > > 
> > 
> > Thanks !
> > 
> > -- 
> > Gregory Kurz                                     kurzgreg@fr.ibm.com
> >                                                  gkurz@linux.vnet.ibm.com
> > Software Engineer @ IBM/Meiosys                  http://www.ibm.com
> > Tel +33 (0)562 165 496
> > 
> > "Anarchy is about taking complete responsibility for yourself."
> >         Alan Moore.
> 

Thnaks !

-- 
Gregory Kurz                                     kurzgreg@fr.ibm.com
                                                 gkurz@linux.vnet.ibm.com
Software Engineer @ IBM/Meiosys                  http://www.ibm.com
Tel +33 (0)562 165 496

"Anarchy is about taking complete responsibility for yourself."
        Alan Moore.

  reply	other threads:[~2014-05-15 10:21 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-14 15:41 [Qemu-devel] [PATCH RFC 0/8] virtio: migrate new properties Greg Kurz
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 1/8] virtio: add subsections to the migration stream Greg Kurz
2014-05-15  6:04   ` Amit Shah
2014-05-15  6:23     ` Michael S. Tsirkin
2014-05-15  6:46       ` Amit Shah
2014-05-15  7:04         ` Greg Kurz
2014-05-15  9:20           ` Andreas Färber
2014-05-15  9:52             ` Michael S. Tsirkin
2014-05-15  9:58               ` Andreas Färber
2014-05-15 10:03                 ` Michael S. Tsirkin
2014-05-15 10:11                   ` Andreas Färber
2014-05-15 10:16                     ` Michael S. Tsirkin
2014-05-15 12:00                       ` Andreas Färber
2014-05-15 12:20                         ` Michael S. Tsirkin
2014-05-15 13:47                           ` Markus Armbruster
2014-05-15 13:49                         ` Greg Kurz
2014-05-15 12:33               ` Markus Armbruster
2014-05-15 12:58                 ` Michael S. Tsirkin
2014-05-15 13:35                   ` Greg Kurz
2014-05-15 10:08             ` Greg Kurz
2014-05-15 10:12               ` Michael S. Tsirkin
2014-05-15 10:21                 ` Greg Kurz [this message]
2014-05-15 10:16               ` Greg Kurz
2014-05-16  9:14               ` Fam Zheng
2014-05-16  9:22                 ` Andreas Färber
2014-05-16  9:40                   ` Fam Zheng
2014-05-16  9:48                     ` Greg Kurz
2014-05-17 18:29           ` Michael S. Tsirkin
2014-05-15  7:14         ` Michael S. Tsirkin
2014-05-15  6:49     ` Greg Kurz
2014-05-15  6:55       ` Amit Shah
2014-05-15  7:12       ` Michael S. Tsirkin
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 2/8] virtio-net: migrate subsections Greg Kurz
2014-05-14 15:41 ` [Qemu-devel] [PATCH RFC 3/8] virtio-blk: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 4/8] virtio-scsi: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 5/8] virtio-serial: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 6/8] virtio-balloon: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 7/8] virtio-rng: " Greg Kurz
2014-05-14 15:42 ` [Qemu-devel] [PATCH RFC 8/8] virtio: add endian-ambivalent support to VirtIODevice Greg Kurz
     [not found]   ` <5384A8D2.8050104@redhat.com>
     [not found]     ` <20140529111253.4ff55199@bahia.local>
     [not found]       ` <538708FA.4070309@redhat.com>
2014-06-12  7:43         ` Greg Kurz
2014-06-12  7:54           ` Michael S. Tsirkin
2014-06-12  8:47             ` Greg Kurz
2014-06-12  9:05               ` Michael S. Tsirkin
2014-06-12  9:06               ` Alexander Graf
2014-06-12  8:55             ` Alexander Graf
2014-06-12  9:07               ` Michael S. Tsirkin
2014-06-12  9:08                 ` Alexander Graf
2014-06-12  8:55           ` Paolo Bonzini
2014-06-12  8:57             ` Alexander Graf
2014-06-12  9:06             ` Greg Kurz
2014-06-12  9:19               ` Paolo Bonzini
2014-06-12  9:37                 ` Michael S. Tsirkin
2014-06-12  9:39                   ` Paolo Bonzini
2014-06-12  9:43                     ` Alexander Graf
2014-06-12 10:14                       ` Greg Kurz
2014-06-12 10:39                         ` Alexander Graf
2014-06-12 10:50                           ` Greg Kurz
2014-06-12 10:58                             ` Alexander Graf
2014-06-12 10:59                             ` Michael S. Tsirkin
2014-06-12 11:10                               ` Greg Kurz
2014-06-12 10:57                         ` Michael S. Tsirkin
2014-06-12 10:56                       ` Michael S. Tsirkin
2014-06-12 10:55                     ` Michael S. Tsirkin

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=20140515122136.02e4388f@bahia.local \
    --to=gkurz@linux.vnet.ibm.com \
    --cc=afaerber@suse.de \
    --cc=agraf@suse.de \
    --cc=aliguori@amazon.com \
    --cc=amit.shah@redhat.com \
    --cc=famz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@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.