From: Alistair Francis Date: Thu, 12 Mar 2026 04:31:55 +0000 (+1000) Subject: hw/arm: fsl-imx7: Don't call qdev_get_machine in soc init X-Git-Tag: v11.0.0-rc0~11^2~8 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=99757d557437dbcf57a3d43fe7427fe89f248ef3;p=thirdparty%2Fqemu.git hw/arm: fsl-imx7: Don't call qdev_get_machine in soc init Calling qdev_get_machine() in the soc_init function would result in the following assert ../hw/core/qdev.c:858: qdev_get_machine: Assertion `dev' failed. when trying to run ./qemu-system-aarch64 -S -display none -M virt -device fsl-imx7,help as the machine wasn't created yet. We call qdev_get_machine() to obtain the number of CPUs in the machine. So instead of initialising the CPUs in the SoC init let's instead do it in the realise where the machine will exist. Signed-off-by: Alistair Francis Tested-by: Markus Armbruster Message-ID: <20260312043158.4191378-5-alistair.francis@wdc.com> Signed-off-by: Thomas Huth --- diff --git a/hw/arm/fsl-imx7.c b/hw/arm/fsl-imx7.c index 9a230d222fd..2defa498d38 100644 --- a/hw/arm/fsl-imx7.c +++ b/hw/arm/fsl-imx7.c @@ -32,20 +32,10 @@ static void fsl_imx7_init(Object *obj) { - MachineState *ms = MACHINE(qdev_get_machine()); FslIMX7State *s = FSL_IMX7(obj); char name[NAME_SIZE]; int i; - /* - * CPUs - */ - for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX7_NUM_CPUS); i++) { - snprintf(name, NAME_SIZE, "cpu%d", i); - object_initialize_child(obj, name, &s->cpu[i], - ARM_CPU_TYPE_NAME("cortex-a7")); - } - /* * A7MPCORE */ @@ -179,6 +169,15 @@ static void fsl_imx7_realize(DeviceState *dev, Error **errp) return; } + /* + * CPUs + */ + for (i = 0; i < smp_cpus; i++) { + snprintf(name, NAME_SIZE, "cpu%d", i); + object_initialize_child(OBJECT(dev), name, &s->cpu[i], + ARM_CPU_TYPE_NAME("cortex-a7")); + } + /* * CPUs */