diff --git a/lib/bdev/virtio/bdev_virtio.c b/lib/bdev/virtio/bdev_virtio.c index 2cf0ab9e2..5c74a3472 100644 --- a/lib/bdev/virtio/bdev_virtio.c +++ b/lib/bdev/virtio/bdev_virtio.c @@ -576,6 +576,7 @@ scan_target_abort(struct virtio_scsi_scan_base *base, int error) } TAILQ_REMOVE(&g_virtio_driver.init_ctrlrs, base->vdev, tailq); + vtpci_reset(base->vdev); virtio_dev_free(base->vdev); @@ -1100,6 +1101,7 @@ bdev_virtio_scsi_free(struct virtio_dev *vdev) virtio_dev_release_queue(vdev, VIRTIO_SCSI_REQUESTQ); } + vtpci_reset(vdev); virtio_dev_free(vdev); } @@ -1219,6 +1221,7 @@ bdev_virtio_finish(void) vq->poller_ctx = NULL; virtio_dev_release_queue(vdev, VIRTIO_SCSI_CONTROLQ); } + vtpci_reset(vdev); virtio_dev_free(vdev); } } diff --git a/lib/bdev/virtio/rte_virtio/virtio_dev.c b/lib/bdev/virtio/rte_virtio/virtio_dev.c index e094dceb7..fe1efe5a1 100644 --- a/lib/bdev/virtio/rte_virtio/virtio_dev.c +++ b/lib/bdev/virtio/rte_virtio/virtio_dev.c @@ -289,7 +289,6 @@ virtio_dev_free(struct virtio_dev *dev) { uint32_t vdev_id = dev->id; - vtpci_reset(dev); virtio_free_queues(dev); vtpci_ops(dev)->free_vdev(dev); vtpci_deinit(vdev_id);