diff options
author | Peter Maydell | 2014-07-01 12:55:48 +0200 |
---|---|---|
committer | Peter Maydell | 2014-07-01 12:55:49 +0200 |
commit | c26f3a0a6dfe5ef2973ddfab03b1ceff641a7ebe (patch) | |
tree | 286413832e3d84d7d1cf3fd4d1093f2c48e87f7d /hw/core | |
parent | Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-2.1' into... (diff) | |
parent | qdev: correctly send DEVICE_DELETED for recursively-deleted devices (diff) | |
download | qemu-c26f3a0a6dfe5ef2973ddfab03b1ceff641a7ebe.tar.gz qemu-c26f3a0a6dfe5ef2973ddfab03b1ceff641a7ebe.tar.xz qemu-c26f3a0a6dfe5ef2973ddfab03b1ceff641a7ebe.zip |
Merge remote-tracking branch 'remotes/bonzini/memory' into staging
* remotes/bonzini/memory:
qdev: correctly send DEVICE_DELETED for recursively-deleted devices
memory: do not give a name to the internal exec.c regions
memory: MemoryRegion: Add size property
memory: MemoryRegion: Add may-overlap and priority props
memory: MemoryRegion: Add container and addr props
memory: MemoryRegion: replace owner field with QOM parent
memory: MemoryRegion: QOMify
memory: MemoryRegion: use /machine as default owner
libqtest: escape strings in QMP commands, fix leak
qom: object: Ignore refs/unrefs of NULL
qom: object: remove parent pointer when unparenting
mc146818rtc: add "rtc-time" link to "/machine/rtc"
qom: allow creating an alias of a child<> property
qom: add a generic mechanism to resolve paths
qom: add object_property_add_alias()
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/core')
-rw-r--r-- | hw/core/qdev.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 371b42745e..a2feb5abfe 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -848,6 +848,7 @@ static void device_set_realized(Object *obj, bool value, Error **errp) if (dev->hotplugged && local_err == NULL) { device_reset(dev); } + dev->pending_deleted_event = false; } else if (!value && dev->realized) { QLIST_FOREACH(bus, &dev->child_bus, sibling) { object_property_set_bool(OBJECT(bus), false, "realized", @@ -862,6 +863,7 @@ static void device_set_realized(Object *obj, bool value, Error **errp) if (dc->unrealize && local_err == NULL) { dc->unrealize(dev, &local_err); } + dev->pending_deleted_event = true; } if (local_err != NULL) { @@ -972,7 +974,6 @@ static void device_unparent(Object *obj) { DeviceState *dev = DEVICE(obj); BusState *bus; - bool have_realized = dev->realized; if (dev->realized) { object_property_set_bool(obj, false, "realized", NULL); @@ -988,7 +989,7 @@ static void device_unparent(Object *obj) } /* Only send event if the device had been completely realized */ - if (have_realized) { + if (dev->pending_deleted_event) { gchar *path = object_get_canonical_path(OBJECT(dev)); qapi_event_send_device_deleted(!!dev->id, dev->id, path, &error_abort); |