[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 11/15] virtio: add userspace migration for packed
From: |
wexu |
Subject: |
[Qemu-devel] [PATCH v2 11/15] virtio: add userspace migration for packed ring |
Date: |
Wed, 16 Jan 2019 13:31:16 -0500 |
From: Wei Xu <address@hidden>
Signed-off-by: Wei Xu <address@hidden>
---
hw/virtio/virtio.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 0bcf8a5..722a4fd 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2346,6 +2346,13 @@ static bool virtio_virtqueue_needed(void *opaque)
return virtio_host_has_feature(vdev, VIRTIO_F_VERSION_1);
}
+static bool virtio_packed_virtqueue_needed(void *opaque)
+{
+ VirtIODevice *vdev = opaque;
+
+ return virtio_host_has_feature(vdev, VIRTIO_F_RING_PACKED);
+}
+
static bool virtio_ringsize_needed(void *opaque)
{
VirtIODevice *vdev = opaque;
@@ -2387,6 +2394,21 @@ static const VMStateDescription vmstate_virtqueue = {
}
};
+static const VMStateDescription vmstate_packed_virtqueue = {
+ .name = "packed_virtqueue_state",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .fields = (VMStateField[]) {
+ VMSTATE_BOOL(avail_wrap_counter, struct VirtQueue),
+ VMSTATE_BOOL(event_wrap_counter, struct VirtQueue),
+ VMSTATE_BOOL(used_wrap_counter, struct VirtQueue),
+ VMSTATE_UINT16(used_idx, struct VirtQueue),
+ VMSTATE_UINT16(shadow_avail_idx, struct VirtQueue),
+ VMSTATE_UINT32(inuse, struct VirtQueue),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static const VMStateDescription vmstate_virtio_virtqueues = {
.name = "virtio/virtqueues",
.version_id = 1,
@@ -2399,6 +2421,18 @@ static const VMStateDescription
vmstate_virtio_virtqueues = {
}
};
+static const VMStateDescription vmstate_virtio_packed_virtqueues = {
+ .name = "virtio/packed_virtqueues",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .needed = &virtio_packed_virtqueue_needed,
+ .fields = (VMStateField[]) {
+ VMSTATE_STRUCT_VARRAY_POINTER_KNOWN(vq, struct VirtIODevice,
+ VIRTIO_QUEUE_MAX, 0, vmstate_packed_virtqueue,
VirtQueue),
+ VMSTATE_END_OF_LIST()
+ }
+};
+
static const VMStateDescription vmstate_ringsize = {
.name = "ringsize_state",
.version_id = 1,
@@ -2516,6 +2550,7 @@ static const VMStateDescription vmstate_virtio = {
&vmstate_virtio_device_endian,
&vmstate_virtio_64bit_features,
&vmstate_virtio_virtqueues,
+ &vmstate_virtio_packed_virtqueues,
&vmstate_virtio_ringsize,
&vmstate_virtio_broken,
&vmstate_virtio_extra_state,
@@ -2791,6 +2826,10 @@ int virtio_load(VirtIODevice *vdev, QEMUFile *f, int
version_id)
virtio_queue_update_rings(vdev, i);
}
+ if (virtio_vdev_has_feature(vdev, VIRTIO_F_RING_PACKED)) {
+ continue;
+ }
+
nheads = vring_avail_idx(&vdev->vq[i]) -
vdev->vq[i].last_avail_idx;
/* Check it isn't doing strange things with descriptor numbers. */
if (nheads > vdev->vq[i].vring.num) {
--
1.8.3.1
- [Qemu-devel] [PATCH v2 03/15] virtio: expand offset calculation for packed ring, (continued)
- [Qemu-devel] [PATCH v2 03/15] virtio: expand offset calculation for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 05/15] virtio: init wrap counter for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 04/15] virtio: add memory region init for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 06/15] virtio: init and desc empty check for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 08/15] virtio: fill/flush/pop for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 10/15] virtio-net: fill head desc after done all in a chain, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 12/15] virtio: add vhost-net migration for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 07/15] virtio: get avail bytes check for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 13/15] virtio: packed ring feature bit for userspace backend, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 09/15] virtio: event suppression support for packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 11/15] virtio: add userspace migration for packed ring,
wexu <=
- [Qemu-devel] [PATCH v2 14/15] vhost: enable packed ring, wexu, 2019/01/16
- [Qemu-devel] [PATCH v2 15/15] virtio: enable packed ring via a new command line, wexu, 2019/01/16