[libvirt] [PATCH 1/3] cpu: Consolidate ARM drivers

Jiri Denemark jdenemar at redhat.com
Fri Jun 24 17:36:00 UTC 2016


Both ARM and AArch64 drivers are exactly the same (modulo function
names). Let's use just one driver for all ARM architectures.

Signed-off-by: Jiri Denemark <jdenemar at redhat.com>
---
 src/Makefile.am       |   1 -
 src/cpu/cpu.c         |   2 -
 src/cpu/cpu_aarch64.c | 133 --------------------------------------------------
 src/cpu/cpu_aarch64.h |  31 ------------
 src/cpu/cpu_arm.c     |  37 +++++++-------
 5 files changed, 20 insertions(+), 184 deletions(-)
 delete mode 100644 src/cpu/cpu_aarch64.c
 delete mode 100644 src/cpu/cpu_aarch64.h

diff --git a/src/Makefile.am b/src/Makefile.am
index 9f8b638..b91ff74 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -1080,7 +1080,6 @@ CPU_SOURCES =							\
 		cpu/cpu_x86.h cpu/cpu_x86.c cpu/cpu_x86_data.h	\
 		cpu/cpu_s390.h cpu/cpu_s390.c			\
 		cpu/cpu_arm.h cpu/cpu_arm.c			\
-		cpu/cpu_aarch64.h cpu/cpu_aarch64.c		\
 		cpu/cpu_ppc64.h cpu/cpu_ppc64.c			\
 		cpu/cpu_ppc64_data.h				\
 		cpu/cpu_map.h cpu/cpu_map.c
diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c
index 7decc74..62a420f 100644
--- a/src/cpu/cpu.c
+++ b/src/cpu/cpu.c
@@ -32,7 +32,6 @@
 #include "cpu_ppc64.h"
 #include "cpu_s390.h"
 #include "cpu_arm.h"
-#include "cpu_aarch64.h"
 #include "cpu_generic.h"
 #include "util/virstring.h"
 
@@ -47,7 +46,6 @@ static struct cpuArchDriver *drivers[] = {
     &cpuDriverPPC64,
     &cpuDriverS390,
     &cpuDriverArm,
-    &cpuDriverAARCH64,
     /* generic driver must always be the last one */
     &cpuDriverGeneric
 };
diff --git a/src/cpu/cpu_aarch64.c b/src/cpu/cpu_aarch64.c
deleted file mode 100644
index e6d5f53..0000000
--- a/src/cpu/cpu_aarch64.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * cpu_aarch64.c: CPU driver for AArch64 CPUs
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Anup Patel <anup.patel at linaro.org>
- *      Pranavkumar Sawargaonkar <pranavkumar at linaro.org>
- */
-
-#include <config.h>
-
-#include "viralloc.h"
-#include "cpu.h"
-#include "virstring.h"
-
-#define VIR_FROM_THIS VIR_FROM_CPU
-
-static const virArch archs[] = { VIR_ARCH_AARCH64 };
-
-static virCPUDataPtr
-AArch64NodeData(virArch arch)
-{
-    virCPUDataPtr data;
-
-    if (VIR_ALLOC(data) < 0)
-        return NULL;
-
-    data->arch = arch;
-
-    return data;
-}
-
-static int
-AArch64Decode(virCPUDefPtr cpu,
-              const virCPUData *data ATTRIBUTE_UNUSED,
-              const char **models ATTRIBUTE_UNUSED,
-              unsigned int nmodels ATTRIBUTE_UNUSED,
-              const char *preferred ATTRIBUTE_UNUSED,
-              unsigned int flags)
-{
-    virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES, -1);
-
-    if (cpu->model == NULL &&
-        VIR_STRDUP(cpu->model, "host") < 0)
-        return -1;
-
-    return 0;
-}
-
-static void
-AArch64DataFree(virCPUDataPtr data)
-{
-    VIR_FREE(data);
-}
-
-static int
-AArch64Update(virCPUDefPtr guest,
-              const virCPUDef *host)
-{
-    guest->match = VIR_CPU_MATCH_EXACT;
-    virCPUDefFreeModel(guest);
-    return virCPUDefCopyModel(guest, host, true);
-}
-
-static virCPUCompareResult
-AArch64GuestData(virCPUDefPtr host ATTRIBUTE_UNUSED,
-                 virCPUDefPtr guest ATTRIBUTE_UNUSED,
-                 virCPUDataPtr *data ATTRIBUTE_UNUSED,
-                 char **message ATTRIBUTE_UNUSED)
-{
-    return VIR_CPU_COMPARE_IDENTICAL;
-}
-
-static virCPUDefPtr
-AArch64Baseline(virCPUDefPtr *cpus,
-                unsigned int ncpus ATTRIBUTE_UNUSED,
-                const char **models ATTRIBUTE_UNUSED,
-                unsigned int nmodels ATTRIBUTE_UNUSED,
-                unsigned int flags)
-{
-    virCPUDefPtr cpu = NULL;
-
-    virCheckFlags(VIR_CONNECT_BASELINE_CPU_EXPAND_FEATURES |
-                  VIR_CONNECT_BASELINE_CPU_MIGRATABLE, NULL);
-
-    if (VIR_ALLOC(cpu) < 0 ||
-        VIR_STRDUP(cpu->model, cpus[0]->model) < 0) {
-        virCPUDefFree(cpu);
-        return NULL;
-    }
-
-    cpu->type = VIR_CPU_TYPE_GUEST;
-    cpu->match = VIR_CPU_MATCH_EXACT;
-
-    return cpu;
-}
-
-static virCPUCompareResult
-AArch64Compare(virCPUDefPtr host ATTRIBUTE_UNUSED,
-               virCPUDefPtr cpu ATTRIBUTE_UNUSED,
-               bool failIncompatible ATTRIBUTE_UNUSED)
-{
-    return VIR_CPU_COMPARE_IDENTICAL;
-}
-
-struct cpuArchDriver cpuDriverAARCH64 = {
-    .name = "aarch64",
-    .arch = archs,
-    .narch = ARRAY_CARDINALITY(archs),
-    .compare = AArch64Compare,
-    .decode = AArch64Decode,
-    .encode = NULL,
-    .free = AArch64DataFree,
-    .nodeData = AArch64NodeData,
-    .guestData = AArch64GuestData,
-    .baseline = AArch64Baseline,
-    .update = AArch64Update,
-    .hasFeature = NULL,
-};
diff --git a/src/cpu/cpu_aarch64.h b/src/cpu/cpu_aarch64.h
deleted file mode 100644
index 8e48368..0000000
--- a/src/cpu/cpu_aarch64.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * cpu_aarch64.h: CPU driver for AArch64 CPUs
- *
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library.  If not, see
- * <http://www.gnu.org/licenses/>.
- *
- * Authors:
- *      Anup Patel <anup.patel at linaro.org>
- *      Pravakumar Sawargaonkar <pranavkumar at linaro.org>
- */
-
-#ifndef __VIR_CPU_AARCH64_H__
-# define __VIR_CPU_AARCH64_H__
-
-# include "cpu.h"
-
-extern struct cpuArchDriver cpuDriverAARCH64;
-
-#endif /* __VIR_CPU_AARCH64_H__ */
diff --git a/src/cpu/cpu_arm.c b/src/cpu/cpu_arm.c
index 0403a8b..6090253 100644
--- a/src/cpu/cpu_arm.c
+++ b/src/cpu/cpu_arm.c
@@ -30,12 +30,15 @@
 
 #define VIR_FROM_THIS VIR_FROM_CPU
 
