On 8/19/20 4:42 AM, Thiago Jung Bauermann wrote: > Instead of setting CPUState::halted to 1 in main_cpu_reset(), use the > start-powered-off property which makes cpu_common_reset() initialize it > to 1 in common code. > > Also change creation of CPU object from cpu_create() to object_new() and > qdev_realize_and_unref() because cpu_create() realizes the CPU and it's not > possible to set a property after the object is realized. > > Signed-off-by: Thiago Jung Bauermann <bauer...@linux.ibm.com> > --- > hw/mips/cps.c | 14 ++++++++++---- > 1 file changed, 10 insertions(+), 4 deletions(-) > > diff --git a/hw/mips/cps.c b/hw/mips/cps.c > index 615e1a1ad2..4a98cf2287 100644 > --- a/hw/mips/cps.c > +++ b/hw/mips/cps.c > @@ -52,9 +52,6 @@ static void main_cpu_reset(void *opaque) > CPUState *cs = CPU(cpu); > > cpu_reset(cs); > - > - /* All VPs are halted on reset. Leave powering up to CPC. */ > - cs->halted = 1; > } > > static bool cpu_mips_itu_supported(CPUMIPSState *env) > @@ -76,7 +73,7 @@ static void mips_cps_realize(DeviceState *dev, Error **errp) > bool saar_present = false; > > for (i = 0; i < s->num_vp; i++) { > - cpu = MIPS_CPU(cpu_create(s->cpu_type)); > + cpu = MIPS_CPU(object_new(s->cpu_type)); > > /* Init internal devices */ > cpu_mips_irq_init_cpu(cpu); > @@ -89,7 +86,16 @@ static void mips_cps_realize(DeviceState *dev, Error > **errp) > env->itc_tag = mips_itu_get_tag_region(&s->itu); > env->itu = &s->itu; > } > + /* All VPs are halted on reset. Leave powering up to CPC. */ > + if (!object_property_set_bool(OBJECT(cpu), "start-powered-off", true, > + errp)) { > + return;
Ah, better :) Reviewed-by: Philippe Mathieu-Daudé <phi...@redhat.com> > + } > qemu_register_reset(main_cpu_reset, cpu); > + > + if (!qdev_realize_and_unref(DEVICE(cpu), NULL, errp)) { > + return; > + } > } > > cpu = MIPS_CPU(first_cpu); >