[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer
From: |
Amit Shah |
Subject: |
Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer |
Date: |
Thu, 05 Dec 2019 17:45:06 +0100 |
On Wed, 2019-12-04 at 15:31 +0800, address@hidden wrote:
> From: Pan Nengyuan <address@hidden>
Shouldn't this be From: mst?
I didn't find a ref to the original patch to confirm if you had to
adapt it in any way, though.
> Devices tend to maintain vq pointers, allow deleting them trough a vq
> pointer.
>
> Signed-off-by: Michael S. Tsirkin <address@hidden>
> Signed-off-by: Pan Nengyuan <address@hidden>
> ---
> Changes v2 to v1:
> - add a new function virtio_delete_queue to cleanup vq through a vq
> pointer
> ---
> hw/virtio/virtio.c | 16 +++++++++++-----
> include/hw/virtio/virtio.h | 2 ++
> 2 files changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 04716b5..6de3cfd 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -2330,17 +2330,23 @@ VirtQueue *virtio_add_queue(VirtIODevice
> *vdev, int queue_size,
> return &vdev->vq[i];
> }
>
> +void virtio_delete_queue(VirtQueue *vq)
> +{
> + vq->vring.num = 0;
> + vq->vring.num_default = 0;
> + vq->handle_output = NULL;
> + vq->handle_aio_output = NULL;
> + g_free(vq->used_elems);
> + vq->used_elems = NULL;
> +}
> +
> void virtio_del_queue(VirtIODevice *vdev, int n)
> {
> if (n < 0 || n >= VIRTIO_QUEUE_MAX) {
> abort();
> }
>
> - vdev->vq[n].vring.num = 0;
> - vdev->vq[n].vring.num_default = 0;
> - vdev->vq[n].handle_output = NULL;
> - vdev->vq[n].handle_aio_output = NULL;
> - g_free(vdev->vq[n].used_elems);
> + virtio_delete_queue(&vdev->vq[n]);
> }
>
> static void virtio_set_isr(VirtIODevice *vdev, int value)
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index c32a815..e18756d 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -183,6 +183,8 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev,
> int queue_size,
>
> void virtio_del_queue(VirtIODevice *vdev, int n);
>
> +void virtio_delete_queue(VirtQueue *vq);
> +
> void virtqueue_push(VirtQueue *vq, const VirtQueueElement *elem,
> unsigned int len);
> void virtqueue_flush(VirtQueue *vq, unsigned int count);