On 18.09.23 18:02, Philippe Mathieu-Daudé wrote:
> s390_cpu_realize_sysemu() runs some checks for the TCG accelerator,
> previous to creating the vCPU. s390_realize_cpu_model() also does
> run some checks for KVM.
> Move the sysemu call to s390_realize_cpu_model(). Having a single
> call before cpu_exec_realizefn() will allow us to factor a
> verify_accel_features() handler out in a pair of commits.
>
> Directly pass a S390CPU* to s390_cpu_realize_sysemu() to simplify.
>
> Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
> ---
> target/s390x/s390x-internal.h | 2 +-
> target/s390x/cpu-sysemu.c | 3 +--
> target/s390x/cpu.c | 6 ------
> target/s390x/cpu_models.c | 4 ++++
> 4 files changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/target/s390x/s390x-internal.h b/target/s390x/s390x-internal.h
> index 825252d728..781ac08458 100644
> --- a/target/s390x/s390x-internal.h
> +++ b/target/s390x/s390x-internal.h
> @@ -241,7 +241,7 @@ uint32_t calc_cc(CPUS390XState *env, uint32_t cc_op, uint64_t src, uint64_t dst,
> unsigned int s390_cpu_halt(S390CPU *cpu);
> void s390_cpu_unhalt(S390CPU *cpu);
> void s390_cpu_init_sysemu(Object *obj);
> -bool s390_cpu_realize_sysemu(DeviceState *dev, Error **errp);
> +bool s390_cpu_realize_sysemu(S390CPU *cpu, Error **errp);
> void s390_cpu_finalize(Object *obj);
> void s390_cpu_class_init_sysemu(CPUClass *cc);
> void s390_cpu_machine_reset_cb(void *opaque);
> diff --git a/target/s390x/cpu-sysemu.c b/target/s390x/cpu-sysemu.c
> index 8112561e5e..5178736c46 100644
> --- a/target/s390x/cpu-sysemu.c
> +++ b/target/s390x/cpu-sysemu.c
> @@ -122,9 +122,8 @@ void s390_cpu_init_sysemu(Object *obj)
> s390_cpu_set_state(S390_CPU_STATE_STOPPED, cpu);
> }
>
> -bool s390_cpu_realize_sysemu(DeviceState *dev, Error **errp)
> +bool s390_cpu_realize_sysemu(S390CPU *cpu, Error **errp)
> {
> - S390CPU *cpu = S390_CPU(dev);
> MachineState *ms = MACHINE(qdev_get_machine());
> unsigned int max_cpus = ms->smp.max_cpus;
>
> diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c
> index 416ac6c4e0..7257d4bc19 100644
> --- a/target/s390x/cpu.c
> +++ b/target/s390x/cpu.c
> @@ -237,12 +237,6 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp)
> goto out;
> }
>
> -#if !defined(CONFIG_USER_ONLY)
> - if (!s390_cpu_realize_sysemu(dev, &err)) {
> - goto out;
> - }
> -#endif
> -
> cpu_exec_realizefn(cs, &err);
> if (err != NULL) {
> goto out;
> diff --git a/target/s390x/cpu_models.c b/target/s390x/cpu_models.c
> index 98f14c09c2..f030be0d55 100644
> --- a/target/s390x/cpu_models.c
> +++ b/target/s390x/cpu_models.c
> @@ -612,6 +612,10 @@ void s390_realize_cpu_model(CPUState *cs, Error **errp)
> cpu->env.cpuid = deposit64(cpu->env.cpuid, CPU_PHYS_ADDR_SHIFT,
> CPU_PHYS_ADDR_BITS, cpu->env.core_id);
> }
> +
> + if (!s390_cpu_realize_sysemu(cpu, &err)) {
> + return;
> + }
> #endif
> }
>
That has nothing to do with CPU models and is, therefore, completely
misplaced ... :/
Or what am I missing?
--
Cheers,
David / dhildenb