hw/intc/exynos4210_gic: Turn instance_init into realize function
commit1ddc9b98c3cb89fe23a55ba924000fd645253e87
authorThomas Huth <thuth@redhat.com>
Mon, 23 Jul 2018 14:21:27 +0000 (23 15:21 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 23 Jul 2018 14:21:27 +0000 (23 15:21 +0100)
treee3db5b21f07e6ddf1063b9945bde4e94195e12c0
parent07bc425ea32dc5d78790c7bd23bffb77fbc727e0
hw/intc/exynos4210_gic: Turn instance_init into realize function

The instance_init function of the "exynos4210.gic" device creates a
new "arm_gic" device and immediately realizes it with qdev_init_nofail().
This will leave a lot of object in the QOM tree during introspection of
the "exynos4210.gic" device, e.g. reproducible by starting QEMU like this:

qemu-system-aarch64 -M none -nodefaults -nographic -monitor stdio

And then by running "info qom-tree" at the HMP monitor, followed by
"device_add exynos4210.gic,help" and finally checking "info qom-tree"
again.

Also note that qdev_init_nofail() can exit QEMU in case of errors - and
this must never happen during an instance_init function, otherwise QEMU
could terminate unexpectedly during introspection of a device.

Since most of the code that follows the qdev_init_nofail() depends on
the realized "gicbusdev", the easiest solution to the problem is to
turn the whole instance_init function into a realize function instead.

Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-id: 1532337784-334-1-git-send-email-thuth@redhat.com
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/intc/exynos4210_gic.c