qdev: Assert onboard devices all get realized properly
This would have caught some of the bugs I just fixed. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20200609122339.937862-25-armbru@redhat.com>
This commit is contained in:
parent
007d1dbf72
commit
dfe8c79c44
|
@ -427,6 +427,19 @@ void qdev_init_nofail(DeviceState *dev)
|
||||||
object_unref(OBJECT(dev));
|
object_unref(OBJECT(dev));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int qdev_assert_realized_properly(Object *obj, void *opaque)
|
||||||
|
{
|
||||||
|
DeviceState *dev = DEVICE(object_dynamic_cast(obj, TYPE_DEVICE));
|
||||||
|
DeviceClass *dc;
|
||||||
|
|
||||||
|
if (dev) {
|
||||||
|
dc = DEVICE_GET_CLASS(dev);
|
||||||
|
assert(dev->realized);
|
||||||
|
assert(dev->parent_bus || !dc->bus_type);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void qdev_machine_creation_done(void)
|
void qdev_machine_creation_done(void)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
@ -434,6 +447,9 @@ void qdev_machine_creation_done(void)
|
||||||
* only create hotpluggable devices
|
* only create hotpluggable devices
|
||||||
*/
|
*/
|
||||||
qdev_hotplug = true;
|
qdev_hotplug = true;
|
||||||
|
|
||||||
|
object_child_foreach_recursive(object_get_root(),
|
||||||
|
qdev_assert_realized_properly, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool qdev_machine_modified(void)
|
bool qdev_machine_modified(void)
|
||||||
|
|
Loading…
Reference in a new issue