* [PATCH 0/2] i.MX 8M Plus EVK Fixes
@ 2025-03-12 21:26 Bernhard Beschow
2025-03-12 21:26 ` [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE Bernhard Beschow
2025-03-12 21:26 ` [PATCH 2/2] hw/arm/fsl-imx8mp: Remove unused define Bernhard Beschow
0 siblings, 2 replies; 7+ messages in thread
From: Bernhard Beschow @ 2025-03-12 21:26 UTC (permalink / raw)
To: qemu-devel
Cc: Bernhard Beschow, Philippe Mathieu-Daudé, Peter Maydell,
qemu-arm, Thomas Huth
As discussed in [1], this series fixes the SoC class to be not user-creatable
to prevent a crash, and to be derived from TYPE_SYS_BUS_DEVICE to make reset
work properly. It also removes an unused define.
[1] https://lore.kernel.org/qemu-devel/1cdb6643-8fcc-4bd8-93fc-fcc93589c9a3@redhat.com/
Bernhard Beschow (2):
hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from
TYPE_SYS_BUS_DEVICE
hw/arm/fsl-imx8mp: Remove unused define
include/hw/arm/fsl-imx8mp.h | 4 ++--
hw/arm/fsl-imx8mp.c | 4 +++-
hw/arm/imx8mp-evk.c | 2 +-
3 files changed, 6 insertions(+), 4 deletions(-)
--
2.48.1
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE
2025-03-12 21:26 [PATCH 0/2] i.MX 8M Plus EVK Fixes Bernhard Beschow
@ 2025-03-12 21:26 ` Bernhard Beschow
2025-03-12 23:41 ` Philippe Mathieu-Daudé
2025-03-12 23:58 ` BALATON Zoltan
2025-03-12 21:26 ` [PATCH 2/2] hw/arm/fsl-imx8mp: Remove unused define Bernhard Beschow
1 sibling, 2 replies; 7+ messages in thread
From: Bernhard Beschow @ 2025-03-12 21:26 UTC (permalink / raw)
To: qemu-devel
Cc: Bernhard Beschow, Philippe Mathieu-Daudé, Peter Maydell,
qemu-arm, Thomas Huth
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 <thuth@redhat.com>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
include/hw/arm/fsl-imx8mp.h | 3 ++-
hw/arm/fsl-imx8mp.c | 4 +++-
hw/arm/imx8mp-evk.c | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h
index bc97fc416e..22fdc0d67c 100644
--- a/include/hw/arm/fsl-imx8mp.h
+++ b/include/hw/arm/fsl-imx8mp.h
@@ -26,6 +26,7 @@
#include "hw/timer/imx_gpt.h"
#include "hw/usb/hcd-dwc3.h"
#include "hw/watchdog/wdt_imx2.h"
+#include "hw/sysbus.h"
#include "qom/object.h"
#include "qemu/units.h"
@@ -49,7 +50,7 @@ enum FslImx8mpConfiguration {
};
struct FslImx8mpState {
- DeviceState parent_obj;
+ SysBusDevice parent_obj;
ARMCPU cpu[FSL_IMX8MP_NUM_CPUS];
GICv3State gic;
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;
dc->desc = "i.MX 8M Plus SoC";
}
static const TypeInfo fsl_imx8mp_types[] = {
{
.name = TYPE_FSL_IMX8MP,
- .parent = TYPE_DEVICE,
+ .parent = TYPE_SYS_BUS_DEVICE,
.instance_size = sizeof(FslImx8mpState),
.instance_init = fsl_imx8mp_init,
.class_init = fsl_imx8mp_class_init,
diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c
index e1a7892fd7..f17d5db466 100644
--- a/hw/arm/imx8mp-evk.c
+++ b/hw/arm/imx8mp-evk.c
@@ -37,7 +37,7 @@ static void imx8mp_evk_init(MachineState *machine)
s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP));
object_property_add_child(OBJECT(machine), "soc", OBJECT(s));
object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
- qdev_realize(DEVICE(s), NULL, &error_fatal);
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);
memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START,
machine->ram);
--
2.48.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/2] hw/arm/fsl-imx8mp: Remove unused define
2025-03-12 21:26 [PATCH 0/2] i.MX 8M Plus EVK Fixes Bernhard Beschow
2025-03-12 21:26 ` [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE Bernhard Beschow
@ 2025-03-12 21:26 ` Bernhard Beschow
1 sibling, 0 replies; 7+ messages in thread
From: Bernhard Beschow @ 2025-03-12 21:26 UTC (permalink / raw)
To: qemu-devel
Cc: Bernhard Beschow, Philippe Mathieu-Daudé, Peter Maydell,
qemu-arm, Thomas Huth
The SoC has three SPI controllers, not four. Remove the extra define of an SPI
IRQ.
Fixes: 06908a84f036 "hw/arm/fsl-imx8mp: Add SPI controllers"
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
---
include/hw/arm/fsl-imx8mp.h | 1 -
1 file changed, 1 deletion(-)
diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h
index 22fdc0d67c..d016f7d337 100644
--- a/include/hw/arm/fsl-imx8mp.h
+++ b/include/hw/arm/fsl-imx8mp.h
@@ -238,7 +238,6 @@ enum FslImx8mpIrqs {
FSL_IMX8MP_ECSPI1_IRQ = 31,
FSL_IMX8MP_ECSPI2_IRQ = 32,
FSL_IMX8MP_ECSPI3_IRQ = 33,
- FSL_IMX8MP_ECSPI4_IRQ = 34,
FSL_IMX8MP_I2C1_IRQ = 35,
FSL_IMX8MP_I2C2_IRQ = 36,
--
2.48.1
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE
2025-03-12 21:26 ` [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE Bernhard Beschow
@ 2025-03-12 23:41 ` Philippe Mathieu-Daudé
2025-03-12 23:58 ` BALATON Zoltan
1 sibling, 0 replies; 7+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-03-12 23:41 UTC (permalink / raw)
To: Bernhard Beschow, qemu-devel; +Cc: Peter Maydell, qemu-arm, Thomas Huth
On 12/3/25 22:26, 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 <thuth@redhat.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
> include/hw/arm/fsl-imx8mp.h | 3 ++-
> hw/arm/fsl-imx8mp.c | 4 +++-
> hw/arm/imx8mp-evk.c | 2 +-
> 3 files changed, 6 insertions(+), 3 deletions(-)
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE
2025-03-12 21:26 ` [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE Bernhard Beschow
2025-03-12 23:41 ` Philippe Mathieu-Daudé
@ 2025-03-12 23:58 ` BALATON Zoltan
2025-03-13 10:12 ` Peter Maydell
1 sibling, 1 reply; 7+ messages in thread
From: BALATON Zoltan @ 2025-03-12 23:58 UTC (permalink / raw)
To: Bernhard Beschow
Cc: qemu-devel, Philippe Mathieu-Daudé, Peter Maydell, qemu-arm,
Thomas Huth
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 <thuth@redhat.com>
> Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> ---
> include/hw/arm/fsl-imx8mp.h | 3 ++-
> hw/arm/fsl-imx8mp.c | 4 +++-
> hw/arm/imx8mp-evk.c | 2 +-
> 3 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/include/hw/arm/fsl-imx8mp.h b/include/hw/arm/fsl-imx8mp.h
> index bc97fc416e..22fdc0d67c 100644
> --- a/include/hw/arm/fsl-imx8mp.h
> +++ b/include/hw/arm/fsl-imx8mp.h
> @@ -26,6 +26,7 @@
> #include "hw/timer/imx_gpt.h"
> #include "hw/usb/hcd-dwc3.h"
> #include "hw/watchdog/wdt_imx2.h"
> +#include "hw/sysbus.h"
> #include "qom/object.h"
> #include "qemu/units.h"
>
> @@ -49,7 +50,7 @@ enum FslImx8mpConfiguration {
> };
>
> struct FslImx8mpState {
> - DeviceState parent_obj;
> + SysBusDevice parent_obj;
>
> ARMCPU cpu[FSL_IMX8MP_NUM_CPUS];
> GICv3State gic;
> 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.
Regards,
BALATON Zoltan
> dc->desc = "i.MX 8M Plus SoC";
> }
>
> static const TypeInfo fsl_imx8mp_types[] = {
> {
> .name = TYPE_FSL_IMX8MP,
> - .parent = TYPE_DEVICE,
> + .parent = TYPE_SYS_BUS_DEVICE,
> .instance_size = sizeof(FslImx8mpState),
> .instance_init = fsl_imx8mp_init,
> .class_init = fsl_imx8mp_class_init,
> diff --git a/hw/arm/imx8mp-evk.c b/hw/arm/imx8mp-evk.c
> index e1a7892fd7..f17d5db466 100644
> --- a/hw/arm/imx8mp-evk.c
> +++ b/hw/arm/imx8mp-evk.c
> @@ -37,7 +37,7 @@ static void imx8mp_evk_init(MachineState *machine)
> s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP));
> object_property_add_child(OBJECT(machine), "soc", OBJECT(s));
> object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
> - qdev_realize(DEVICE(s), NULL, &error_fatal);
> + sysbus_realize_and_unref(SYS_BUS_DEVICE(s), &error_fatal);
>
> memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START,
> machine->ram);
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE
2025-03-12 23:58 ` BALATON Zoltan
@ 2025-03-13 10:12 ` Peter Maydell
2025-03-14 7:13 ` Bernhard Beschow
0 siblings, 1 reply; 7+ messages in thread
From: Peter Maydell @ 2025-03-13 10:12 UTC (permalink / raw)
To: BALATON Zoltan
Cc: Bernhard Beschow, qemu-devel, Philippe Mathieu-Daudé,
qemu-arm, Thomas Huth
On Wed, 12 Mar 2025 at 23:58, BALATON Zoltan <balaton@eik.bme.hu> 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 <thuth@redhat.com>
> > Suggested-by: Peter Maydell <peter.maydell@linaro.org>
> > Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> > 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
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE
2025-03-13 10:12 ` Peter Maydell
@ 2025-03-14 7:13 ` Bernhard Beschow
0 siblings, 0 replies; 7+ messages in thread
From: Bernhard Beschow @ 2025-03-14 7:13 UTC (permalink / raw)
To: Peter Maydell, BALATON Zoltan
Cc: qemu-devel, Philippe Mathieu-Daudé, qemu-arm, Thomas Huth
Am 13. März 2025 10:12:18 UTC schrieb Peter Maydell <peter.maydell@linaro.org>:
>On Wed, 12 Mar 2025 at 23:58, BALATON Zoltan <balaton@eik.bme.hu> 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 <thuth@redhat.com>
>> > Suggested-by: Peter Maydell <peter.maydell@linaro.org>
>> > Signed-off-by: Bernhard Beschow <shentey@gmail.com>
>
>> > 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.
I'll send a patch later this day.
Best regards,
Bernhard
>
>-- PMM
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-03-14 7:13 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-03-12 21:26 [PATCH 0/2] i.MX 8M Plus EVK Fixes Bernhard Beschow
2025-03-12 21:26 ` [PATCH 1/2] hw/arm/fsl-imx8mp: Make SoC not user-creatable, derive from TYPE_SYS_BUS_DEVICE Bernhard Beschow
2025-03-12 23:41 ` Philippe Mathieu-Daudé
2025-03-12 23:58 ` BALATON Zoltan
2025-03-13 10:12 ` Peter Maydell
2025-03-14 7:13 ` Bernhard Beschow
2025-03-12 21:26 ` [PATCH 2/2] hw/arm/fsl-imx8mp: Remove unused define Bernhard Beschow
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).