]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Fill iommufd domain capability
authorPavel Hrdina <phrdina@redhat.com>
Mon, 16 Feb 2026 09:44:57 +0000 (10:44 +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>
84 files changed:
src/qemu/qemu_capabilities.c
tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml
tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml
tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_10.0.0.aarch64.xml
tests/domaincapsdata/qemu_10.0.0.ppc64.xml
tests/domaincapsdata/qemu_10.0.0.s390x.xml
tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml
tests/domaincapsdata/qemu_10.0.0.x86_64.xml
tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml
tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml
tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_10.1.0.s390x.xml
tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml
tests/domaincapsdata/qemu_10.1.0.x86_64.xml
tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml
tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml
tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_10.2.0.aarch64.xml
tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml
tests/domaincapsdata/qemu_10.2.0.x86_64.xml
tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_11.0.0.aarch64.xml
tests/domaincapsdata/qemu_11.0.0.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.2.0.ppc64.xml
tests/domaincapsdata/qemu_6.2.0.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.0.0.ppc64.xml
tests/domaincapsdata/qemu_7.0.0.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.1.0.ppc64.xml
tests/domaincapsdata/qemu_7.1.0.x86_64.xml
tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.2.0.ppc.xml
tests/domaincapsdata/qemu_7.2.0.x86_64.xml
tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_8.0.0.x86_64.xml
tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_8.1.0.s390x.xml
tests/domaincapsdata/qemu_8.1.0.x86_64.xml
tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
tests/domaincapsdata/qemu_8.2.0.aarch64.xml
tests/domaincapsdata/qemu_8.2.0.armv7l.xml
tests/domaincapsdata/qemu_8.2.0.s390x.xml
tests/domaincapsdata/qemu_8.2.0.x86_64.xml
tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_9.0.0.sparc.xml
tests/domaincapsdata/qemu_9.0.0.x86_64.xml
tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
tests/domaincapsdata/qemu_9.1.0.s390x.xml
tests/domaincapsdata/qemu_9.1.0.x86_64.xml
tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml
tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml
tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml
tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_9.2.0.s390x.xml
tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml
tests/domaincapsdata/qemu_9.2.0.x86_64.xml
tests/domaincapsmock.c

index 5a1545c72786b67b87dc84d6c17554bc6036a240..f35c3e19036d0185f2b70b12ec262d2dca83c39c 100644 (file)
@@ -45,6 +45,7 @@
 #include "qemu_firmware.h"
 #include "virutil.h"
 #include "virtpm.h"
+#include "viriommufd.h"
 
 #include <fcntl.h>
 #include <sys/stat.h>
@@ -6779,6 +6780,7 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCaps *qemuCaps,
     hostdev->subsysType.report = true;
     hostdev->capsType.report = true;
     hostdev->pciBackend.report = true;
+    hostdev->iommufd.report = true;
 
     /* VIR_DOMAIN_HOSTDEV_MODE_CAPABILITIES is for containers only */
     VIR_DOMAIN_CAPS_ENUM_SET(hostdev->mode,
@@ -6810,11 +6812,20 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCaps *qemuCaps,
     virDomainCapsEnumClear(&hostdev->capsType);
 
     virDomainCapsEnumClear(&hostdev->pciBackend);
-    if (supportsPassthroughVFIO &&
-        virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) {
-        VIR_DOMAIN_CAPS_ENUM_SET(hostdev->pciBackend,
-                                 VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_DEFAULT,
-                                 VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO);
+
+    VIR_DOMAIN_CAPS_ENUM_SET(hostdev->iommufd, VIR_TRISTATE_BOOL_NO);
+
+    if (supportsPassthroughVFIO) {
+        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) {
+            VIR_DOMAIN_CAPS_ENUM_SET(hostdev->pciBackend,
+                                     VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_DEFAULT,
+                                     VIR_DEVICE_HOSTDEV_PCI_DRIVER_NAME_VFIO);
+        }
+
+        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_OBJECT_IOMMUFD) &&
+            virIOMMUFDSupported()) {
+            VIR_DOMAIN_CAPS_ENUM_SET(hostdev->iommufd, VIR_TRISTATE_BOOL_YES);
+        }
     }
 }
 
