mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-21 20:15:17 +00:00
cpu: Consolidate ARM drivers
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@redhat.com>
This commit is contained in:
parent
b5447e78b2
commit
e2ddc811ab
@ -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
|
||||
|
@ -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
|
||||
};
|
||||
|
@ -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@linaro.org>
|
||||
* Pranavkumar Sawargaonkar <pranavkumar@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,
|
||||
};
|
@ -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@linaro.org>
|
||||
* Pravakumar Sawargaonkar <pranavkumar@linaro.org>
|
||||
*/
|
||||
|
||||
#ifndef __VIR_CPU_AARCH64_H__
|
||||
# define __VIR_CPU_AARCH64_H__
|
||||
|
||||
# include "cpu.h"
|
||||
|
||||
extern struct cpuArchDriver cpuDriverAARCH64;
|
||||
|
||||
#endif /* __VIR_CPU_AARCH64_H__ */
|
@ -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,
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user