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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list