From: Jiri Denemark <[email protected]>

Each CPU mode is filled in its own dedicated function.

Signed-off-by: Jiri Denemark <[email protected]>
Reviewed-by: Peter Krempa <[email protected]>
---

Notes:
    Version 2:
    - no change

 src/qemu/qemu_capabilities.c | 96 ++++++++++++++++++++++++------------
 1 file changed, 64 insertions(+), 32 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 12af7c4616..90bd43e628 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6606,6 +6606,66 @@ virQEMUCapsFillDomainOSCaps(virDomainCapsOS *os,
 }
 
 
+static void
+virQEMUCapsFillDomainCPUHostPassthrough(virQEMUCaps *qemuCaps,
+                                        virDomainCaps *domCaps)
+{
+    domCaps->cpu.hostPassthrough = true;
+
+    domCaps->cpu.hostPassthroughMigratable.report = true;
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MIGRATABLE)) {
+        VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.hostPassthroughMigratable,
+                                 VIR_TRISTATE_SWITCH_ON);
+    }
+    VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.hostPassthroughMigratable,
+                             VIR_TRISTATE_SWITCH_OFF);
+}
+
+
+static void
+virQEMUCapsFillDomainCPUMaximum(virDomainCaps *domCaps)
+{
+    domCaps->cpu.maximum = true;
+
+    domCaps->cpu.maximumMigratable.report = true;
+    VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
+                             VIR_TRISTATE_SWITCH_ON);
+    VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
+                             VIR_TRISTATE_SWITCH_OFF);
+}
+
+
+static void
+virQEMUCapsFillDomainCPUHostModel(virQEMUCaps *qemuCaps,
+                                  virDomainCaps *domCaps)
+{
+    virCPUDef *cpu = virQEMUCapsGetHostModel(qemuCaps, domCaps->virttype,
+                                             VIR_QEMU_CAPS_HOST_CPU_REPORTED);
+
+    domCaps->cpu.hostModel = virCPUDefCopy(cpu);
+    domCaps->cpu.hostModel->addr = virQEMUCapsGetHostPhysAddr(qemuCaps,
+                                                              
domCaps->virttype);
+}
+
+
+static void
+virQEMUCapsFillDomainCPUCustom(virQEMUCaps *qemuCaps,
+                               virDomainCaps *domCaps)
+{
+    const char *forbidden[] = { "host", NULL };
+    g_auto(GStrv) models = NULL;
+
+    if (virCPUGetModels(domCaps->arch, &models) >= 0) {
+        domCaps->cpu.custom = virQEMUCapsGetCPUModels(qemuCaps,
+                                                      domCaps->virttype,
+                                                      (const char **)models,
+                                                      forbidden);
+    } else {
+        domCaps->cpu.custom = NULL;
+    }
+}
+
+
 static void
 virQEMUCapsFillDomainCPUCaps(virQEMUCaps *qemuCaps,
                              virArch hostarch,
@@ -6614,53 +6674,25 @@ virQEMUCapsFillDomainCPUCaps(virQEMUCaps *qemuCaps,
     if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
                                       VIR_CPU_MODE_HOST_PASSTHROUGH,
                                       domCaps->machine)) {
-        domCaps->cpu.hostPassthrough = true;
-
-        domCaps->cpu.hostPassthroughMigratable.report = true;
-        if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_CPU_MIGRATABLE)) {
-            VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.hostPassthroughMigratable,
-                                     VIR_TRISTATE_SWITCH_ON);
-        }
-        VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.hostPassthroughMigratable,
-                                 VIR_TRISTATE_SWITCH_OFF);
+        virQEMUCapsFillDomainCPUHostPassthrough(qemuCaps, domCaps);
     }
 
     if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
                                       VIR_CPU_MODE_MAXIMUM,
                                       domCaps->machine)) {
-        domCaps->cpu.maximum = true;
-
-        domCaps->cpu.maximumMigratable.report = true;
-        VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
-                                 VIR_TRISTATE_SWITCH_ON);
-        VIR_DOMAIN_CAPS_ENUM_SET(domCaps->cpu.maximumMigratable,
-                                 VIR_TRISTATE_SWITCH_OFF);
+        virQEMUCapsFillDomainCPUMaximum(domCaps);
     }
 
     if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
                                       VIR_CPU_MODE_HOST_MODEL,
                                       domCaps->machine)) {
-        virCPUDef *cpu = virQEMUCapsGetHostModel(qemuCaps, domCaps->virttype,
-                                                   
VIR_QEMU_CAPS_HOST_CPU_REPORTED);
-        domCaps->cpu.hostModel = virCPUDefCopy(cpu);
-        domCaps->cpu.hostModel->addr = virQEMUCapsGetHostPhysAddr(qemuCaps,
-                                                                  
domCaps->virttype);
+        virQEMUCapsFillDomainCPUHostModel(qemuCaps, domCaps);
     }
 
     if (virQEMUCapsIsCPUModeSupported(qemuCaps, hostarch, domCaps->virttype,
                                       VIR_CPU_MODE_CUSTOM,
                                       domCaps->machine)) {
-        const char *forbidden[] = { "host", NULL };
-        g_auto(GStrv) models = NULL;
-
-        if (virCPUGetModels(domCaps->arch, &models) >= 0) {
-            domCaps->cpu.custom = virQEMUCapsGetCPUModels(qemuCaps,
-                                                          domCaps->virttype,
-                                                          (const char 
**)models,
-                                                          forbidden);
-        } else {
-            domCaps->cpu.custom = NULL;
-        }
+        virQEMUCapsFillDomainCPUCustom(qemuCaps, domCaps);
     }
 }
 
-- 
2.54.0

Reply via email to