mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-12-23 21:34:54 +03:00
src/cpu: add a basic RiscV64 cpu driver
There are tests in qemuxml2argvtest that will fail if we enable RISC-V testing, with an error like the following: "cpuGetSubDriver:64 : this function is not supported by the connection driver: 'riscv64' architecture is not supp orted by CPU driver" This happens because we don't have a RISC-V driver yet. Add a barebone RISC-V driver to allow tests to be executed. The only 2 callbacks implemented here are 'compare' and 'validateFeatures', both acting as a no-op. More callbacks and features will be added in the future. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
This commit is contained in:
parent
1e2605c934
commit
fd70335876
@ -27,6 +27,7 @@
|
|||||||
#include "cpu_ppc64.h"
|
#include "cpu_ppc64.h"
|
||||||
#include "cpu_s390.h"
|
#include "cpu_s390.h"
|
||||||
#include "cpu_arm.h"
|
#include "cpu_arm.h"
|
||||||
|
#include "cpu_riscv64.h"
|
||||||
#include "capabilities.h"
|
#include "capabilities.h"
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ static struct cpuArchDriver *drivers[] = {
|
|||||||
&cpuDriverPPC64,
|
&cpuDriverPPC64,
|
||||||
&cpuDriverS390,
|
&cpuDriverS390,
|
||||||
&cpuDriverArm,
|
&cpuDriverArm,
|
||||||
|
&cpuDriverRiscv64,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
59
src/cpu/cpu_riscv64.c
Normal file
59
src/cpu/cpu_riscv64.c
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/*
|
||||||
|
* cpu_riscv64.c: CPU driver for riscv64 CPUs
|
||||||
|
*
|
||||||
|
* Copyright (C) 2023, Ventana Micro
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
|
#include "cpu.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define VIR_FROM_THIS VIR_FROM_CPU
|
||||||
|
|
||||||
|
static const virArch archs[] = { VIR_ARCH_RISCV64 };
|
||||||
|
|
||||||
|
static virCPUCompareResult
|
||||||
|
virCPURiscv64Compare(virCPUDef *host G_GNUC_UNUSED,
|
||||||
|
virCPUDef *cpu G_GNUC_UNUSED,
|
||||||
|
bool failMessages G_GNUC_UNUSED)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* For now QEMU will perform all runtime checks.
|
||||||
|
*/
|
||||||
|
return VIR_CPU_COMPARE_IDENTICAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
virCPURiscv64ValidateFeatures(virCPUDef *cpu G_GNUC_UNUSED)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
struct cpuArchDriver cpuDriverRiscv64 = {
|
||||||
|
.name = "riscv64",
|
||||||
|
.arch = archs,
|
||||||
|
.narch = G_N_ELEMENTS(archs),
|
||||||
|
.compare = virCPURiscv64Compare,
|
||||||
|
.decode = NULL,
|
||||||
|
.encode = NULL,
|
||||||
|
.baseline = NULL,
|
||||||
|
.update = NULL,
|
||||||
|
.validateFeatures = virCPURiscv64ValidateFeatures,
|
||||||
|
};
|
25
src/cpu/cpu_riscv64.h
Normal file
25
src/cpu/cpu_riscv64.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* cpu_riscv64.h: CPU driver for riscv64 CPUs
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023, Ventana Micro
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "cpu.h"
|
||||||
|
|
||||||
|
extern struct cpuArchDriver cpuDriverRiscv64;
|
@ -3,6 +3,7 @@ cpu_sources = [
|
|||||||
'cpu_arm.c',
|
'cpu_arm.c',
|
||||||
'cpu_map.c',
|
'cpu_map.c',
|
||||||
'cpu_ppc64.c',
|
'cpu_ppc64.c',
|
||||||
|
'cpu_riscv64.c',
|
||||||
'cpu_s390.c',
|
'cpu_s390.c',
|
||||||
'cpu_x86.c',
|
'cpu_x86.c',
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user