hw/arm/integratorcp: Don't do things that could be fatal in the instance_init
commit8720daad476fd9688b0c7e2453624c8a225c9c72
authorThomas Huth <thuth@redhat.com>
Tue, 10 Apr 2018 12:02:24 +0000 (10 13:02 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Tue, 10 Apr 2018 12:02:24 +0000 (10 13:02 +0100)
tree7ce494132b4c366d6d9999acfca7abc5ef7a547d
parentc39770cd63776516c4e244702e859d84913ba9ed
hw/arm/integratorcp: Don't do things that could be fatal in the instance_init

An instance_init function must not fail - and might be called multiple times,
e.g. during device introspection with the 'device-list-properties' QMP
command. Since the integratorcm device ignores this rule, QEMU currently
aborts in this case (though it really should not):

echo "{'execute':'qmp_capabilities'}"\
     "{'execute':'device-list-properties',"\
     "'arguments':{'typename':'integrator_core'}}" \
     | arm-softmmu/qemu-system-arm -M integratorcp,accel=qtest -qmp stdio
{"QMP": {"version": {"qemu": {"micro": 91, "minor": 11, "major": 2},
 "package": "build-all"}, "capabilities": []}}
{"return": {}}
RAMBlock "integrator.flash" already registered, abort!
Aborted (core dumped)

Move the problematic code to the realize() function instead to fix this
problem.

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-id: 1522906473-11252-1-git-send-email-thuth@redhat.com
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
hw/arm/integratorcp.c