]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_domain: Separate VFIO code
authorMichal Privoznik <mprivozn@redhat.com>
Mon, 24 Jun 2019 08:01:16 +0000 (10:01 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 6 Aug 2019 09:21:43 +0000 (11:21 +0200)
This piece of code will be re-used later.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
ACKed-by: Peter Krempa <pkrempa@redhat.com>
src/conf/domain_conf.c
src/conf/domain_conf.h
src/libvirt_private.syms
src/qemu/qemu_domain.c

index 5cd9939031562490dc1c72f6191f9e6e20632282..e930ec485d835de9b7ab23f7fb8547035ed3e002 100644 (file)
@@ -31346,6 +31346,23 @@ virDomainDefHasManagedPR(const virDomainDef *def)
 }
 
 
+bool
+virDomainDefHasVFIOHostdev(const virDomainDef *def)
+{
+    size_t i;
+
+    for (i = 0; i < def->nhostdevs; i++) {
+        const virDomainHostdevDef *tmp = def->hostdevs[i];
+        if (tmp->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
+            tmp->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
+            tmp->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO)
+            return true;
+    }
+
+    return false;
+}
+
+
 /**
  * virDomainGraphicsDefHasOpenGL:
  * @def: domain definition
index 8a4425df64334b4e7fbe707a330f25e00d7c73df..57ca2a8ad17bf71453e92cc94aff74b8ffcf880e 100644 (file)
@@ -3627,6 +3627,9 @@ virDomainDiskGetDetectZeroesMode(virDomainDiskDiscard discard,
 bool
 virDomainDefHasManagedPR(const virDomainDef *def);
 
+bool
+virDomainDefHasVFIOHostdev(const virDomainDef *def);
+
 bool
 virDomainGraphicsDefHasOpenGL(const virDomainDef *def);
 
index 98c166f397f4357d0a2605713fff89a376add7cd..42779ddc8ce4e600e566947bac6f2e48d93d2e7d 100644 (file)
@@ -298,6 +298,7 @@ virDomainDefHasMemballoon;
 virDomainDefHasMemoryHotplug;
 virDomainDefHasUSB;
 virDomainDefHasVcpusOffline;
+virDomainDefHasVFIOHostdev;
 virDomainDefLifecycleActionAllowed;
 virDomainDefMaybeAddController;
 virDomainDefMaybeAddInput;
index c45eadf4bed134a57dd6e46736cf7df8793da212..4bafb35a280410fcc18c5f7203e3be0dc6f1c4de 100644 (file)
@@ -12359,7 +12359,7 @@ qemuDomainGetHostdevPath(virDomainDefPtr def,
     bool includeVFIO = false;
     char **tmpPaths = NULL;
     int *tmpPerms = NULL;
-    size_t i, tmpNpaths = 0;
+    size_t tmpNpaths = 0;
     int perm = 0;
 
     *npaths = 0;
@@ -12382,16 +12382,7 @@ qemuDomainGetHostdevPath(virDomainDefPtr def,
 
                 perm = VIR_CGROUP_DEVICE_RW;
                 if (teardown) {
-                    size_t nvfios = 0;
-                    for (i = 0; i < def->nhostdevs; i++) {
-                        virDomainHostdevDefPtr tmp = def->hostdevs[i];
-                        if (tmp->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
-                            tmp->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
-                            tmp->source.subsys.u.pci.backend == VIR_DOMAIN_HOSTDEV_PCI_BACKEND_VFIO)
-                            nvfios++;
-                    }
-
-                    if (nvfios == 0)
+                    if (!virDomainDefHasVFIOHostdev(def))
                         includeVFIO = true;
                 } else {
                     includeVFIO = true;