[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: |
Pankaj Gupta |
Subject: |
Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer |
Date: |
Wed, 4 Dec 2019 03:33:07 -0500 (EST) |
> From: Pan Nengyuan <address@hidden>
>
> 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);
> --
> 2.7.2.windows.1
>
>
Overall it ooks good to me.
Just one point: e.g in virtio_rng: "virtio_rng_device_unrealize" function
We are doing : virtio_del_queue(vdev, 0);
One can directly call "virtio_delete_queue". It can become confusing
to call multiple functions for same purpose. Instead, Can we make
"virtio_delete_queue" static inline?
Other than that:
Reviewed-by: Pankaj Gupta <address@hidden>
>
>
- [PATCH v2 1/3] virtio: add ability to delete vq through a pointer, pannengyuan, 2019/12/04
- [PATCH v2 2/3] virtio-balloon: fix memory leak while attach virtio-balloon device, pannengyuan, 2019/12/04
- [PATCH v2 3/3] virtio-serial-bus: fix memory leak while attach virtio-serial-bus, pannengyuan, 2019/12/04
- Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer,
Pankaj Gupta <=
- Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer, Laurent Vivier, 2019/12/04
- Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer, Eric Blake, 2019/12/04
- Re: [PATCH v2 1/3] virtio: add ability to delete vq through a pointer, Amit Shah, 2019/12/05