Commit 8b638c43 authored by David Hildenbrand's avatar David Hildenbrand Committed by Cornelia Huck
Browse files

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: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarDavid Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: default avatarCornelia Huck <cornelia.huck@de.ibm.com>
parent 52c6cfb7
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -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);