virtio: introduce __virtio_queue_reset()
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> Message-Id: <20221017092558.111082-2-xuanzhuo@linux.alibaba.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
e72cfabf4e
commit
3b43302c71
@ -2464,6 +2464,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)
|
void virtio_reset(void *opaque)
|
||||||
{
|
{
|
||||||
VirtIODevice *vdev = opaque;
|
VirtIODevice *vdev = opaque;
|
||||||
@ -2495,22 +2515,7 @@ void virtio_reset(void *opaque)
|
|||||||
virtio_notify_vector(vdev, vdev->config_vector);
|
virtio_notify_vector(vdev, vdev->config_vector);
|
||||||
|
|
||||||
for(i = 0; i < VIRTIO_QUEUE_MAX; i++) {
|
for(i = 0; i < VIRTIO_QUEUE_MAX; i++) {
|
||||||
vdev->vq[i].vring.desc = 0;
|
__virtio_queue_reset(vdev, i);
|
||||||
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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user