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_s390.h"
|
||||
#include "cpu_arm.h"
|
||||
#include "cpu_riscv64.h"
|
||||
#include "capabilities.h"
|
||||
|
||||
|
||||
@ -39,6 +40,7 @@ static struct cpuArchDriver *drivers[] = {
|
||||
&cpuDriverPPC64,
|
||||
&cpuDriverS390,
|
||||
&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_map.c',
|
||||
'cpu_ppc64.c',
|
||||
'cpu_riscv64.c',
|
||||
'cpu_s390.c',
|
||||
'cpu_x86.c',
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user