When removing last host device using IOMMUFD remove the iommufd object
as well.

Signed-off-by: Pavel Hrdina <[email protected]>
---
 src/qemu/qemu_hotplug.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index d17370b582..24fbccccf0 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -4997,6 +4997,14 @@ qemuDomainRemoveHostDevice(virQEMUDriver *driver,
         }
     }
 
+    if (priv->iommufdState &&
+        !virDomainDefHasPCIHostdevWithIOMMUFD(vm->def)) {
+        qemuDomainObjEnterMonitor(vm);
+        ignore_value(qemuMonitorDelObject(priv->mon, "iommufd0", false));
+        qemuDomainObjExitMonitor(vm);
+        priv->iommufdState = false;
+    }
+
     virDomainAuditHostdev(vm, hostdev, "detach", true);
 
     if (!virHostdevIsPCIDevice(hostdev) &&
-- 
2.53.0

Reply via email to