summaryrefslogtreecommitdiff
path: root/hw/s390x
diff options
context:
space:
mode:
authorDavid Hildenbrand <dahi@linux.vnet.ibm.com>2015-11-23 13:03:08 +0100
committerCornelia Huck <cornelia.huck@de.ibm.com>2016-01-27 15:34:47 +0100
commit8b638c43afa8d756d803a0ef6ef42213d612984f (patch)
tree324fd5fee3f12a7312cbd14237e5e48d9e583d83 /hw/s390x
parent52c6cfb74908060c3d209fa4c9b2a62c3ff76ff2 (diff)
downloadqemu-8b638c43afa8d756d803a0ef6ef42213d612984f.tar.gz
qemu-8b638c43afa8d756d803a0ef6ef42213d612984f.tar.bz2
qemu-8b638c43afa8d756d803a0ef6ef42213d612984f.zip
s390x/sclp: add device to the sysbus in sclp_realize
The init of a device should have no side effects. Therefore move registering of the event facility into the realize function, so multiple instances of the SCLP device can be created e.g. for introspection. Add some more detail as to why we have to add it to the sysbus at all. Suggested-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'hw/s390x')
-rw-r--r--hw/s390x/sclp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/hw/s390x/sclp.c b/hw/s390x/sclp.c
index 74f2b40154..23dee88dd9 100644
--- a/hw/s390x/sclp.c
+++ b/hw/s390x/sclp.c
@@ -465,6 +465,12 @@ static void sclp_realize(DeviceState *dev, Error **errp)
if (err) {
goto out;
}
+ /*
+ * qdev_device_add searches the sysbus for TYPE_SCLP_EVENTS_BUS. As long
+ * as we can't find a fitting bus via the qom tree, we have to add the
+ * event facility to the sysbus, so e.g. a sclp console can be created.
+ */
+ qdev_set_parent_bus(DEVICE(sclp->event_facility), sysbus_get_default());
ret = s390_set_memory_limit(machine->maxram_size, &hw_limit);
if (ret == -E2BIG) {
@@ -533,8 +539,6 @@ static void sclp_init(Object *obj)
new = object_new(TYPE_SCLP_EVENT_FACILITY);
object_property_add_child(obj, TYPE_SCLP_EVENT_FACILITY, new, NULL);
- /* qdev_device_add searches the sysbus for TYPE_SCLP_EVENTS_BUS */
- qdev_set_parent_bus(DEVICE(new), sysbus_get_default());
object_unref(new);
sclp->event_facility = EVENT_FACILITY(new);