Hi Bernhard,
On Sun, Oct 4, 2026 at 8:35 PM Bernhard Beschow <[email protected]> wrote:
>
> Deriving from TYPE_SYS_BUS_DEVICE fixes the SoC object to be reset upon
> machine reset.
>
> Signed-off-by: Bernhard Beschow <[email protected]>
> ---
> include/hw/arm/fsl-imx25.h | 5 ++---
> hw/arm/fsl-imx25.c | 7 +------
> hw/arm/imx25_pdk.c | 2 +-
> 3 files changed, 4 insertions(+), 10 deletions(-)
>
> diff --git a/include/hw/arm/fsl-imx25.h b/include/hw/arm/fsl-imx25.h
> index b68d4334a0..4bb4d5b3e5 100644
> --- a/include/hw/arm/fsl-imx25.h
> +++ b/include/hw/arm/fsl-imx25.h
> @@ -29,6 +29,7 @@
> #include "hw/sd/sdhci.h"
> #include "hw/usb/chipidea.h"
> #include "hw/watchdog/wdt_imx2.h"
> +#include "hw/core/sysbus.h"
> #include "system/memory.h"
> #include "target/arm/cpu.h"
> #include "qom/object.h"
> @@ -45,10 +46,8 @@ OBJECT_DECLARE_SIMPLE_TYPE(FslIMX25State, FSL_IMX25)
> #define FSL_IMX25_NUM_USBS 2
>
> struct FslIMX25State {
> - /*< private >*/
> - DeviceState parent_obj;
> + SysBusDevice parent_obj;
>
> - /*< public >*/
> ARMCPU cpu;
> IMXAVICState avic;
> IMX25CCMState ccm;
> diff --git a/hw/arm/fsl-imx25.c b/hw/arm/fsl-imx25.c
> index 7f65f4ca4b..efb22359c5 100644
> --- a/hw/arm/fsl-imx25.c
> +++ b/hw/arm/fsl-imx25.c
> @@ -317,16 +317,11 @@ static void fsl_imx25_class_init(ObjectClass *oc, const
> void *data)
> device_class_set_props(dc, fsl_imx25_properties);
> dc->realize = fsl_imx25_realize;
> dc->desc = "i.MX25 SOC";
> - /*
> - * Reason: uses serial_hds in realize and the imx25 board does not
> - * support multiple CPUs
> - */
> - dc->user_creatable = false;
> }
>
> static const TypeInfo fsl_imx25_type_info = {
> .name = TYPE_FSL_IMX25,
> - .parent = TYPE_DEVICE,
> + .parent = TYPE_SYS_BUS_DEVICE,
> .instance_size = sizeof(FslIMX25State),
> .instance_init = fsl_imx25_init,
> .class_init = fsl_imx25_class_init,
> diff --git a/hw/arm/imx25_pdk.c b/hw/arm/imx25_pdk.c
> index 243c30a67e..6ce3e35ee3 100644
> --- a/hw/arm/imx25_pdk.c
> +++ b/hw/arm/imx25_pdk.c
> @@ -72,7 +72,7 @@ static void imx25_pdk_init(MachineState *machine)
>
> object_initialize_child(OBJECT(machine), "soc", &s->soc, TYPE_FSL_IMX25);
>
> - qdev_realize(DEVICE(&s->soc), NULL, &error_fatal);
> + sysbus_realize_and_unref(SYS_BUS_DEVICE(&s->soc), &error_fatal);
This should use sysbus_realize(), as object_initialize_child() already
decreased the ref cnt on success. The same for patch 12 & 13.
>
> /* We need to initialize our memory */
> if (machine->ram_size > (FSL_IMX25_SDRAM0_SIZE + FSL_IMX25_SDRAM1_SIZE))
> {
Regards,
Bin