From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49360) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bFm7L-0008TF-MU for qemu-devel@nongnu.org; Wed, 22 Jun 2016 13:39:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bFm7I-0003XQ-D2 for qemu-devel@nongnu.org; Wed, 22 Jun 2016 13:39:11 -0400 Received: from mx0b-001b2d01.pphosted.com ([148.163.158.5]:45301 helo=mx0a-001b2d01.pphosted.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bFm7I-0003Ww-7I for qemu-devel@nongnu.org; Wed, 22 Jun 2016 13:39:08 -0400 Received: from pps.filterd (m0098414.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.16.0.11/8.16.0.11) with SMTP id u5MHY1P7138851 for ; Wed, 22 Jun 2016 13:39:07 -0400 Received: from e06smtp05.uk.ibm.com (e06smtp05.uk.ibm.com [195.75.94.101]) by mx0b-001b2d01.pphosted.com with ESMTP id 23qd1hbe4e-1 (version=TLSv1.2 cipher=AES256-SHA bits=256 verify=NOT) for ; Wed, 22 Jun 2016 13:39:07 -0400 Received: from localhost by e06smtp05.uk.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 22 Jun 2016 18:39:06 +0100 Received: from b06cxnps3075.portsmouth.uk.ibm.com (d06relay10.portsmouth.uk.ibm.com [9.149.109.195]) by d06dlp03.portsmouth.uk.ibm.com (Postfix) with ESMTP id CB9881B0804B for ; Wed, 22 Jun 2016 18:40:15 +0100 (BST) Received: from d06av05.portsmouth.uk.ibm.com (d06av05.portsmouth.uk.ibm.com [9.149.37.229]) by b06cxnps3075.portsmouth.uk.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id u5MHd3j014811456 for ; Wed, 22 Jun 2016 17:39:03 GMT Received: from d06av05.portsmouth.uk.ibm.com (localhost [127.0.0.1]) by d06av05.portsmouth.uk.ibm.com (8.14.4/8.14.4/NCO v10.0 AVout) with ESMTP id u5MHd3Gd021514 for ; Wed, 22 Jun 2016 11:39:03 -0600 Date: Wed, 22 Jun 2016 19:39:02 +0200 From: Cornelia Huck In-Reply-To: <1466536447-30146-4-git-send-email-dgilbert@redhat.com> References: <1466536447-30146-1-git-send-email-dgilbert@redhat.com> <1466536447-30146-4-git-send-email-dgilbert@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Message-Id: <20160622193902.29dcab12.cornelia.huck@de.ibm.com> Subject: Re: [Qemu-devel] [PATCH 03/13] virtio: Migration helper function and macro List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Dr. David Alan Gilbert (git)" Cc: qemu-devel@nongnu.org, mst@redhat.com, amit.shah@redhat.com, quintela@redhat.com, kraxel@redhat.com On Tue, 21 Jun 2016 20:13:57 +0100 "Dr. David Alan Gilbert (git)" wrote: > From: "Dr. David Alan Gilbert" > > To make conversion of virtio devices to VMState simple > at first add a helper function for the simple virtio_save > case and a helper macro that defines the VMState structure. > These will probably go away or change as more of the virtio > code gets converted. > > Signed-off-by: Dr. David Alan Gilbert > --- > hw/virtio/virtio.c | 6 ++++++ > include/hw/virtio/virtio.h | 20 ++++++++++++++++++++ > 2 files changed, 26 insertions(+) > > diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c > index 7ed06ea..7322018 100644 > --- a/hw/virtio/virtio.c > +++ b/hw/virtio/virtio.c > @@ -1444,6 +1444,12 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f) > vmstate_save_state(f, &vmstate_virtio, vdev, NULL); > } > > +/* A wrapper for use as a VMState .put function */ > +void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t size) > +{ > + virtio_save(VIRTIO_DEVICE(opaque), f); > +} > + Providing a macro that generates a .get function for a given version is probably overkill. > static int virtio_set_features_nocheck(VirtIODevice *vdev, uint64_t val) > { > VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev); > diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h > index 96b581d..b6887e7 100644 > --- a/include/hw/virtio/virtio.h > +++ b/include/hw/virtio/virtio.h > @@ -167,6 +167,26 @@ bool virtio_should_notify(VirtIODevice *vdev, VirtQueue *vq); > void virtio_notify(VirtIODevice *vdev, VirtQueue *vq); > > void virtio_save(VirtIODevice *vdev, QEMUFile *f); > +void virtio_vmstate_save(QEMUFile *f, void *opaque, size_t size); > + > +#define VMSTATE_VIRTIO_DEVICE(devname, v, getf, putf) \ > + static const VMStateDescription vmstate_virtio_ ## devname = { \ > + .name = "virtio-" #devname , \ > + .minimum_version_id = v, \ > + .version_id = v, \ > + .fields = (VMStateField[]) { \ > + { \ > + .name = "virtio", \ > + .info = &(const VMStateInfo) {\ > + .name = "virtio", \ > + .get = getf, \ > + .put = putf, \ > + }, \ > + .flags = VMS_SINGLE, \ > + }, \ > + VMSTATE_END_OF_LIST() \ > + } \ > + } > > int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id); > Looks reasonable as a first step. Reviewed-by: Cornelia Huck