On Wed, 12 Mar 2025 at 23:58, BALATON Zoltan <[email protected]> wrote:
>
> On Wed, 12 Mar 2025, Bernhard Beschow wrote:
> > Fixes a crash when creating the SoC object on the command line:
> >
> >  $ ./qemu-system-aarch64  -M virt -device fsl-imx8mp
> >  **
> >  ERROR:../../devel/qemu/tcg/tcg.c:1006:tcg_register_thread: assertion 
> > failed:
> >  (n < tcg_max_ctxs)
> >  Bail out! ERROR:../../devel/qemu/tcg/tcg.c:1006:tcg_register_thread:
> >  assertion failed: (n < tcg_max_ctxs)
> >  Aborted (core dumped)
> >
> > Furthermore, the SoC object should be derived from TYPE_SYS_BUS_DEVICE such 
> > that
> > it gets properly reset.
> >
> > Fixes: a4eefc69b237 "hw/arm: Add i.MX 8M Plus EVK board"
> > Reported-by: Thomas Huth <[email protected]>
> > Suggested-by: Peter Maydell <[email protected]>
> > Signed-off-by: Bernhard Beschow <[email protected]>

> > diff --git a/hw/arm/fsl-imx8mp.c b/hw/arm/fsl-imx8mp.c
> > index 1ea98e1463..9133d49383 100644
> > --- a/hw/arm/fsl-imx8mp.c
> > +++ b/hw/arm/fsl-imx8mp.c
> > @@ -698,13 +698,15 @@ static void fsl_imx8mp_class_init(ObjectClass *oc, 
> > void *data)
> >     device_class_set_props(dc, fsl_imx8mp_properties);
> >     dc->realize = fsl_imx8mp_realize;
> >
> > +    /* Reason: SoC can only be instantiated from a board */
> > +    dc->user_creatable = false;
>
> I think sysbus devices are not user creatable by default (that's why
> dynamic sysbus device was introduced) so either this or the .parent change
> below is enough. You can have both just in case but maybe not necessary as
> other sysbus devices usually don't set user_createble either.

Yes, that's correct -- we don't need to manually set the
user_creatable flag here now we've changed the parent class
to be sysbus.

-- PMM

Reply via email to