}
if (dev->mem) {
+ if (dev->flags & VIRTIO_DEV_VDPA_CONFIGURED) {
+ struct rte_vdpa_device *vdpa_dev = dev->vdpa_dev;
+
+ if (vdpa_dev && vdpa_dev->ops->dev_close)
+ vdpa_dev->ops->dev_close(dev->vid);
+ dev->flags &= ~VIRTIO_DEV_VDPA_CONFIGURED;
+ }
free_mem_region(dev);
rte_free(dev->mem);
dev->mem = NULL;
"vring call idx:%d file:%d\n", file.index, file.fd);
vq = dev->virtqueue[file.index];
+
+ if (vq->ready) {
+ vhost_user_notify_queue_state(dev, file.index, 0);
+ vq->ready = 0;
+ }
+
if (vq->callfd >= 0)
close(vq->callfd);
dev->vid, file.index, 1);
}
+ if (vq->ready) {
+ vhost_user_notify_queue_state(dev, file.index, 0);
+ vq->ready = 0;
+ }
+
if (vq->kickfd >= 0)
close(vq->kickfd);
vq->kickfd = file.fd;