]> git.proxmox.com Git - mirror_qemu.git/commit
target/riscv: create finalize_features() for KVM
authorDaniel Henrique Barboza <dbarboza@ventanamicro.com>
Fri, 12 Jan 2024 14:01:54 +0000 (11:01 -0300)
committerAlistair Francis <alistair.francis@wdc.com>
Fri, 9 Feb 2024 01:08:04 +0000 (11:08 +1000)
commitbbef914044f6db3aaaa9eb8bee64446a679f0387
tree0e6d8dbc92ee96f5b6e3f75c215c3465fbddafb5
parent9d1173d20d86b4bbeda4166b3b709b5dbb4c507d
target/riscv: create finalize_features() for KVM

To turn cbom_blocksize and cboz_blocksize into class properties we need
KVM specific changes.

KVM is creating its own version of these options with a customized
setter() that prevents users from picking an invalid value during init()
time. This comes at the cost of duplicating each option that KVM
supports. This will keep happening for each new shared option KVM
implements in the future.

We can avoid that by using the same property TCG uses and adding
specific KVM handling during finalize() time, like TCG already does with
riscv_tcg_cpu_finalize_features(). To do that, the common CPU property
offers a way of knowing if an option was user set or not, sparing us
from doing unneeded syscalls.

riscv_kvm_cpu_finalize_features() is then created using the same
KVMScratch CPU we already use during init() time, since finalize() time
is still too early to use the official KVM CPU for it. cbom_blocksize
and cboz_blocksize are then handled during finalize() in the same way
they're handled by their KVM specific setter.

With this change we can proceed with the blocksize changes in the common
code without breaking the KVM driver.

Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
tested-by tags added, rebased with Alistair's riscv-to-apply.next.
Message-ID: <20240112140201.127083-2-dbarboza@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
target/riscv/cpu.c
target/riscv/cpu.h
target/riscv/kvm/kvm-cpu.c
target/riscv/kvm/kvm_riscv.h