Signed-off-by: Tiwei Bie <tiwei....@intel.com> --- lib/librte_vhost/vhost.c | 4 ++++ lib/librte_vhost/vhost_user.c | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c index 19c5a43..b7bc1ee 100644 --- a/lib/librte_vhost/vhost.c +++ b/lib/librte_vhost/vhost.c @@ -441,6 +441,10 @@ rte_vhost_enable_guest_notification(int vid, uint16_t queue_id, int enable) return -1; } + if (dev->features & (1ULL << VIRTIO_F_VERSION_1_1)) { + return 0; + } + dev->virtqueue[queue_id]->used->flags = VRING_USED_F_NO_NOTIFY; return 0; } diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c index 3a2de79..9265dcb 100644 --- a/lib/librte_vhost/vhost_user.c +++ b/lib/librte_vhost/vhost_user.c @@ -342,6 +342,19 @@ vhost_user_set_vring_addr(struct virtio_net *dev, VhostUserMsg *msg) /* addr->index refers to the queue index. The txq 1, rxq is 0. */ vq = dev->virtqueue[msg->payload.addr.index]; + if (dev->features & (1ULL << VIRTIO_F_VERSION_1_1)) { + vq->desc_1_1 = (struct vring_desc_1_1 *)(uintptr_t)qva_to_vva + (dev, msg->payload.addr.desc_user_addr); + vq->desc = NULL; + vq->avail = NULL; + vq->used = NULL; + vq->log_guest_addr = 0; + + assert(vq->last_used_idx == 0); + + return 0; + } + /* The addresses are converted from QEMU virtual to Vhost virtual. */ vq->desc = (struct vring_desc *)(uintptr_t)qva_to_vva(dev, msg->payload.addr.desc_user_addr); @@ -351,7 +364,7 @@ vhost_user_set_vring_addr(struct virtio_net *dev, VhostUserMsg *msg) dev->vid); return -1; } - vq->desc_1_1 = (struct vring_desc_1_1 *)vq->desc; + vq->desc_1_1 = NULL; dev = numa_realloc(dev, msg->payload.addr.index); vq = dev->virtqueue[msg->payload.addr.index]; @@ -617,7 +630,7 @@ vhost_user_set_mem_table(struct virtio_net *dev, struct VhostUserMsg *pmsg) static int vq_is_ready(struct vhost_virtqueue *vq) { - return vq && vq->desc && + return vq && (vq->desc || vq->desc_1_1) && vq->kickfd != VIRTIO_UNINITIALIZED_EVENTFD && vq->callfd != VIRTIO_UNINITIALIZED_EVENTFD; } -- 2.7.4