We would open IOMMU device for each host device with IOMMUFD backend
leaking FD except for the last one. Since we are adding only single
iommufd object we need to open it only once.

Fixes: 2f0999a161910e3992458902ce90d37f8b8f2642
Signed-off-by: Pavel Hrdina <[email protected]>
---
 src/qemu/qemu_process.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index cfc30dcbe4..1ca0ed1b9b 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -7740,13 +7740,15 @@ qemuProcessOpenVfioFds(virDomainObj *vm)
             /* Open VFIO device FD */
             if (qemuProcessOpenVfioDeviceFd(hostdev) < 0)
                 return -1;
-
-            /* Open IOMMU FD */
-            if (qemuProcessOpenIommuFd(vm) < 0)
-                return -1;
         }
     }
 
+    /* Open IOMMU FD */
+    if (virDomainDefHasPCIHostdevWithIOMMUFD(vm->def) &&
+        qemuProcessOpenIommuFd(vm) < 0) {
+        return -1;
+    }
+
     return 0;
 }
 
-- 
2.53.0

Reply via email to