]> xenbits.xensource.com Git - libvirt.git/commitdiff
util: virhostdev: add virHostdevIsMdevDevice()
authorShalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Mon, 7 May 2018 14:41:13 +0000 (16:41 +0200)
committerJohn Ferlan <jferlan@redhat.com>
Mon, 14 May 2018 16:12:06 +0000 (12:12 -0400)
Add the function virHostdevIsMdevDevice() which detects whether a
hostdev is a mediated device or not. Also, replace all existing
conditionals.

Signed-off-by: Shalini Chellathurai Saroja <shalini@linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com>
Reviewed-by: Boris Fiuczynski <fiuczy@linux.ibm.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/libvirt_private.syms
src/qemu/qemu_command.c
src/qemu/qemu_domain_address.c
src/qemu/qemu_hostdev.c
src/util/virhostdev.c
src/util/virhostdev.h

index 5b2a58cdcd513f1190fcfc23aa9359515837ed10..b03596ad4de97a813f4ed4fddee584d5f3197034 100644 (file)
@@ -1928,6 +1928,7 @@ virHostCPUStatsAssign;
 
 # util/virhostdev.h
 virHostdevFindUSBDevice;
+virHostdevIsMdevDevice;
 virHostdevIsSCSIDevice;
 virHostdevManagerGetDefault;
 virHostdevPCINodeDeviceDetach;
index 11ad77f145f481eb48049247d235e7bb084d5ce2..253f7067cf632fa3e1af7699db9028a3f4a69b86 100644 (file)
@@ -5326,9 +5326,7 @@ qemuBuildHostdevCommandLine(virCommandPtr cmd,
         }
 
         /* MDEV */
-        if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
-            subsys->type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
-
+        if (virHostdevIsMdevDevice(hostdev)) {
             if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_VFIO_PCI)) {
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                                _("VFIO PCI device assignment is not "
index 8a5ff749315320d007001e41f62406ce1c3ac726..50f815c8cfd0eab463ace3963389d7070b66985a 100644 (file)
@@ -655,10 +655,10 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
         virPCIDevicePtr pciDev;
         virPCIDeviceAddressPtr hostAddr = &hostdev->source.subsys.u.pci.addr;
 
-        if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
-            (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
-             hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV &&
-             hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST)) {
+        if (!virHostdevIsMdevDevice(hostdev) &&
+            (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
+             (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI &&
+              hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST))) {
             return 0;
         }
 
index d2b546043d24649a035aac7ca667a59bd0e889f6..955b5df1a33e27ebdcc81c56cae2b81ff9ca0c0d 100644 (file)
@@ -339,8 +339,7 @@ qemuHostdevPrepareMediatedDevices(virQEMUDriverPtr driver,
     supportsVFIO = virFileExists("/dev/vfio/vfio");
 
     for (i = 0; i < nhostdevs; i++) {
-        if (hostdevs[i]->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
-            hostdevs[i]->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
+        if (virHostdevIsMdevDevice(hostdevs[i])) {
             if (!supportsVFIO) {
                 virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
                                _("Mediated host device assignment requires "
index db10b7a2043450f865fe9f862e3d5ea29d476521..f4bd19df6453b480b2d3dc145d303925291cf36d 100644 (file)
@@ -372,6 +372,20 @@ virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev)
 }
 
 
+/**
+ * virHostdevIsMdevDevice:
+ * @hostdev: host device to check
+ *
+ * Returns true if @hostdev is a Mediated device, false otherwise.
+ */
+bool
+virHostdevIsMdevDevice(virDomainHostdevDefPtr hostdev)
+{
+    return hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
+        hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV;
+}
+
+
 static int
 virHostdevNetConfigVirtPortProfile(const char *linkdev, int vf,
                                    virNetDevVPortProfilePtr virtPort,
@@ -1330,10 +1344,8 @@ virHostdevUpdateActiveMediatedDevices(virHostdevManagerPtr mgr,
 
         mdevsrc = &hostdev->source.subsys.u.mdev;
 
-        if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
-            hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
+        if (!virHostdevIsMdevDevice(hostdev))
             continue;
-        }
 
         if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr, mdevsrc->model)))
             goto cleanup;
@@ -1828,9 +1840,7 @@ virHostdevPrepareMediatedDevices(virHostdevManagerPtr mgr,
         virDomainHostdevSubsysMediatedDevPtr src = &hostdev->source.subsys.u.mdev;
         virMediatedDevicePtr mdev;
 
-        if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
-            continue;
-        if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV)
+        if (!virHostdevIsMdevDevice(hostdev))
             continue;
 
         if (!(mdev = virMediatedDeviceNew(src->uuidstr, src->model)))
@@ -2087,10 +2097,8 @@ virHostdevReAttachMediatedDevices(virHostdevManagerPtr mgr,
 
         mdevsrc = &hostdev->source.subsys.u.mdev;
 
-        if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS ||
-            hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV) {
+        if (!virHostdevIsMdevDevice(hostdev))
             continue;
-        }
 
         if (!(mdev = virMediatedDeviceNew(mdevsrc->uuidstr,
                                           mdevsrc->model)))
index 54e1c66be36fe053b91df432423393b02adcc564..8f77c00221e4eca9e451c9ae52c956b2653dac7c 100644 (file)
@@ -191,6 +191,9 @@ virHostdevReAttachDomainDevices(virHostdevManagerPtr mgr,
 bool
 virHostdevIsSCSIDevice(virDomainHostdevDefPtr hostdev)
     ATTRIBUTE_NONNULL(1);
+bool
+virHostdevIsMdevDevice(virDomainHostdevDefPtr hostdev)
+    ATTRIBUTE_NONNULL(1);
 
 /* functions used by NodeDevDetach/Reattach/Reset */
 int virHostdevPCINodeDeviceDetach(virHostdevManagerPtr mgr,