[PATCH 04/15] qemu: move qemuDomainDeviceDefValidateAddress() to qemu_validation.c

Daniel Henrique Barboza danielhb413 at gmail.com
Thu Mar 26 21:31:14 UTC 2020


The next big task is to move qemuDomainDeviceDefValidate() to
qemu_validation.c, which is a function that calls a lot of
other static helper functions. This patch starts it by moving
qemuDomainDeviceDefValidateAddress().

Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>
---
 src/qemu/qemu_domain.c   | 74 +---------------------------------------
 src/qemu/qemu_validate.c | 72 ++++++++++++++++++++++++++++++++++++++
 src/qemu/qemu_validate.h |  2 ++
 3 files changed, 75 insertions(+), 73 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 84212f7441..7cab3e370c 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -7721,78 +7721,6 @@ qemuDomainDeviceDefValidateFS(virDomainFSDefPtr fs,
 }
 
 
-static int
-qemuDomainDeviceDefValidateZPCIAddress(virDomainDeviceInfoPtr info,
-                                       virQEMUCapsPtr qemuCaps)
-{
-    if (!virZPCIDeviceAddressIsEmpty(&info->addr.pci.zpci) &&
-        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ZPCI)) {
-        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                       "%s",
-                       _("This QEMU binary doesn't support zPCI"));
-        return -1;
-    }
-
-    return 0;
-}
-
-
-static int
-qemuDomainDeviceDefValidateAddress(const virDomainDeviceDef *dev,
-                                   virQEMUCapsPtr qemuCaps)
-{
-    virDomainDeviceInfoPtr info;
-
-    if (!(info = virDomainDeviceGetInfo((virDomainDeviceDef *)dev)))
-        return 0;
-
-    switch ((virDomainDeviceAddressType) info->type) {
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
-        return qemuDomainDeviceDefValidateZPCIAddress(info, qemuCaps);
-
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
-        /* Address validation might happen before we have had a chance to
-         * automatically assign addresses to devices for which the user
-         * didn't specify one themselves */
-        break;
-
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO: {
-        virDomainDeviceSpaprVioAddressPtr addr = &(info->addr.spaprvio);
-
-        if (addr->has_reg && addr->reg > 0xffffffff) {
-            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
-                           _("spapr-vio reg='0x%llx' exceeds maximum "
-                             "possible value (0xffffffff)"),
-                           addr->reg);
-            return -1;
-        }
-
-        break;
-        }
-
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNASSIGNED:
-        /* No validation for these address types yet */
-        break;
-
-    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
-    default:
-        virReportEnumRangeError(virDomainDeviceAddressType, info->type);
-        return -1;
-    }
-
-    return 0;
-}
-
-
 static int
 qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
                             const virDomainDef *def,
@@ -7813,7 +7741,7 @@ qemuDomainDeviceDefValidate(const virDomainDeviceDef *dev,
                                                        def->virtType)))
         return -1;
 
-    if ((ret = qemuDomainDeviceDefValidateAddress(dev, qemuCaps)) < 0)
+    if ((ret = qemuValidateDomainDeviceDefAddress(dev, qemuCaps)) < 0)
         return ret;
 
     if ((ret = virDomainCapsDeviceDefValidate(domCaps, dev, def)) < 0)
diff --git a/src/qemu/qemu_validate.c b/src/qemu/qemu_validate.c
index 27e0558770..1bcc0c5da2 100644
--- a/src/qemu/qemu_validate.c
+++ b/src/qemu/qemu_validate.c
@@ -942,3 +942,75 @@ qemuValidateDomainDef(const virDomainDef *def, void *opaque)
 
     return 0;
 }
+
+
+static int
+qemuValidateDomainDeviceDefZPCIAddress(virDomainDeviceInfoPtr info,
+                                       virQEMUCapsPtr qemuCaps)
+{
+    if (!virZPCIDeviceAddressIsEmpty(&info->addr.pci.zpci) &&
+        !virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ZPCI)) {
+        virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                       "%s",
+                       _("This QEMU binary doesn't support zPCI"));
+        return -1;
+    }
+
+    return 0;
+}
+
+
+int
+qemuValidateDomainDeviceDefAddress(const virDomainDeviceDef *dev,
+                                   virQEMUCapsPtr qemuCaps)
+{
+    virDomainDeviceInfoPtr info;
+
+    if (!(info = virDomainDeviceGetInfo((virDomainDeviceDef *)dev)))
+        return 0;
+
+    switch ((virDomainDeviceAddressType) info->type) {
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI:
+        return qemuValidateDomainDeviceDefZPCIAddress(info, qemuCaps);
+
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE:
+        /* Address validation might happen before we have had a chance to
+         * automatically assign addresses to devices for which the user
+         * didn't specify one themselves */
+        break;
+
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_SPAPRVIO: {
+        virDomainDeviceSpaprVioAddressPtr addr = &(info->addr.spaprvio);
+
+        if (addr->has_reg && addr->reg > 0xffffffff) {
+            virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                           _("spapr-vio reg='0x%llx' exceeds maximum "
+                             "possible value (0xffffffff)"),
+                           addr->reg);
+            return -1;
+        }
+
+        break;
+        }
+
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DRIVE:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_SERIAL:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCID:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_USB:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_MMIO:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_ISA:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_DIMM:
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_UNASSIGNED:
+        /* No validation for these address types yet */
+        break;
+
+    case VIR_DOMAIN_DEVICE_ADDRESS_TYPE_LAST:
+    default:
+        virReportEnumRangeError(virDomainDeviceAddressType, info->type);
+        return -1;
+    }
+
+    return 0;
+}
diff --git a/src/qemu/qemu_validate.h b/src/qemu/qemu_validate.h
index b6a6466a24..440b63333c 100644
--- a/src/qemu/qemu_validate.h
+++ b/src/qemu/qemu_validate.h
@@ -26,3 +26,5 @@
 #include "qemu_capabilities.h"
 
 int qemuValidateDomainDef(const virDomainDef *def, void *opaque);
+int qemuValidateDomainDeviceDefAddress(const virDomainDeviceDef *dev,
+                                       virQEMUCapsPtr qemuCaps);
-- 
2.25.1





More information about the libvir-list mailing list