[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 02/15] virtio: introduce __virtio_queue_reset()
From: |
Kangjie Xu |
Subject: |
[PATCH v3 02/15] virtio: introduce __virtio_queue_reset() |
Date: |
Thu, 25 Aug 2022 16:08:45 +0800 |
From: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Separate the logic of vq reset. This logic will be called directly
later.
Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com>
Acked-by: Jason Wang <jasowang@redhat.com>
---
hw/virtio/virtio.c | 37 +++++++++++++++++++++----------------
1 file changed, 21 insertions(+), 16 deletions(-)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 5d607aeaa0..67d54832a9 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2019,6 +2019,26 @@ static enum virtio_device_endian
virtio_current_cpu_endian(void)
}
}
+static void __virtio_queue_reset(VirtIODevice *vdev, uint32_t i)
+{
+ vdev->vq[i].vring.desc = 0;
+ vdev->vq[i].vring.avail = 0;
+ vdev->vq[i].vring.used = 0;
+ vdev->vq[i].last_avail_idx = 0;
+ vdev->vq[i].shadow_avail_idx = 0;
+ vdev->vq[i].used_idx = 0;
+ vdev->vq[i].last_avail_wrap_counter = true;
+ vdev->vq[i].shadow_avail_wrap_counter = true;
+ vdev->vq[i].used_wrap_counter = true;
+ virtio_queue_set_vector(vdev, i, VIRTIO_NO_VECTOR);
+ vdev->vq[i].signalled_used = 0;
+ vdev->vq[i].signalled_used_valid = false;
+ vdev->vq[i].notification = true;
+ vdev->vq[i].vring.num = vdev->vq[i].vring.num_default;
+ vdev->vq[i].inuse = 0;
+ virtio_virtqueue_reset_region_cache(&vdev->vq[i]);
+}
+
void virtio_reset(void *opaque)
{
VirtIODevice *vdev = opaque;
@@ -2050,22 +2070,7 @@ void virtio_reset(void *opaque)
virtio_notify_vector(vdev, vdev->config_vector);
for(i = 0; i < VIRTIO_QUEUE_MAX; i++) {
- vdev->vq[i].vring.desc = 0;
- vdev->vq[i].vring.avail = 0;
- vdev->vq[i].vring.used = 0;
- vdev->vq[i].last_avail_idx = 0;
- vdev->vq[i].shadow_avail_idx = 0;
- vdev->vq[i].used_idx = 0;
- vdev->vq[i].last_avail_wrap_counter = true;
- vdev->vq[i].shadow_avail_wrap_counter = true;
- vdev->vq[i].used_wrap_counter = true;
- virtio_queue_set_vector(vdev, i, VIRTIO_NO_VECTOR);
- vdev->vq[i].signalled_used = 0;
- vdev->vq[i].signalled_used_valid = false;
- vdev->vq[i].notification = true;
- vdev->vq[i].vring.num = vdev->vq[i].vring.num_default;
- vdev->vq[i].inuse = 0;
- virtio_virtqueue_reset_region_cache(&vdev->vq[i]);
+ __virtio_queue_reset(vdev, i);
}
}
--
2.32.0
- [PATCH v3 01/15] virtio: sync relevant definitions with linux, (continued)
- [PATCH v3 01/15] virtio: sync relevant definitions with linux, Kangjie Xu, 2022/08/25
- [PATCH v3 10/15] vhost-net: vhost-kernel: introduce vhost_net_virtqueue_reset(), Kangjie Xu, 2022/08/25
- [PATCH v3 13/15] virtio-net: support queue reset, Kangjie Xu, 2022/08/25
- [PATCH v3 03/15] virtio: introduce virtio_queue_reset(), Kangjie Xu, 2022/08/25
- [PATCH v3 09/15] vhost: expose vhost_virtqueue_start(), Kangjie Xu, 2022/08/25
- [PATCH v3 04/15] virtio: introduce virtio_queue_enable(), Kangjie Xu, 2022/08/25
- [PATCH v3 08/15] vhost: extract the logic of unmapping the vrings and desc, Kangjie Xu, 2022/08/25
- [PATCH v3 07/15] virtio-pci: support queue enable, Kangjie Xu, 2022/08/25
- [PATCH v3 14/15] virtio-net: support queue_enable, Kangjie Xu, 2022/08/25
- [PATCH v3 06/15] virtio-pci: support queue reset, Kangjie Xu, 2022/08/25
- [PATCH v3 02/15] virtio: introduce __virtio_queue_reset(),
Kangjie Xu <=
- [PATCH v3 11/15] vhost-net: vhost-kernel: introduce vhost_net_virtqueue_restart(), Kangjie Xu, 2022/08/25
- [PATCH v3 05/15] virtio: core: vq reset feature negotation support, Kangjie Xu, 2022/08/25
- [PATCH v3 15/15] vhost: vhost-kernel: enable vq reset feature, Kangjie Xu, 2022/08/25