|
From: | Stefano Garzarella |
Subject: | Re: [PATCH v2 06/10] vdpa-dev: implement the unrealize interface |
Date: | Wed, 19 Jan 2022 12:36:01 +0100 |
On Mon, Jan 17, 2022 at 08:43:27PM +0800, Longpeng(Mike) via wrote:
From: Longpeng <longpeng2@huawei.com> Implements the .unrealize interface. Signed-off-by: Longpeng <longpeng2@huawei.com> --- hw/virtio/vdpa-dev.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/hw/virtio/vdpa-dev.c b/hw/virtio/vdpa-dev.c index bd28cf7a15..e5691d02bb 100644 --- a/hw/virtio/vdpa-dev.c +++ b/hw/virtio/vdpa-dev.c @@ -132,9 +132,31 @@ out: s->vdpa_dev_fd = -1; } +static void vhost_vdpa_vdev_unrealize(VhostVdpaDevice *s) +{ + VirtIODevice *vdev = VIRTIO_DEVICE(s); + int i; + + for (i = 0; i < s->num_queues; i++) { + virtio_delete_queue(s->virtqs[i]); + } + g_free(s->virtqs); + virtio_cleanup(vdev); + + g_free(s->config);
Is there a particular reason for these steps in a separate function?
+} + static void vhost_vdpa_device_unrealize(DeviceState *dev) { - return; + VirtIODevice *vdev = VIRTIO_DEVICE(dev); + VhostVdpaDevice *s = VHOST_VDPA_DEVICE(vdev); + + virtio_set_status(vdev, 0); + vhost_vdpa_vdev_unrealize(s); + g_free(s->dev.vqs); + vhost_dev_cleanup(&s->dev); + qemu_close(s->vdpa_dev_fd); + s->vdpa_dev_fd = -1; }
Maybe we can have all steps (in the reverse order of vhost_vdpa_device_realize) in vhost_vdpa_device_unrealize().
Stefano
[Prev in Thread] | Current Thread | [Next in Thread] |