[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 11/11] hw/sparc64/cpu: Initialize GPIO before realizing CP
From: |
Peter Maydell |
Subject: |
Re: [PATCH v3 11/11] hw/sparc64/cpu: Initialize GPIO before realizing CPU devices |
Date: |
Fri, 9 Feb 2024 11:34:10 +0000 |
On Thu, 8 Feb 2024 at 18:14, Philippe Mathieu-Daudé <philmd@linaro.org> 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>
> ---
> 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,
> --
> 2.41.0
For the purposes of letting us enforce the "init GPIOs
before realize, not after" rule,
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
but it looks like this code is adding a GPIO to a
device from code that's not actually part of the
implementation of the device. Ideally most of the code in
this file should be rolled into the CPU itself in target/sparc.
thanks
-- PMM
- [PATCH v3 07/11] hw/sh4/r2d: Realize IDE controller before accessing it, (continued)