-static const virArch archs[] = {VIR_ARCH_ARMV6L,
-                                VIR_ARCH_ARMV7B,
-                                VIR_ARCH_ARMV7L};
+static const virArch archs[] = {
+    VIR_ARCH_ARMV6L,
+    VIR_ARCH_ARMV7B,
+    VIR_ARCH_ARMV7L,
+    VIR_ARCH_AARCH64,
+};
 
 static virCPUDataPtr
-ArmNodeData(virArch arch)
+armNodeData(virArch arch)
 {
     virCPUDataPtr data;
 
@@ -48,7 +51,7 @@ ArmNodeData(virArch arch)
 }
 
 static int
-ArmDecode(virCPUDefPtr cpu,
+armDecode(virCPUDefPtr cpu,
           const virCPUData *data ATTRIBUTE_UNUSED,
           const char **models ATTRIBUTE_UNUSED,
           unsigned int nmodels ATTRIBUTE_UNUSED,
@@ -65,13 +68,13 @@ ArmDecode(virCPUDefPtr cpu,
 }
 
 static void
-ArmDataFree(virCPUDataPtr data)
+armDataFree(virCPUDataPtr data)
 {
     VIR_FREE(data);
 }
 
 static int
-ArmUpdate(virCPUDefPtr guest,
+armUpdate(virCPUDefPtr guest,
           const virCPUDef *host)
 {
     guest->match = VIR_CPU_MATCH_EXACT;
@@ -80,7 +83,7 @@ ArmUpdate(virCPUDefPtr guest,
 }
 
 static virCPUCompareResult
-ArmGuestData(virCPUDefPtr host ATTRIBUTE_UNUSED,
+armGuestData(virCPUDefPtr host ATTRIBUTE_UNUSED,
              virCPUDefPtr guest ATTRIBUTE_UNUSED,
              virCPUDataPtr *data ATTRIBUTE_UNUSED,
              char **message ATTRIBUTE_UNUSED)
@@ -89,7 +92,7 @@ ArmGuestData(virCPUDefPtr host ATTRIBUTE_UNUSED,
 }
 
 static virCPUDefPtr
-ArmBaseline(virCPUDefPtr *cpus,
+armBaseline(virCPUDefPtr *cpus,
             unsigned int ncpus ATTRIBUTE_UNUSED,
             const char **models ATTRIBUTE_UNUSED,
             unsigned int nmodels ATTRIBUTE_UNUSED,
@@ -113,7 +116,7 @@ ArmBaseline(virCPUDefPtr *cpus,
 }
 
 static virCPUCompareResult
-ArmCompare(virCPUDefPtr host ATTRIBUTE_UNUSED,
+armCompare(virCPUDefPtr host ATTRIBUTE_UNUSED,
            virCPUDefPtr cpu ATTRIBUTE_UNUSED,
            bool failMessages ATTRIBUTE_UNUSED)
 {
@@ -124,13 +127,13 @@ struct cpuArchDriver cpuDriverArm = {
     .name = "arm",
     .arch = archs,
     .narch = ARRAY_CARDINALITY(archs),
-    .compare = ArmCompare,
-    .decode = ArmDecode,
+    .compare = armCompare,
+    .decode = armDecode,
     .encode = NULL,
-    .free = ArmDataFree,
-    .nodeData = ArmNodeData,
-    .guestData = ArmGuestData,
-    .baseline = ArmBaseline,
-    .update = ArmUpdate,
+    .free = armDataFree,
+    .nodeData = armNodeData,
+    .guestData = armGuestData,
+    .baseline = armBaseline,
+    .update = armUpdate,
     .hasFeature = NULL,
 };
-- 
2.9.0




More information about the libvir-list mailing list