qemu/hw/arm
Thomas Huth f640a5914f hw/arm/fsl-imx: Fix introspection problem with fsl-imx6 and fsl-imx7
QEMU currently exits unexpectedly when trying to introspect the fsl-imx6
and fsl-imx7 devices on systems with many SMP CPUs:

$ echo "{'execute':'qmp_capabilities'}"\
       "{'execute':'device-list-properties',"\
       " 'arguments':{'typename':'fsl,imx6'}}" \
       | arm-softmmu/qemu-system-arm -M virt,accel=qtest -qmp stdio -smp 8
{"QMP": {"version": {"qemu": {"micro": 91, "minor": 11, "major": 2},
 "package": "build-all"}, "capabilities": []}}
{"return": {}}
fsl,imx6: Only 4 CPUs are supported (8 requested)

And:

$ echo "{'execute':'qmp_capabilities'}"\
       "{'execute':'device-list-properties',"\
       " 'arguments':{'typename':'fsl,imx7'}}" \
       | arm-softmmu/qemu-system-arm -M raspi2,accel=qtest -qmp stdio
{"QMP": {"version": {"qemu": {"micro": 91, "minor": 11, "major": 2},
 "package": "build-all"}, "capabilities": []}}
{"return": {}}
fsl,imx7: Only 2 CPUs are supported (4 requested)

This happens because these devices are doing an exit() from their
instance_init function - which should never be done since instance_init
can be called at any time for device introspection! Fix it by moving
the deadly check into the realize() function instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-id: 1522908551-14885-1-git-send-email-thuth@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2018-04-10 13:02:25 +01:00
..
allwinner-a10.c hw/arm/allwinner-a10: Do not use nd_table in instance_init function 2018-04-10 13:02:25 +01:00
armv7m.c armv7m: Forward init-svtor property to CPU object 2018-03-02 11:03:45 +00:00
aspeed_soc.c hw/arm/aspeed: simplify using the 'unimplemented device' for aspeed_soc.io 2018-02-15 18:29:36 +00:00
aspeed.c hw/arm/aspeed: Unlock SCU when running kernel 2017-11-20 13:47:49 +00:00
bcm2835_peripherals.c hw/arm/bcm2835_peripherals: change maximum block size to 1kB 2018-02-13 16:15:08 +01:00
bcm2836.c hw/arm/bcm2836: Use the Cortex-A7 instead of Cortex-A15 2018-03-23 18:26:45 +00:00
boot.c hw/arm: Allow manually specified /psci node 2018-04-10 13:02:24 +01:00
collie.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
cubieboard.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
digic_boards.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
digic.c hw/arm/digic: Mark device with user_creatable = false 2017-09-04 17:13:53 +01:00
exynos4_boards.c hw: add .min_cpus and .default_cpus fields to machine_class 2017-11-13 13:55:27 +00:00
exynos4210.c hw/arm/exynos4210: add a comment about a very similar SDHCI (Spec. v2) 2018-02-13 16:15:08 +01:00
fsl-imx6.c hw/arm/fsl-imx: Fix introspection problem with fsl-imx6 and fsl-imx7 2018-04-10 13:02:25 +01:00
fsl-imx7.c hw/arm/fsl-imx: Fix introspection problem with fsl-imx6 and fsl-imx7 2018-04-10 13:02:25 +01:00
fsl-imx25.c hw/arm: Mark the "fsl,imx25" device with user_creatable = false 2017-11-07 13:03:51 +00:00
fsl-imx31.c hw/arm: Mark the "fsl,imx31" device with user_creatable = false 2017-11-07 13:03:51 +00:00
gumstix.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
highbank.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
imx25_pdk.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
integratorcp.c hw/arm/integratorcp: Don't do things that could be fatal in the instance_init 2018-04-10 13:02:24 +01:00
iotkit.c hw/arm/iotkit: Model Arm IOT Kit 2018-03-02 11:03:45 +00:00
kzm.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
mainstone.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
Makefile.objs hw/arm: Use more CONFIG switches for the object files 2018-03-09 17:09:44 +00:00
mcimx7d-sabre.c Implement support for i.MX7 Sabre board 2018-03-09 17:09:43 +00:00
mps2-tz.c mps2-an505: New board model: MPS2 with AN505 Cortex-M33 FPGA image 2018-03-02 11:03:45 +00:00
mps2.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
msf2-soc.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
msf2-som.c msf2: Add Emcraft's Smartfusion2 SOM kit 2017-09-21 16:36:56 +01:00
musicpal.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
netduino2.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
nseries.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
omap1.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
omap2.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
omap_sx1.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
palm.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx_gpio.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx_pic.c Replace all occurances of __FUNCTION__ with __func__ 2018-01-22 09:46:18 +01:00
pxa2xx.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00
raspi.c hw/arm/bcm2836: Use the Cortex-A7 instead of Cortex-A15 2018-03-23 18:26:45 +00:00
realview.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
sabrelite.c hw/arm: Set ignore_memory_transaction_failures for most ARM boards 2017-09-07 13:54:54 +01:00
spitz.c hw/audio/wm8750: move WM8750 declarations from i2c/i2c.h to audio/wm8750.h 2018-02-02 08:19:25 +01:00
stellaris.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
stm32f205_soc.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
strongarm.c migration: pre_save return int 2017-09-27 11:35:59 +01:00
strongarm.h Move target-* CPU file into a target/ folder 2016-12-20 21:52:12 +01:00
sysbus-fdt.c sysbus: Remove ignored return value of FindSysbusDeviceFunc 2016-09-27 17:03:34 -03:00
tosa.c hw: Do not include "sysemu/block-backend.h" if it is not necessary 2018-03-12 16:12:46 +01:00
trace-events docs: fix broken paths to docs/devel/tracing.txt 2017-07-31 13:12:53 +03:00
versatilepb.c arm: drop intermediate cpu_model -> cpu type parsing and use cpu type directly 2017-09-19 09:09:32 -03:00
vexpress.c arm/vexpress: Add proper display connector emulation 2018-03-01 11:13:36 +00:00
virt-acpi-build.c virt_arm: acpi: reuse common build_fadt() 2018-03-13 23:09:50 +02:00
virt.c mach-virt: Set VM's SMBIOS system version to mc->name 2018-03-23 18:26:46 +00:00
xilinx_zynq.c hw/arm/xilinx_zynq: fix the capabilities register to match the datasheet 2018-02-13 16:15:08 +01:00
xlnx-zcu102.c xlnx-zcu102: Add support for the ZynqMP QSPI 2017-12-13 17:59:22 +00:00
xlnx-zynqmp.c hw/arm: Set the core count for Xilinx's ZynqMP 2018-03-09 17:09:43 +00:00
z2.c hw/arm: Replace fprintf(stderr, "*\n" with error_report() 2018-02-06 18:26:42 +01:00