]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
cpu_ppc64: Implement virCPUDataIsIdentical for ppc64
authorTim Wiederhake <twiederh@redhat.com>
Mon, 11 Oct 2021 10:21:04 +0000 (12:21 +0200)
committerTim Wiederhake <twiederh@redhat.com>
Fri, 5 Nov 2021 16:12:25 +0000 (17:12 +0100)
Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/cpu/cpu_ppc64.c

index 4909f61ff1f6675af40a3d8842e959b18b04086d..fcd68c8a7cf4db97cf8e07bb559d545385c68383 100644 (file)
@@ -578,6 +578,31 @@ ppc64DriverDecode(virCPUDef *cpu,
     return 0;
 }
 
+static virCPUCompareResult
+virCPUppc64DataIsIdentical(const virCPUData *a,
+                           const virCPUData *b)
+{
+    size_t i;
+
+    if (!a || !b)
+        return VIR_CPU_COMPARE_ERROR;
+
+    if (a->arch != b->arch)
+        return VIR_CPU_COMPARE_INCOMPATIBLE;
+
+    if (a->data.ppc64.len != b->data.ppc64.len)
+        return VIR_CPU_COMPARE_INCOMPATIBLE;
+
+    for (i = 0; i < a->data.ppc64.len; ++i) {
+        if (a->data.ppc64.pvr[i].mask != b->data.ppc64.pvr[i].mask)
+            return VIR_CPU_COMPARE_INCOMPATIBLE;
+        if (a->data.ppc64.pvr[i].value != b->data.ppc64.pvr[i].value)
+            return VIR_CPU_COMPARE_INCOMPATIBLE;
+    }
+
+    return VIR_CPU_COMPARE_IDENTICAL;
+}
+
 static void
 virCPUppc64DataFree(virCPUData *data)
 {
@@ -749,4 +774,5 @@ struct cpuArchDriver cpuDriverPPC64 = {
     .update     = virCPUppc64Update,
     .getModels  = virCPUppc64DriverGetModels,
     .convertLegacy = virCPUppc64ConvertLegacy,
+    .dataIsIdentical = virCPUppc64DataIsIdentical,
 };