Re: [PATCH 08/20] target/riscv: move 'host' CPU declaration to kvm.c
On Fri, Aug 25, 2023 at 10:08:41AM -0300, Daniel Henrique Barboza wrote: > This CPU only exists if we're compiling with KVM so move it to the kvm > specific file. While we're at it, change its class_init() to enable the > user_extensions_flag class property, sparing us from having to execute > riscv_cpu_add_user_properties() by hand and letting the post_init() hook > do the work. > > Signed-off-by: Daniel Henrique Barboza > --- > target/riscv/cpu.c | 23 --- > target/riscv/kvm.c | 29 + > 2 files changed, 29 insertions(+), 23 deletions(-) > > diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c > index f67b782675..dbf81796d2 100644 > --- a/target/riscv/cpu.c > +++ b/target/riscv/cpu.c > @@ -655,19 +655,6 @@ static void rv32_imafcu_nommu_cpu_init(Object *obj) > } > #endif > > -#if defined(CONFIG_KVM) > -static void riscv_host_cpu_init(Object *obj) > -{ > -CPURISCVState *env = _CPU(obj)->env; > -#if defined(TARGET_RISCV32) > -set_misa(env, MXL_RV32, 0); > -#elif defined(TARGET_RISCV64) > -set_misa(env, MXL_RV64, 0); > -#endif > -riscv_cpu_add_user_properties(obj); > -} > -#endif /* CONFIG_KVM */ > - > static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) > { > ObjectClass *oc; > @@ -2000,13 +1987,6 @@ static void riscv_vendor_cpu_class_init(ObjectClass > *c, void *data) > rcc->user_extension_properties = false; > } > > -#define DEFINE_CPU(type_name, initfn) \ > -{ \ > -.name = type_name, \ > -.parent = TYPE_RISCV_CPU, \ > -.instance_init = initfn\ > -} > - > #define DEFINE_DYNAMIC_CPU(type_name, initfn) \ > { \ > .name = type_name,\ > @@ -2047,9 +2027,6 @@ static const TypeInfo riscv_cpu_type_infos[] = { > }, > DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_ANY, riscv_any_cpu_init), > DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_MAX, riscv_max_cpu_init), > -#if defined(CONFIG_KVM) > -DEFINE_CPU(TYPE_RISCV_CPU_HOST, riscv_host_cpu_init), > -#endif > #if defined(TARGET_RISCV32) > DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_BASE32, rv32_base_cpu_init), > DEFINE_VENDOR_CPU(TYPE_RISCV_CPU_IBEX, rv32_ibex_cpu_init), > diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c > index 7c6dec05e3..59004caa8e 100644 > --- a/target/riscv/kvm.c > +++ b/target/riscv/kvm.c > @@ -1217,3 +1217,32 @@ void kvm_riscv_aia_create(MachineState *machine, > uint64_t group_shift, > > kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled(); > } > + > +static void riscv_host_cpu_init(Object *obj) > +{ > +CPURISCVState *env = _CPU(obj)->env; > + > +#if defined(TARGET_RISCV32) > +env->misa_mxl_max = env->misa_mxl = MXL_RV32; > +#elif defined(TARGET_RISCV64) > +env->misa_mxl_max = env->misa_mxl = MXL_RV64; > +#endif > +} > + > +static void riscv_kvm_cpu_class_init(ObjectClass *c, void *data) > +{ > +RISCVCPUClass *rcc = RISCV_CPU_CLASS(c); > + > +rcc->user_extension_properties = true; > +} > + > +static const TypeInfo riscv_kvm_cpu_type_infos[] = { > +{ > +.name = TYPE_RISCV_CPU_HOST, > +.parent = TYPE_RISCV_CPU, > +.instance_init = riscv_host_cpu_init, > +.class_init = riscv_kvm_cpu_class_init, > +} > +}; > + > +DEFINE_TYPES(riscv_kvm_cpu_type_infos) > -- > 2.41.0 > > Reviewed-by: Andrew Jones
Re: [PATCH 08/20] target/riscv: move 'host' CPU declaration to kvm.c
On 25/8/23 15:08, Daniel Henrique Barboza wrote: This CPU only exists if we're compiling with KVM so move it to the kvm specific file. While we're at it, change its class_init() to enable the user_extensions_flag class property, sparing us from having to execute riscv_cpu_add_user_properties() by hand and letting the post_init() hook do the work. Signed-off-by: Daniel Henrique Barboza --- target/riscv/cpu.c | 23 --- target/riscv/kvm.c | 29 + 2 files changed, 29 insertions(+), 23 deletions(-) Reviewed-by: Philippe Mathieu-Daudé
[PATCH 08/20] target/riscv: move 'host' CPU declaration to kvm.c
This CPU only exists if we're compiling with KVM so move it to the kvm specific file. While we're at it, change its class_init() to enable the user_extensions_flag class property, sparing us from having to execute riscv_cpu_add_user_properties() by hand and letting the post_init() hook do the work. Signed-off-by: Daniel Henrique Barboza --- target/riscv/cpu.c | 23 --- target/riscv/kvm.c | 29 + 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index f67b782675..dbf81796d2 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -655,19 +655,6 @@ static void rv32_imafcu_nommu_cpu_init(Object *obj) } #endif -#if defined(CONFIG_KVM) -static void riscv_host_cpu_init(Object *obj) -{ -CPURISCVState *env = _CPU(obj)->env; -#if defined(TARGET_RISCV32) -set_misa(env, MXL_RV32, 0); -#elif defined(TARGET_RISCV64) -set_misa(env, MXL_RV64, 0); -#endif -riscv_cpu_add_user_properties(obj); -} -#endif /* CONFIG_KVM */ - static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) { ObjectClass *oc; @@ -2000,13 +1987,6 @@ static void riscv_vendor_cpu_class_init(ObjectClass *c, void *data) rcc->user_extension_properties = false; } -#define DEFINE_CPU(type_name, initfn) \ -{ \ -.name = type_name, \ -.parent = TYPE_RISCV_CPU, \ -.instance_init = initfn\ -} - #define DEFINE_DYNAMIC_CPU(type_name, initfn) \ { \ .name = type_name,\ @@ -2047,9 +2027,6 @@ static const TypeInfo riscv_cpu_type_infos[] = { }, DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_ANY, riscv_any_cpu_init), DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_MAX, riscv_max_cpu_init), -#if defined(CONFIG_KVM) -DEFINE_CPU(TYPE_RISCV_CPU_HOST, riscv_host_cpu_init), -#endif #if defined(TARGET_RISCV32) DEFINE_DYNAMIC_CPU(TYPE_RISCV_CPU_BASE32, rv32_base_cpu_init), DEFINE_VENDOR_CPU(TYPE_RISCV_CPU_IBEX, rv32_ibex_cpu_init), diff --git a/target/riscv/kvm.c b/target/riscv/kvm.c index 7c6dec05e3..59004caa8e 100644 --- a/target/riscv/kvm.c +++ b/target/riscv/kvm.c @@ -1217,3 +1217,32 @@ void kvm_riscv_aia_create(MachineState *machine, uint64_t group_shift, kvm_msi_via_irqfd_allowed = kvm_irqfds_enabled(); } + +static void riscv_host_cpu_init(Object *obj) +{ +CPURISCVState *env = _CPU(obj)->env; + +#if defined(TARGET_RISCV32) +env->misa_mxl_max = env->misa_mxl = MXL_RV32; +#elif defined(TARGET_RISCV64) +env->misa_mxl_max = env->misa_mxl = MXL_RV64; +#endif +} + +static void riscv_kvm_cpu_class_init(ObjectClass *c, void *data) +{ +RISCVCPUClass *rcc = RISCV_CPU_CLASS(c); + +rcc->user_extension_properties = true; +} + +static const TypeInfo riscv_kvm_cpu_type_infos[] = { +{ +.name = TYPE_RISCV_CPU_HOST, +.parent = TYPE_RISCV_CPU, +.instance_init = riscv_host_cpu_init, +.class_init = riscv_kvm_cpu_class_init, +} +}; + +DEFINE_TYPES(riscv_kvm_cpu_type_infos) -- 2.41.0