index 8cb51d795c7fa1abb4330bfc7892d39953df775d..aeccdf612d34a23802fddb2126828e84c8032986 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 56192354ac6ff05e7e2f972975caa41887f0d56f..86a740099b16c49260b4711e83469608ffc76c4f 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 4242f2fe9c8e3f200071a9613b84632264bf0517..5d9ce948f88ac7635fbf94b0149921181235745a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 76d5fdd0d9fee7a85e66a0184fe8c7b0b735323c..3915ec38cf2f6e7be73d9eab2d58263fcd355ec7 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 30863d3d6b738758112a83f887a4208d2b219658..058bd84a33f0c82a24efb0bbc29387fba30254d3 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 30863d3d6b738758112a83f887a4208d2b219658..058bd84a33f0c82a24efb0bbc29387fba30254d3 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 5136e7a20d2cc7fa6c6b3b30052347ecd11745ac..f3ff165aa180e54e086ded0315ca00d6e0628cf2 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 3bbdbd68d06b5702fab67d5d32633c9740ff51fe..220afb9d7d609a3a85b0ea5ea9ee071547a58de3 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 8b02db88020b20f4b4a70b8851f23536ce5fb566..9dcc7f2e449b030d79f24c30ecf0cc3fe19df96d 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6dac17808ccfce02591b723c42b5d4c0946a9489..c0c3a2e6db766c5a739b456cbd4d48fa5cde1087 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 31d4fab0437fdd08f3390cfe267e0f35a8dbaf78..5f6ee44ac7b51b44667159fbb05a5ccdacc8aa28 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6213908152d259da4da30dfd493753c89e1b2cb2..fc82987630c132db98ab2861a4525544970fb391 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index cace9f109acdfd82074aa4f7b80d05f30abc0d99..e30b20e31e62c914184094a256a1481b45ffcbcf 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 804848b8a74b349a8f529f3ce3323823e320785c..34e581261327a6c56f98ac260035479e5860a70a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 9d773385c45d6bc9e01a9fce4e22437072e2971a..373b9f1f593c6147c4ea935da663202927da838b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6320200c204e6adae3a0c336e3f2bb948cc69da5..1d5a1b5404d81281af8990401a059f624d447c34 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 35c9b8c6d3d9268e09fa8ab0de0e87632d5770d8..3be5e34fe6c3fc77ab6dec1015eb4d7559de8df2 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index ebba8fd49f2c46b1ee3ef518bc9111f66bf2577e..6914726a8b4f025281eabbeae9a767db8d9bc5f5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 5ce911d62f3e8e55ce8d3822728d91581d7a397d..cfa51195ba05ac982ae9c72d9635af167552380d 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6c6f1e84c3e16323f76fbbfcc42852a28ad85242..35331dc4d46136e44ed0569ad0a07fed2382123b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 14e8e30f1c2dc6b597b0864be3898448b8dd0d24..7fba7f45f3cf6d9b2c6cc9ec50454bebd25e6a47 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 84d302200677bc3eddc04c7a9be815d78656cd88..1613b28b718522e7006d873be5cc9621f13aaf03 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 84d302200677bc3eddc04c7a9be815d78656cd88..1613b28b718522e7006d873be5cc9621f13aaf03 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index c8f2585d7daa63212a2f97f2948237446f79a154..faf9b15e0d84d9046d4c3ce5085e5aea91dc895e 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 333bbaa698d09c193c04955fd251cb078a55d2a1..811951cde5187524e5a7cd46e038a7e6aadb1b7a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index be89b0a4f2511b4d9726748b3e4e326a8125755b..1e1b6b723e820390b9efb92f1793bbfdbb7205b7 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index bb611142b3fb0790d328faa93bcccbbc72526d79..d87c1277d3f720317d1f9f972906b2663b2e9f04 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 906e3c1e6867577eafb36b3a1d6ef2ce463b958c..d0245d08377ee1765a5e0b5e78a71007d0f0b587 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 906e3c1e6867577eafb36b3a1d6ef2ce463b958c..d0245d08377ee1765a5e0b5e78a71007d0f0b587 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 956d59f877e4b99c1c4ea3ae4cc23ada71edae95..58d50938864d91c02f4cb853f695ac2942377080 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index b14cbddc593f77eed8768832081ca530b822506e..0b66b77e7308f6e0a80bebd7dbdf8e051659165a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 51547bf50532c900fd29d8519add01b4564eb3f2..ce4b14f28c4e3e4702721dd4695567883f3ed47a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 411925ad666a5b7d355d2419a8e271025bb5e709..fb8361ae9789d6b76511c571535c1b2ab8e3103d 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index ab387c862e9972afb62c09c90510b8a4ff48cbff..33b2e4905ea7f2645037df4a9247c303815f12e5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 4bbcb516ec1b7cdeb3a1c16c34206a6914ee61b4..2d7519ae94c762654b34b9edb41fbf8e2bb1901e 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 839f0600c2f7ef7151d76b69b801010d627abd62..01975a5e34221620094a8ea71a6a8f377f146d06 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 147d1bf7fb3818afe701f5ef82d505c75fef2afd..03bbe16497714f2ad8242040d4a1a13076de2d26 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 612b5a44cc6ece84c57ba39f357d7bd3548552c1..8fa3d3e0f49f0cd42ff215e091d43b4d7f2d4eb5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index a031b673ddf353e8acf4a66bbbcd205349c57ecb..1991133a624a22fe0178529c45ec82d3fad04c2a 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 9360f8fadfafcdc5b68bf48140e7d9dce1097fc7..41bfdbecb6b7727da487efa76e961b50f49150e1 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index f3a2dfe6ffadd8e12e4b046a93eb1d66518ada86..03d6b23a45cd4a68e150a0a643b176d7d6a58d96 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6738d8f8523badac04b6ab0af550eae9c230d690..54e8e9d87a2dc49e425da8dd4a37df485086553e 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index b338bcc4702b7b788602b6cdea2f20340db76f30..58ef1bde99ba29724b22278502ac9f9d8894dd27 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 39eb10dc7ad5370c39bce6f1d22181d41b9885dc..7c325b52aa8ba12fd96e58b3f37dfd4547d516f3 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 77fce0eb9514c996e12c4b41b25a94714d3e671f..27ecea6fe0dccf37c90d194f8ee9a7a4531e81fb 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 77fce0eb9514c996e12c4b41b25a94714d3e671f..27ecea6fe0dccf37c90d194f8ee9a7a4531e81fb 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 8bda6af431a13ba07fac64172198ee4e1df70bda..7cbde763ef496f41500bdc490fbddffc1fa1f0af 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 16708c3d85ce8561cd82dfb899ac16d389e64d75..b9a174368a06508e69df55438e7be5ef261e313b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 4acd9b76b2666721f4278f90329f680d47b8a151..60893adebf89b0af6b7bf12983049368afe676fc 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index c8efc8f1836c8d216c1f26217467e454d34c8e45..23e41eb13cbe8f725910409b29545f77811eb882 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index cfa00f3150c2b4777f05f88bb7bb804822f8173c..daa91d428fd86b90837738730eaf700640d381cf 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 83a703da524c1c0d0b6eb8d64e065899b45c5620..df003825ea78f4e95288022af029f2957d8e2b12 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 725002966d7c40007ee025f9ae3bdd5999261ab4..10330281bd58ca69b29cd94d56a126e4a81fe294 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 0872931dd79c80f2bf12b3784abde1cb1f7ee868..c86f0113f3dc085393d2a0b6334bce71d31bf3cc 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6a3cb843427640b9e93cdccc946f3f3f5dc89a7e..205334e84b2d76e9237de6b3743559ba0e79d14b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index a25cf01799e5ac808c36c62a6fafe350dbc99de7..bd9dbf8cba2442cf78a4d16a4dd75039c41c07a5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index eead5ff0765eda45a36f790246327ef99d4ea0ae..10e514dd453d90188ce36ba93689472b31ac8b5f 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 3b986eb38631ee7ef91cdae1ce131326fb4f6494..60e5cb86321d7452416c2097a750baa94405bc19 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index bb563d6e6c3ede3aea53a288e4e06276b560511c..f67204a14cbaa2fb463272f62908bd2e8d5e57ba 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 4d441289a4f016002c02def4c3d722bd699e1209..6e05a09abb5bde3ba0b91fca71552cd4bb0b12d3 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index bb563d6e6c3ede3aea53a288e4e06276b560511c..f67204a14cbaa2fb463272f62908bd2e8d5e57ba 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 5c467d4a1439d7568e558efa6237f1c960b7d380..7a537a1abc77d247b76914ffa8626c187b0299ea 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 5126dd4d009c4e8462ee4554fbd123009d867bd9..ad80492e3095701a73d08ac1549b9e0fd0ff93ca 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 57cd4d63de4e25fa4f48c315e7d1ba0d303ecc2a..c6558915c14b232ab3eb45d47602293bdb61957c 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index c7932014adb5dc0a88516e2b8d159009b409f52c..930014727d9b33ed1734ee5c37607c2322ae69c5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 3593d701669703e4ca311eb12c28d0edf39fcfad..19adcfe2490abe57f4356472293e07e5ae7a97a1 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 6b4dd3c3b53b43bf7c0a321b8cfdc484e84d3e1d..062e55718ba30985cf45549cf4276627f330c06b 100644 (file)
@@ -90,6 +90,9 @@
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'/>
index 96303a31cd8c134de9f8809f1c778ac4aee3c359..bc4e7fa1eee58943ca1645df82c603df7add1999 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 518a6811fe6f480744bf174b284610e480b9ec36..927c1b4fabac168c57e27d0e688f2339f93c92e7 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index ce7fe71141c32916ae1ab01cca7c5ccdb6edfb93..cb519f348c519e6b53afbac1611a049347b0043f 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 70928471b36a5716416068e6672ead6321719655..a8b1bfed734c3947f1974a302df6e0cac23defda 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index fabb09bf72d385b5d2cef44a21b3b08838d1ef4b..8e9bd3a15b0c71aa8d44875868f108df63b084cc 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index d4649de513c03a3aac01574573dcf88150042813..2854713ca33519a36c90e734bfb500565712623d 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index ee101364cc4b588f6f1d485d0abfd741318a7a7d..e4d36b95acc94af96a63f1b19124dd161c29d6f5 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index ae657c7f72a9794f9a25b8cd6298f73d25eb08c0..db51e7b1202aa0554ea02466fb53e1c1a5bd9b07 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 35dc5785bc562dbefba46e6d252f95f1a794c2e5..39bdb2615b3af91b7dfa95568f973ad132d03cb4 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index baaaf4f91cb4d8be2dd0423a27d6ba9161610a4e..cc31c01dee82daca7787ff690b5868ef2886e4fe 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 033004a1f41151791bc677745ca10ad9a6b8f456..d01e02939493aa1a3538923ad3263924386e154b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index f20fe882c6aabd4e58daa4123764d4854ef7397e..6088c4b9058d43aadf90b47cc764cb290fd0816c 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 21a1b4f5a95b305401cc80c3abae1ac1635b9b5c..ef379afe69408bd1d6660f4e324642a55f6ba83b 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 39390d2ab66e92c22a829452d20579e322afee5f..c0485f8ffa4a1353ec5f1ab12ff12bc4d3c23a23 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index c477a1d2c41a513a2ddc8615926173a2f61a1220..dcb78a93c6427c36ad8c474a8b12432b56ad2547 100644 (file)
         <value>default</value>
         <value>vfio</value>
       </enum>
+      <enum name='iommufd'>
+        <value>yes</value>
+        <value>no</value>
+      </enum>
     </hostdev>
     <rng supported='yes'>
       <enum name='model'>
index 7bece6c8c1ac6b0f423ed06d5b3258729793dce4..370ce357099fbd8d76c755c80e8003f7011301d5 100644 (file)
 
 #include <config.h>
 
+#include "virfile.h"
 #include "virhostcpu.h"
 #include "virhostmem.h"
+#include "viriommufd.h"
+#include "virmock.h"
 
 #if WITH_QEMU
-# include "virmock.h"
 # include "qemu/qemu_capabilities.h"
 #endif
 
@@ -78,3 +80,16 @@ virHostMemGetTHPSize(unsigned long long *size)
     *size = 2048;
     return 0;
 }
+
+static bool (*real_virFileExists)(const char *path);
+
+bool
+virFileExists(const char *path)
+{
+    VIR_MOCK_REAL_INIT(virFileExists);
+
+    if (STREQ(path, VIR_IOMMU_DEV_PATH))
+        return true;
+
+    return real_virFileExists(path);
+}