On Fri, Apr 28, 2023 at 04:57:28PM -0300, Daniel Henrique Barboza wrote:
At this moment it is not possible to launch a 'riscv64'
domain if a CPU
definition is presented in the domain. For example, adding this CPU
definition:
<cpu mode='custom' match='exact' check='none'>
<model fallback='forbid'>rv64</model>
</cpu>
Will trigger the following error:
$ sudo ./run tools/virsh start riscv-virt1
error: Failed to start domain 'riscv-virt1'
error: this function is not supported by the connection driver:
cannot update guest CPU for riscv64 architecture
The error comes from virCPUUpdate(), via qemuProcessUpdateGuestCPU(),
and it's caused by the absence of the 'update' API in the existing
RISC-V driver.
Add an 'update' API impl to the RISC-V driver to allow for CPU
definitions to be declared in RISC-V domains. This API was copied from
the ARM driver (virCPUarmUpdate()) since it's a good enough
implementation to get us going.
Signed-off-by: Daniel Henrique Barboza <dbarboza(a)ventanamicro.com>
---
po/POTFILES | 1 +
src/cpu/cpu_riscv64.c | 28 +++++++++++++++++++++++++++-
2 files changed, 28 insertions(+), 1 deletion(-)
Using the Arm CPU driver as a base sounds reasonable, as they
currently have the same level (read: pretty low) of sophistication.
I've tested this against both the current version of QEMU and the
upcoming one which implements query-cpu-definitions, and it works as
expected.
Reviewed-by: Andrea Bolognani <abologna(a)redhat.com>
and pushed.
--
Andrea Bolognani / Red Hat / Virtualization