]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: set PCI controller default modelName in a separate function
authorLaine Stump <laine@laine.org>
Wed, 16 Mar 2016 19:14:03 +0000 (15:14 -0400)
committerLaine Stump <laine@laine.org>
Thu, 14 Apr 2016 18:00:34 +0000 (14:00 -0400)
Since every PCI controller model has to have a default model name set,
put it in a separate function to clean up qemuDomainAssignPCIAddresses
a bit.

src/qemu/qemu_domain_address.c

index 911bbef00ce2509812d3bd8524b731c8a268fb18..73a699ccee5307ada06b952dee6f343d2ff40aa4 100644 (file)
@@ -1348,6 +1348,38 @@ qemuDomainSupportsPCI(virDomainDefPtr def,
 }
 
 
+static void
+qemuDomainPCIControllerSetDefaultModelName(virDomainControllerDefPtr cont)
+{
+    int *modelName = &cont->opts.pciopts.modelName;
+
+    /* make sure it's not already set */
+    if (*modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
+        return;
+    switch ((virDomainControllerModelPCI)cont->model) {
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
+        *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE;
+        break;
+    case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
+        *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE;
+        break;
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
+        *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420;
+        break;
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
+        *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM;
+        break;
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
+        *modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM;
+        break;
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
+    case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
+        break;
+    }
+}
+
+
 static int
 qemuDomainAssignPCIAddresses(virDomainDefPtr def,
                              virQEMUCapsPtr qemuCaps,
@@ -1448,41 +1480,35 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
                 addr = &cont->info.addr.pci;
                 options = &cont->opts.pciopts;
 
+                /* set default model name (the actual name of the
+                 * device in qemu) for any controller that doesn't yet
+                 * have it set.
+                 */
+                qemuDomainPCIControllerSetDefaultModelName(cont);
+
                 /* set defaults for any other auto-generated config
                  * options for this controller that haven't been
                  * specified in config.
                  */
                 switch ((virDomainControllerModelPCI)cont->model) {
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
-                    if (options->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
-                        options->modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE;
                     if (options->chassisNr == -1)
                         options->chassisNr = cont->idx;
                     break;
-                case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
-                    if (options->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
-                        options->modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE;
-                    break;
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
-                    if (options->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
-                        options->modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420;
                     if (options->chassis == -1)
                        options->chassis = cont->idx;
                     if (options->port == -1)
                        options->port = (addr->slot << 3) + addr->function;
                     break;
-                case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
-                    if (options->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
-                        options->modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM;
-                    break;
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
-                    if (options->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE)
-                        options->modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM;
                     if (options->chassis == -1)
                        options->chassis = cont->idx;
                     if (options->port == -1)
                        options->port = addr->slot;
                     break;
+                case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
+                case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
                 case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST: