On 7/13/23 14:47, Kevin Traynor wrote:
On 13/07/2023 12:29, Maxime Coquelin wrote:
Unlike Vhost-user, VDUSE requires vIOMMU support.
This patch ignores whether RTE_VHOST_USER_IOMMU_SUPPORT
flag is passed at register time to avoid having application
to pass it for having working VDUSE device creation.

Fixes: 0adb8eccc6a6 ("vhost: add VDUSE device creation and destruction")

Signed-off-by: Maxime Coquelin <maxime.coque...@redhat.com>
---
  lib/vhost/socket.c | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/vhost/socket.c b/lib/vhost/socket.c
index 57dfe3d2fe..79f2138f60 100644
--- a/lib/vhost/socket.c
+++ b/lib/vhost/socket.c
@@ -932,7 +932,10 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
      vsocket->async_copy = flags & RTE_VHOST_USER_ASYNC_COPY;
      vsocket->net_compliant_ol_flags = flags & RTE_VHOST_USER_NET_COMPLIANT_OL_FLAGS;
      vsocket->stats_enabled = flags & RTE_VHOST_USER_NET_STATS_ENABLE;
-    vsocket->iommu_support = flags & RTE_VHOST_USER_IOMMU_SUPPORT;
+    if (vsocket->is_vduse)
+        vsocket->iommu_support = true;
+    else
+        vsocket->iommu_support = flags & RTE_VHOST_USER_IOMMU_SUPPORT;
      if (vsocket->async_copy &&
          (flags & (RTE_VHOST_USER_IOMMU_SUPPORT |
                  ^^^ do you need to update this check ?

Good catch.
Yes, it would be better to replace with vsocket->iommu_support.

V3 on its way.

Thanks!
Maxime

@@ -986,7 +989,7 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
          vsocket->features &= ~seg_offload_features;
      }
-    if (!(flags & RTE_VHOST_USER_IOMMU_SUPPORT)) {
+    if (!vsocket->iommu_support) {
          vsocket->supported_features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM);
          vsocket->features &= ~(1ULL << VIRTIO_F_IOMMU_PLATFORM);
      }


Reply via email to