diff --git a/lib/bdev/virtio/bdev_virtio.c b/lib/bdev/virtio/bdev_virtio.c index c6935b374..7581d09fc 100644 --- a/lib/bdev/virtio/bdev_virtio.c +++ b/lib/bdev/virtio/bdev_virtio.c @@ -153,6 +153,10 @@ struct bdev_virtio_io_channel { /** Module finish in progress */ static bool g_bdev_virtio_finish = false; +/* Features desired/implemented by this driver. */ +#define VIRTIO_SCSI_DEV_SUPPORTED_FEATURES \ + (1ULL << VIRTIO_SCSI_F_INOUT) + static void virtio_scsi_dev_unregister_cb(void *io_device); static void virtio_scsi_dev_remove(struct virtio_scsi_dev *svdev); static int bdev_virtio_scsi_ch_create_cb(void *io_device, void *ctx_buf); diff --git a/lib/bdev/virtio/rte_virtio/virtio.c b/lib/bdev/virtio/rte_virtio/virtio.c index c4936fcdd..2a44ba40e 100644 --- a/lib/bdev/virtio/rte_virtio/virtio.c +++ b/lib/bdev/virtio/rte_virtio/virtio.c @@ -334,6 +334,8 @@ virtio_dev_restart(struct virtio_dev *dev, uint64_t req_features) { int ret; + req_features |= (1ULL << VIRTIO_F_VERSION_1); + /* Reset the device although not necessary at startup */ virtio_dev_stop(dev); diff --git a/lib/bdev/virtio/rte_virtio/virtio.h b/lib/bdev/virtio/rte_virtio/virtio.h index 598ba180c..bd79080de 100644 --- a/lib/bdev/virtio/rte_virtio/virtio.h +++ b/lib/bdev/virtio/rte_virtio/virtio.h @@ -191,11 +191,6 @@ struct virtio_pci_ctx; */ typedef int (*virtio_pci_create_cb)(struct virtio_pci_ctx *pci_ctx); -/* Features desired/implemented by this driver. */ -#define VIRTIO_SCSI_DEV_SUPPORTED_FEATURES \ - (1ULL << VIRTIO_SCSI_F_INOUT | \ - 1ULL << VIRTIO_F_VERSION_1) - uint16_t virtio_recv_pkts(struct virtqueue *vq, void **io, uint32_t *len, uint16_t io_cnt); /** @@ -266,7 +261,8 @@ int virtio_dev_construct(struct virtio_dev *vdev, const struct virtio_dev_ops *o * This call will also allocate virtqueues and renegotiate feature flags. * * \param vdev virtio device - * \param req_features features this driver supports + * \param req_features features this driver supports. A VIRTIO_F_VERSION_1 + * flag will be automatically appended, as legacy devices are not supported. */ int virtio_dev_restart(struct virtio_dev *vdev, uint64_t req_features);