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@xxxxxxxxxxxxxxxx> > --- > 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@xxxxxxxxxx> and pushed. -- Andrea Bolognani / Red Hat / Virtualization