]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
hypervisor: Fix virHostdevNeedsVFIO detection
authorPavel Hrdina <phrdina@redhat.com>
Wed, 18 Mar 2026 10:57:43 +0000 (11:57 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Fri, 20 Mar 2026 09:03:46 +0000 (10:03 +0100)
Function virHostdevNeedsVFIO is used only in QEMU to figure out if the
host device needs access to /dev/vfio/vfio, for PCI host devices that is
true only if libvirt is not using IOMMUFD.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/hypervisor/virhostdev.c
src/libvirt_private.syms

index 01e2bd631a6a00518b6939683fda62c847699548..2d6ae64210ad51d5ade7ee4d6cdddc98108fbf3a 100644 (file)
@@ -33079,6 +33079,19 @@ virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev)
 }
 
 
+/**
+ * virHostdevIsPCIDeviceWithIOMMUFD:
+ * @hostdev: host device to check
+ *
+ * Returns true if @hostdev is a PCI device with IOMMUFD disabled, false otherwise.
+ */
+bool
+virHostdevIsPCIDeviceWithoutIOMMUFD(const virDomainHostdevDef *hostdev)
+{
+    return virHostdevIsPCIDeviceImpl(hostdev, VIR_TRISTATE_BOOL_NO);
+}
+
+
 static void
 virDomainObjGetMessagesIOErrorsSrc(virStorageSource *src,
                                    const char *diskdst,
index e63230beec8b210279ef57593ecedab9a600eaca..018daef4c7d224c86db47ff76636856ba30c38c4 100644 (file)
@@ -4735,6 +4735,9 @@ virHostdevIsPCIDevice(const virDomainHostdevDef *hostdev)
 bool
 virHostdevIsPCIDeviceWithIOMMUFD(const virDomainHostdevDef *hostdev)
     ATTRIBUTE_NONNULL(1);
+bool
+virHostdevIsPCIDeviceWithoutIOMMUFD(const virDomainHostdevDef *hostdev)
+    ATTRIBUTE_NONNULL(1);
 
 void
 virDomainObjGetMessagesIOErrorsChain(virStorageSource *src,
index 19907c76ba8daba24139b6e00bda540944f7401b..f4d217620496165dd8e0958eadd280b59ce3e3a5 100644 (file)
@@ -2533,10 +2533,17 @@ virHostdevUpdateActiveNVMeDevices(virHostdevManager *hostdev_mgr,
     goto cleanup;
 }
 
+/**
+ * virHostdevNeedsVFIO:
+ * @hostdev: host device to check
+ *
+ * Returns true if using the @hostdev requires access to /dev/vfio/vfio,
+ * otherwise false.
+ */
 bool
 virHostdevNeedsVFIO(const virDomainHostdevDef *hostdev)
 {
-    return virHostdevIsPCIDevice(hostdev) ||
+    return virHostdevIsPCIDeviceWithoutIOMMUFD(hostdev) ||
         virHostdevIsMdevDevice(hostdev);
 }
 
index cd028c488afee68ebc97375fda9d31b2175502d4..8dbbd7f64d1b3f3a71c35e91d9762e93535607cf 100644 (file)
@@ -817,6 +817,7 @@ virDomainQemuMonitorEventStateRegisterID;
 virHostdevIsMdevDevice;
 virHostdevIsPCIDevice;
 virHostdevIsPCIDeviceWithIOMMUFD;
+virHostdevIsPCIDeviceWithoutIOMMUFD;
 virHostdevIsSCSIDevice;