Message ID | 20240213130341.1793-13-philmd@linaro.org |
---|---|
State | Superseded |
Headers | show |
Series | hw: Strengthen SysBus & QBus API | expand |
On 2/13/24 14:03, Philippe Mathieu-Daudé wrote: > Inline cpu_create() in order to call > qdev_init_gpio_in_named_with_opaque() > before the CPU is realized. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> > --- > hw/sparc64/sparc64.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c > index 72f0849f50..3091cde586 100644 > --- a/hw/sparc64/sparc64.c > +++ b/hw/sparc64/sparc64.c > @@ -24,6 +24,7 @@ > > > #include "qemu/osdep.h" > +#include "qapi/error.h" > #include "cpu.h" > #include "hw/boards.h" > #include "hw/sparc/sparc64.h" > @@ -271,9 +272,10 @@ SPARCCPU *sparc64_cpu_devinit(const char *cpu_type, uint64_t prom_addr) > uint32_t stick_frequency = 100 * 1000000; > uint32_t hstick_frequency = 100 * 1000000; > > - cpu = SPARC_CPU(cpu_create(cpu_type)); > + cpu = SPARC_CPU(object_new(cpu_type)); > qdev_init_gpio_in_named(DEVICE(cpu), sparc64_cpu_set_ivec_irq, > "ivec-irq", IVEC_MAX); > + qdev_realize(DEVICE(cpu), NULL, &error_fatal); > env = &cpu->env; > > env->tick = cpu_timer_create("tick", cpu, tick_irq, Reviewed-by: Damien Hedde <dhedde@kalrayinc.com>
diff --git a/hw/sparc64/sparc64.c b/hw/sparc64/sparc64.c index 72f0849f50..3091cde586 100644 --- a/hw/sparc64/sparc64.c +++ b/hw/sparc64/sparc64.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" +#include "qapi/error.h" #include "cpu.h" #include "hw/boards.h" #include "hw/sparc/sparc64.h" @@ -271,9 +272,10 @@ SPARCCPU *sparc64_cpu_devinit(const char *cpu_type, uint64_t prom_addr) uint32_t stick_frequency = 100 * 1000000; uint32_t hstick_frequency = 100 * 1000000; - cpu = SPARC_CPU(cpu_create(cpu_type)); + cpu = SPARC_CPU(object_new(cpu_type)); qdev_init_gpio_in_named(DEVICE(cpu), sparc64_cpu_set_ivec_irq, "ivec-irq", IVEC_MAX); + qdev_realize(DEVICE(cpu), NULL, &error_fatal); env = &cpu->env; env->tick = cpu_timer_create("tick", cpu, tick_irq,