]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Save IOMMUFD state into status XML
authorPavel Hrdina <phrdina@redhat.com>
Sat, 14 Feb 2026 16:54:57 +0000 (17:54 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 16 Feb 2026 14:50:39 +0000 (15:50 +0100)
We need to track if iommufd object was added to the VM when we add
hotplug support.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_domain.c
src/qemu/qemu_domain.h

index 724f0cd8ebae5b95ba4093941487ea394108791c..cdf2f91ece086e325a1228750340949425b5d672 100644 (file)
@@ -5366,6 +5366,8 @@ qemuBuildIOMMUFDCommandLine(virCommand *cmd,
     if (qemuBuildObjectCommandlineFromJSON(cmd, props) < 0)
         return -1;
 
+    priv->iommufdState = true;
+
     return 0;
 }
 
index ada9d3431c1d840eaf06c571c571e6b1fdde9644..ccbfc8bac777c782ba819be535022466a64bd8a2 100644 (file)
@@ -1976,6 +1976,7 @@ qemuDomainObjPrivateDataClear(qemuDomainObjPrivate *priv)
     priv->migrationRecoverSetup = false;
 
     g_clear_pointer(&priv->iommufd, qemuFDPassDirectFree);
+    priv->iommufdState = false;
 
     g_clear_pointer(&priv->memoryBackingDir, g_free);
 }
@@ -2844,6 +2845,9 @@ qemuDomainObjPrivateXMLFormat(virBuffer *buf,
                           priv->preMigrationMemlock);
     }
 
+    if (priv->iommufdState)
+        virBufferAddLit(buf, "<iommufd/>\n");
+
     return 0;
 }
 
@@ -3582,6 +3586,8 @@ qemuDomainObjPrivateXMLParse(xmlXPathContextPtr ctxt,
         return -1;
     }
 
+    priv->iommufdState = virXPathBoolean("boolean(./iommufd)", ctxt) == 1;
+
     return 0;
 }
 
index fa7d4ab40f0ced2f9aae6923e3942f2cb1e15470..5755d2adb0de682798d7b37edfa10df526691d77 100644 (file)
@@ -265,6 +265,7 @@ struct _qemuDomainObjPrivate {
     GHashTable *fds;
 
     qemuFDPassDirect *iommufd;
+    bool iommufdState; /* true if --object iommufd was added */
 
     char *memoryBackingDir;
 };