From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54554) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcYS6-00043t-Ab for qemu-devel@nongnu.org; Wed, 24 Aug 2016 09:42:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bcYS3-00037P-6G for qemu-devel@nongnu.org; Wed, 24 Aug 2016 09:42:46 -0400 Received: from mx1.redhat.com ([209.132.183.28]:41157) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bcYS3-00037J-0u for qemu-devel@nongnu.org; Wed, 24 Aug 2016 09:42:43 -0400 From: "Dr. David Alan Gilbert (git)" Date: Wed, 24 Aug 2016 14:42:31 +0100 Message-Id: <1472046153-22123-5-git-send-email-dgilbert@redhat.com> In-Reply-To: <1472046153-22123-1-git-send-email-dgilbert@redhat.com> References: <1472046153-22123-1-git-send-email-dgilbert@redhat.com> Subject: [Qemu-devel] [RFC 4/6] virtio/migration: Add VMStateDescription to VirtioDeviceClass List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, mst@redhat.com, amit.shah@redhat.com, quintela@redhat.com Cc: duanj@linux.vnet.ibm.com, cornelia.huck@de.ibm.com From: "Dr. David Alan Gilbert" Provide a vmsd pointer for VirtIO devices to use instead of the load/save methods. We'll eventually kill off the load/save methods. Signed-off-by: Dr. David Alan Gilbert --- hw/virtio/virtio.c | 11 +++++++++++ include/hw/virtio/virtio.h | 2 ++ 2 files changed, 13 insertions(+) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 15ee3a7..3a4fa93 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1470,6 +1470,10 @@ void virtio_save(VirtIODevice *vdev, QEMUFile *f) vdc->save(vdev, f); } + if (vdc->vmsd) { + vmstate_save_state(f, vdc->vmsd, vdev, NULL); + } + /* Subsections */ vmstate_save_state(f, &vmstate_virtio, vdev, NULL); } @@ -1601,6 +1605,13 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f, int version_id) } } + if (vdc->vmsd) { + ret = vmstate_load_state(f, vdc->vmsd, vdev, version_id); + if (ret) { + return ret; + } + } + /* Subsections */ ret = vmstate_load_state(f, &vmstate_virtio, vdev, 1); if (ret) { diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h index d2490c1..fd386ac 100644 --- a/include/hw/virtio/virtio.h +++ b/include/hw/virtio/virtio.h @@ -124,8 +124,10 @@ typedef struct VirtioDeviceClass { * must mask in frontend instead. */ void (*guest_notifier_mask)(VirtIODevice *vdev, int n, bool mask); + /* Saving and loading of a device; use *either* save/load OR vmsd */ void (*save)(VirtIODevice *vdev, QEMUFile *f); int (*load)(VirtIODevice *vdev, QEMUFile *f, int version_id); + const VMStateDescription *vmsd; } VirtioDeviceClass; void virtio_instance_init_common(Object *proxy_obj, void *data, -- 2.7.4