Hi, In v2, after Vladimir's feedback, the following major changes were made:
- add default values in riscv_cpu_init() instead of doing gimmicks with setters and .set_default_value callbacks. The cost of having defaults for non-boolean properties in the parent class is smaller than having to deal with duplicated 'if cfg.prop == 0' checks in all setters; - all properties are now being registered in the 'general_user_opts' hash. We were registering only the properties that KVM checks, Vladimir pointed out that this isn't consistent, we're making it consistent now. Other smaller changes were made in patches 1, 2, 3 and 7. Vladimir, due to the amount of changes I didn't add your "Tested-by" in the patches. You're welcome to give this another try and add a tested-by again :) Patches based on riscv-to-apply.next. Changes from v2: - patch 1: - remove 'bext_ver' from cpu.h - patch 2 and 3: switched places - patch 3 (former 2): - added hash implementation from patch 8 - added pmu_mask setter() - pmu-mask and pmu-num can't be changed for vendor CPUs - patches 4, 5, 6: - properties are now being added in the hash - patch 7: - fixed string check in prop_vext_spec_set() - vext_spec is now being added in the hash - patches 8, 9, 11, 12: - default values added in riscv_cpu_init() - no longer checking for "value == 0" in setters - v2 link: https://lore.kernel.org/qemu-riscv/20231222122235.545235-1-dbarb...@ventanamicro.com/ Daniel Henrique Barboza (16): target/riscv/cpu_cfg.h: remove unused fields target/riscv: make riscv_cpu_is_generic() public target/riscv: move 'pmu-mask' and 'pmu-num' to riscv_cpu_properties[] target/riscv: move 'mmu' to riscv_cpu_properties[] target/riscv: move 'pmp' to riscv_cpu_properties[] target/riscv: rework 'priv_spec' target/riscv: rework 'vext_spec' target/riscv: move 'vlen' to riscv_cpu_properties[] target/riscv: move 'elen' to riscv_cpu_properties[] target/riscv: create finalize_features() for KVM target/riscv: move 'cbom_blocksize' to riscv_cpu_properties[] target/riscv: move 'cboz_blocksize' to riscv_cpu_properties[] target/riscv: remove riscv_cpu_options[] target/riscv/cpu.c: move 'mvendorid' to riscv_cpu_properties[] target/riscv/cpu.c: move 'mimpid' to riscv_cpu_properties[] target/riscv/cpu.c: move 'marchid' to riscv_cpu_properties[] target/riscv/cpu.c | 614 ++++++++++++++++++++++++++++++----- target/riscv/cpu.h | 8 +- target/riscv/cpu_cfg.h | 4 - target/riscv/kvm/kvm-cpu.c | 94 +++--- target/riscv/kvm/kvm_riscv.h | 1 + target/riscv/tcg/tcg-cpu.c | 63 ---- 6 files changed, 590 insertions(+), 194 deletions(-) -- 2.43.0