Make qemuHostdevHostSupportsPassthroughVFIO use
virHostHasIOMMU.
---
src/libvirt_private.syms | 2 ++
src/qemu/qemu_hostdev.c | 29 ++++-------------------------
2 files changed, 6 insertions(+), 25 deletions(-)
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 6001635916..99a14ab460 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -58,6 +58,7 @@ virCapabilitiesFreeMachines;
virCapabilitiesFreeNUMAInfo;
virCapabilitiesGetCpusForNodemask;
virCapabilitiesGetNodeInfo;
+virCapabilitiesHostInitIOMMU;
virCapabilitiesHostSecModelAddBaseLabel;
virCapabilitiesInitCaches;
virCapabilitiesInitNUMA;
@@ -3073,6 +3074,7 @@ virGetUserName;
virGetUserRuntimeDirectory;
virGetUserShell;
virHexToBin;
+virHostHasIOMMU;
virIndexToDiskName;
virIsDevMapperDevice;
virIsSUID;
diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
index 955b5df1a3..25e2dcf868 100644
--- a/src/qemu/qemu_hostdev.c
+++ b/src/qemu/qemu_hostdev.c
@@ -23,7 +23,6 @@
#include <config.h>
-#include <dirent.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <errno.h>
@@ -124,33 +123,13 @@ qemuHostdevUpdateActiveDomainDevices(virQEMUDriverPtr driver,
bool
qemuHostdevHostSupportsPassthroughVFIO(void)
{
- DIR *iommuDir = NULL;
- struct dirent *iommuGroup = NULL;
- bool ret = false;
- int direrr;
-
- /* condition 1 - /sys/kernel/iommu_groups/ contains entries */
- if (virDirOpenQuiet(&iommuDir, "/sys/kernel/iommu_groups/") < 0)
- goto cleanup;
-
- while ((direrr = virDirRead(iommuDir, &iommuGroup, NULL)) > 0) {
- /* assume we found a group */
- break;
- }
-
- if (direrr < 0 || !iommuGroup)
- goto cleanup;
- /* okay, iommu is on and recognizes groups */
+ if (!virHostHasIOMMU())
+ return false;
- /* condition 2 - /dev/vfio/vfio exists */
if (!virFileExists("/dev/vfio/vfio"))
- goto cleanup;
-
- ret = true;
+ return false;
- cleanup:
- VIR_DIR_CLOSE(iommuDir);
- return ret;
+ return true;
}
--
2.17.0