mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
hw/arm/fsl-imx8mp: Derive struct FslImx8mpState from TYPE_SYS_BUS_DEVICE
Deriving from TYPE_SYS_BUS_DEVICE fixes the SoC object to be reset upon machine
reset. It also makes the SoC implementation not user-creatable which can trigger
the following crash:
$ ./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)
Fixes: a4eefc69b2
"hw/arm: Add i.MX 8M Plus EVK board"
Reported-by: Thomas Huth <thuth@redhat.com>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Bernhard Beschow <shentey@gmail.com>
Message-ID: <20250318205709.28862-3-shentey@gmail.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
This commit is contained in:
parent
02e5214624
commit
26c1c41e8c
3 changed files with 4 additions and 3 deletions
|
@ -702,7 +702,7 @@ static void fsl_imx8mp_class_init(ObjectClass *oc, void *data)
|
||||||
static const TypeInfo fsl_imx8mp_types[] = {
|
static const TypeInfo fsl_imx8mp_types[] = {
|
||||||
{
|
{
|
||||||
.name = TYPE_FSL_IMX8MP,
|
.name = TYPE_FSL_IMX8MP,
|
||||||
.parent = TYPE_DEVICE,
|
.parent = TYPE_SYS_BUS_DEVICE,
|
||||||
.instance_size = sizeof(FslImx8mpState),
|
.instance_size = sizeof(FslImx8mpState),
|
||||||
.instance_init = fsl_imx8mp_init,
|
.instance_init = fsl_imx8mp_init,
|
||||||
.class_init = fsl_imx8mp_class_init,
|
.class_init = fsl_imx8mp_class_init,
|
||||||
|
|
|
@ -37,7 +37,7 @@ static void imx8mp_evk_init(MachineState *machine)
|
||||||
s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP));
|
s = FSL_IMX8MP(object_new(TYPE_FSL_IMX8MP));
|
||||||
object_property_add_child(OBJECT(machine), "soc", OBJECT(s));
|
object_property_add_child(OBJECT(machine), "soc", OBJECT(s));
|
||||||
object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
|
object_property_set_uint(OBJECT(s), "fec1-phy-num", 1, &error_fatal);
|
||||||
qdev_realize_and_unref(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,
|
memory_region_add_subregion(get_system_memory(), FSL_IMX8MP_RAM_START,
|
||||||
machine->ram);
|
machine->ram);
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
#include "hw/timer/imx_gpt.h"
|
#include "hw/timer/imx_gpt.h"
|
||||||
#include "hw/usb/hcd-dwc3.h"
|
#include "hw/usb/hcd-dwc3.h"
|
||||||
#include "hw/watchdog/wdt_imx2.h"
|
#include "hw/watchdog/wdt_imx2.h"
|
||||||
|
#include "hw/sysbus.h"
|
||||||
#include "qom/object.h"
|
#include "qom/object.h"
|
||||||
#include "qemu/units.h"
|
#include "qemu/units.h"
|
||||||
|
|
||||||
|
@ -49,7 +50,7 @@ enum FslImx8mpConfiguration {
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FslImx8mpState {
|
struct FslImx8mpState {
|
||||||
DeviceState parent_obj;
|
SysBusDevice parent_obj;
|
||||||
|
|
||||||
ARMCPU cpu[FSL_IMX8MP_NUM_CPUS];
|
ARMCPU cpu[FSL_IMX8MP_NUM_CPUS];
|
||||||
GICv3State gic;
|
GICv3State gic;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue