From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:48119) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmjp7-0004qf-2U for qemu-devel@nongnu.org; Wed, 21 Sep 2016 11:52:37 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bmjp6-0005lb-6a for qemu-devel@nongnu.org; Wed, 21 Sep 2016 11:52:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:60588) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bmjp5-0005jy-US for qemu-devel@nongnu.org; Wed, 21 Sep 2016 11:52:36 -0400 From: Stefan Hajnoczi Date: Wed, 21 Sep 2016 16:52:20 +0100 Message-Id: <1474473146-19337-4-git-send-email-stefanha@redhat.com> In-Reply-To: <1474473146-19337-1-git-send-email-stefanha@redhat.com> References: <1474473146-19337-1-git-send-email-stefanha@redhat.com> Subject: [Qemu-devel] [PATCH v5 3/9] virtio: migrate vdev->broken flag List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Cornelia Huck , Fam Zheng , Stefan Hajnoczi Send a subsection if the vdev->broken flag is set. This allows live migration of broken virtio devices. The subsection is only sent if vdev->broken has been set. In most cases the flag will be clear and no subsection will be sent. Signed-off-by: Stefan Hajnoczi Reviewed-by: Cornelia Huck --- hw/virtio/virtio.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c index 1671ea8..bac6b51 100644 --- a/hw/virtio/virtio.c +++ b/hw/virtio/virtio.c @@ -1343,6 +1343,13 @@ static bool virtio_extra_state_needed(void *opaque) k->has_extra_state(qbus->parent); } +static bool virtio_broken_needed(void *opaque) +{ + VirtIODevice *vdev = opaque; + + return vdev->broken; +} + static const VMStateDescription vmstate_virtqueue = { .name = "virtqueue_state", .version_id = 1, @@ -1457,6 +1464,17 @@ static const VMStateDescription vmstate_virtio_64bit_features = { } }; +static const VMStateDescription vmstate_virtio_broken = { + .name = "virtio/broken", + .version_id = 1, + .minimum_version_id = 1, + .needed = &virtio_broken_needed, + .fields = (VMStateField[]) { + VMSTATE_BOOL(broken, VirtIODevice), + VMSTATE_END_OF_LIST() + } +}; + static const VMStateDescription vmstate_virtio = { .name = "virtio", .version_id = 1, @@ -1470,6 +1488,7 @@ static const VMStateDescription vmstate_virtio = { &vmstate_virtio_64bit_features, &vmstate_virtio_virtqueues, &vmstate_virtio_ringsize, + &vmstate_virtio_broken, &vmstate_virtio_extra_state, NULL } -- 2.7.4