[libvirt] [PATCH v3 13/28] cpu_x86: Make virCPUx86DataAddCPUID work with virCPUDataPtr

Jiri Denemark jdenemar at redhat.com
Thu Feb 23 14:15:11 UTC 2017


The CPU driver provides APIs to create and free virCPUDataPtr. Thus all
APIs exported from the driver should work with that rather than
requiring the caller to pass a pointer to an internal part of the
structure.

In other words

    virCPUx86DataAddCPUID(cpudata, &cpuid)

is much better than the original

    virCPUx86DataAddCPUID(&cpudata->data.x86, &cpuid)

Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---

Notes:
    Version 3:
    - ACKed in v2
    - better commit message
    
    Version 2:
    - no change

 src/cpu/cpu_x86.c              | 57 ++++++++++++++++++++++++------------------
 src/cpu/cpu_x86.h              |  2 +-
 src/libxl/libxl_capabilities.c |  2 +-
 src/qemu/qemu_monitor_json.c   |  2 +-
 4 files changed, 36 insertions(+), 27 deletions(-)

diff --git a/src/cpu/cpu_x86.c b/src/cpu/cpu_x86.c
index 3b540f99c..029a7d475 100644
--- a/src/cpu/cpu_x86.c
+++ b/src/cpu/cpu_x86.c
@@ -330,9 +330,9 @@ x86DataCopy(virCPUx86Data *dst, const virCPUx86Data *src)
 }
 
 
-int
-virCPUx86DataAddCPUID(virCPUx86Data *data,
-                      const virCPUx86CPUID *cpuid)
+static int
+virCPUx86DataAddCPUIDInt(virCPUx86Data *data,
+                         const virCPUx86CPUID *cpuid)
 {
     virCPUx86CPUID *existing;
 
@@ -365,7 +365,7 @@ x86DataAdd(virCPUx86Data *data1,
         if (cpuid1) {
             x86cpuidSetBits(cpuid1, cpuid2);
         } else {
-            if (virCPUx86DataAddCPUID(data1, cpuid2) < 0)
+            if (virCPUx86DataAddCPUIDInt(data1, cpuid2) < 0)
                 return -1;
         }
     }
@@ -549,7 +549,7 @@ x86DataAddSignature(virCPUx86Data *data,
 {
     virCPUx86CPUID cpuid = { .eax_in = 0x1, .eax = signature };
 
-    return virCPUx86DataAddCPUID(data, &cpuid);
+    return virCPUx86DataAddCPUIDInt(data, &cpuid);
 }
 
 
@@ -892,7 +892,7 @@ x86FeatureParse(xmlXPathContextPtr ctxt,
                            i, feature->name);
             goto error;
         }
-        if (virCPUx86DataAddCPUID(&feature->data, &cpuid))
+        if (virCPUx86DataAddCPUIDInt(&feature->data, &cpuid))
             goto error;
     }
 
@@ -1446,7 +1446,7 @@ virCPUx86DataParse(xmlXPathContextPtr ctxt)
                            _("failed to parse cpuid[%zu]"), i);
             goto error;
         }
-        if (virCPUx86DataAddCPUID(&cpuData->data.x86, &cpuid) < 0)
+        if (virCPUx86DataAddCPUID(cpuData, &cpuid) < 0)
             goto error;
     }
 
@@ -1605,8 +1605,8 @@ x86Compute(virCPUDefPtr host,
             goto error;
 
         if (cpu->vendor && host_model->vendor &&
-            virCPUx86DataAddCPUID(&guest_model->data,
-                                  &host_model->vendor->cpuid) < 0)
+            virCPUx86DataAddCPUIDInt(&guest_model->data,
+                                     &host_model->vendor->cpuid) < 0)
             goto error;
 
         if (x86DataAddSignature(&guest_model->data, host_model->signature) < 0)
@@ -2013,7 +2013,7 @@ x86Encode(virArch arch,
         if (!(data_vendor = virCPUDataNew(arch)))
             goto error;
 
-        if (v && virCPUx86DataAddCPUID(&data_vendor->data.x86, &v->cpuid) < 0)
+        if (v && virCPUx86DataAddCPUID(data_vendor, &v->cpuid) < 0)
             goto error;
     }
 
