Hi Eric,
@@ -1668,6 +1679,14 @@ static int vfio_connect_container(VFIOGroup *group,
AddressSpace *as,
      VFIOContainer *container;
      int ret, fd;
      VFIOAddressSpace *space;
+    IOMMUMemoryRegion *iommu_mr;
+    bool nested = false;
+
+    if (as != &address_space_memory && memory_region_is_iommu(as->root)) {
+        iommu_mr = IOMMU_MEMORY_REGION(as->root);
+        memory_region_iommu_get_attr(iommu_mr, IOMMU_ATTR_VFIO_NESTED,
+                                     (void *)&nested);
+    }
space = vfio_get_address_space(as);
Is the condition "as != &address_space_memory" needed to determine whether
a vIOMMU is in place? I think "memory_region_is_iommu(as->root)" is enough.

Looking forward to your reply.:)

Thanks,

Kunkun Jiang

Reply via email to