]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
conf: Introduce virHostdevIsPCIDeviceWithIOMMUFD
authorPavel Hrdina <phrdina@redhat.com>
Sun, 15 Feb 2026 17:19:23 +0000 (18:19 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 16 Feb 2026 14:50:39 +0000 (15:50 +0100)
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/qemu/qemu_process.c

index e3c69aee4ddd4461a65e9bcca13fee0ff037ab6d..98d34f408df1e82f4fc41e3166d94747e9b77778 100644 (file)
@@ -32939,6 +32939,21 @@ virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
 }
 
 
+/**
+ * virHostdevIsPCIDeviceWithIOMMUFD:
+ * @hostdev: host device to check
+ *
+ * Returns true if @hostdev is a PCI device with IOMMUFD enabled, false otherwise.
+ */
+bool
+virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev)
+{
+    return virHostdevIsPCIDevice(hostdev) &&
+        hostdev->source.subsys.u.pci.driver.name == VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO &&
+        hostdev->source.subsys.u.pci.driver.iommufd == VIR_TRISTATE_BOOL_YES;
+}
+
+
 static void
 virDomainObjGetMessagesIOErrorsSrc(virStorageSource *src,
                                    const char *diskdst,
index be966179810abbf828a47ab4f39b41027a0eb15a..f98fed650a54961e32110d52fd8ec7b6e4d460d0 100644 (file)
@@ -4720,6 +4720,9 @@ virHostdevIsMdevDevice(const virDomainHostdevDef *hostdev)
 bool
 virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
     ATTRIBUTE_NONNULL(1);
+bool
+virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev)
+    ATTRIBUTE_NONNULL(1);
 
 void
 virDomainObjGetMessagesIOErrorsChain(virStorageSource *src,
index 4d29512e0b388400c29e9f1d35d9ff1cd1ea4490..15a56a262a7d809c4a399ee634a80d341a7765e9 100644 (file)
@@ -813,6 +813,7 @@ virDomainQemuMonitorEventNew;
 virDomainQemuMonitorEventStateRegisterID;
 virHostdevIsMdevDevice;
 virHostdevIsPCIDevice;
+virHostdevIsPCIDeviceWithIOMMUFD;
 virHostdevIsSCSIDevice;
 
 
index 2bab46fca69eb09a15a942293e8a2c1b6355abc1..cfc30dcbe4989a5537b8ff56543ec13ecf69579e 100644 (file)
@@ -7736,10 +7736,7 @@ qemuProcessOpenVfioFds(virDomainObj *vm)
     for (i = 0; i < vm->def->nhostdevs; i++) {
         virDomainHostdevDef *hostdev = vm->def->hostdevs[i];
 
-        if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
-            hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
-            hostdev->source.subsys.u.pci.driver.name == VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO &&
-            hostdev->source.subsys.u.pci.driver.iommufd == VIR_TRISTATE_BOOL_YES) {
+        if (virHostdevIsPCIDeviceWithIOMMUFD(hostdev)) {
             /* Open VFIO device FD */
             if (qemuProcessOpenVfioDeviceFd(hostdev) < 0)
                 return -1;