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)
|
||||
{
|
||||
VirtIODevice *vdev = opaque;
|
||||
@ -2495,22 +2515,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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user