@@ -2083,7 +2083,7 @@ cpuidCall(virCPUx86CPUID *cpuid)
  * Sub leaf n+1 is invalid if eax[4:0] in sub leaf n equals 0.
  */
 static int
-cpuidSetLeaf4(virCPUx86Data *data,
+cpuidSetLeaf4(virCPUDataPtr data,
               virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = *subLeaf0;
@@ -2106,7 +2106,7 @@ cpuidSetLeaf4(virCPUx86Data *data,
  * Sub leaf n is invalid if n > eax in sub leaf 0.
  */
 static int
-cpuidSetLeaf7(virCPUx86Data *data,
+cpuidSetLeaf7(virCPUDataPtr data,
               virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = { .eax_in = 0x7 };
@@ -2133,7 +2133,7 @@ cpuidSetLeaf7(virCPUx86Data *data,
  * meaningful data even if it was (theoretically) considered invalid.
  */
 static int
-cpuidSetLeafB(virCPUx86Data *data,
+cpuidSetLeafB(virCPUDataPtr data,
               virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = *subLeaf0;
@@ -2157,7 +2157,7 @@ cpuidSetLeafB(virCPUx86Data *data,
  * and edx[n-32] from sub leaf 1 is not set.
  */
 static int
-cpuidSetLeafD(virCPUx86Data *data,
+cpuidSetLeafD(virCPUDataPtr data,
               virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = { .eax_in = 0xd };
@@ -2204,7 +2204,7 @@ cpuidSetLeafD(virCPUx86Data *data,
  * 0x10: Sub leaf n is valid if ebx[n] (= res[ResID]) from sub leaf 0 is set.
  */
 static int
-cpuidSetLeafResID(virCPUx86Data *data,
+cpuidSetLeafResID(virCPUDataPtr data,
                   virCPUx86CPUID *subLeaf0,
                   uint32_t res)
 {
@@ -2232,13 +2232,13 @@ cpuidSetLeafResID(virCPUx86Data *data,
  * Sub leaves n >= 2 are valid as long as eax[3:0] != 0.
  */
 static int
-cpuidSetLeaf12(virCPUx86Data *data,
+cpuidSetLeaf12(virCPUDataPtr data,
                virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = { .eax_in = 0x7 };
     virCPUx86CPUID *cpuid7;
 
-    if (!(cpuid7 = x86DataCpuid(data, &cpuid)) ||
+    if (!(cpuid7 = x86DataCpuid(&data->data.x86, &cpuid)) ||
         !(cpuid7->ebx & (1 << 2)))
         return 0;
 
@@ -2268,7 +2268,7 @@ cpuidSetLeaf12(virCPUx86Data *data,
  * Sub leaf 0 reports the maximum supported sub leaf in eax.
  */
 static int
-cpuidSetLeaf14(virCPUx86Data *data,
+cpuidSetLeaf14(virCPUDataPtr data,
                virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = { .eax_in = 0x14 };
@@ -2293,7 +2293,7 @@ cpuidSetLeaf14(virCPUx86Data *data,
  * Sub leaf 0 reports the maximum supported sub leaf in eax.
  */
 static int
-cpuidSetLeaf17(virCPUx86Data *data,
+cpuidSetLeaf17(virCPUDataPtr data,
                virCPUx86CPUID *subLeaf0)
 {
     virCPUx86CPUID cpuid = { .eax_in = 0x17 };
@@ -2316,7 +2316,7 @@ cpuidSetLeaf17(virCPUx86Data *data,
 
 
 static int
-cpuidSet(uint32_t base, virCPUx86Data *data)
+cpuidSet(uint32_t base, virCPUDataPtr data)
 {
     int rc;
     uint32_t max;
@@ -2371,10 +2371,10 @@ x86NodeData(virArch arch)
     if (!(cpuData = virCPUDataNew(arch)))
         goto error;
 
-    if (cpuidSet(CPUX86_BASIC, &cpuData->data.x86) < 0)
+    if (cpuidSet(CPUX86_BASIC, cpuData) < 0)
         goto error;
 
-    if (cpuidSet(CPUX86_EXTENDED, &cpuData->data.x86) < 0)
+    if (cpuidSet(CPUX86_EXTENDED, cpuData) < 0)
         goto error;
 
     return cpuData;
@@ -2484,7 +2484,8 @@ x86Baseline(virCPUDefPtr *cpus,
         goto error;
     }
 
-    if (vendor && virCPUx86DataAddCPUID(&base_model->data, &vendor->cpuid) < 0)
+    if (vendor &&
+        virCPUx86DataAddCPUIDInt(&base_model->data, &vendor->cpuid) < 0)
         goto error;
 
     if (x86Decode(cpu, &base_model->data, models, nmodels, modelName, flags) < 0)
@@ -2683,7 +2684,7 @@ virCPUx86Translate(virCPUDefPtr cpu,
         goto cleanup;
 
     if (model->vendor &&
-        virCPUx86DataAddCPUID(&model->data, &model->vendor->cpuid) < 0)
+        virCPUx86DataAddCPUIDInt(&model->data, &model->vendor->cpuid) < 0)
         goto cleanup;
 
     if (x86DataAddSignature(&model->data, model->signature) < 0)
@@ -2711,6 +2712,14 @@ virCPUx86Translate(virCPUDefPtr cpu,
 }
 
 
+int
+virCPUx86DataAddCPUID(virCPUDataPtr cpuData,
+                      const virCPUx86CPUID *cpuid)
+{
+    return virCPUx86DataAddCPUIDInt(&cpuData->data.x86, cpuid);
+}
+
+
 struct cpuArchDriver cpuDriverX86 = {
     .name = "x86",
     .arch = archs,
diff --git a/src/cpu/cpu_x86.h b/src/cpu/cpu_x86.h
index bcda0da95..79e78a007 100644
--- a/src/cpu/cpu_x86.h
+++ b/src/cpu/cpu_x86.h
@@ -29,7 +29,7 @@
 
 extern struct cpuArchDriver cpuDriverX86;
 
-int virCPUx86DataAddCPUID(virCPUx86Data *data,
+int virCPUx86DataAddCPUID(virCPUDataPtr cpuData,
                           const virCPUx86CPUID *cpuid);
 
 #endif /* __VIR_CPU_X86_H__ */
diff --git a/src/libxl/libxl_capabilities.c b/src/libxl/libxl_capabilities.c
index 117055cf2..839a2ee81 100644
--- a/src/libxl/libxl_capabilities.c
+++ b/src/libxl/libxl_capabilities.c
@@ -72,7 +72,7 @@ libxlCapsAddCPUID(virCPUDataPtr data, virCPUx86CPUID *cpuid, ssize_t ncaps)
     for (i = 0; i < ncaps; i++) {
         virCPUx86CPUID *c = &cpuid[i];
 
-        if (virCPUx86DataAddCPUID(&data->data.x86, c) < 0) {
+        if (virCPUx86DataAddCPUID(data, c) < 0) {
             VIR_DEBUG("Failed to add CPUID(%x,%x)", c->eax_in, c->ecx_in);
             return -1;
         }
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c
index c8e1764f8..56635979a 100644
--- a/src/qemu/qemu_monitor_json.c
+++ b/src/qemu/qemu_monitor_json.c
@@ -6590,7 +6590,7 @@ qemuMonitorJSONParseCPUx86Features(virJSONValuePtr data)
     for (i = 0; i < n; i++) {
         if (qemuMonitorJSONParseCPUx86FeatureWord(virJSONValueArrayGet(data, i),
                                                   &cpuid) < 0 ||
-            virCPUx86DataAddCPUID(&cpudata->data.x86, &cpuid) < 0)
+            virCPUx86DataAddCPUID(cpudata, &cpuid) < 0)
             goto error;
     }
 
-- 
2.11.1




More information about the libvir-list mailing list