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));
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
/*
|
||||
@ -434,6 +447,9 @@ void qdev_machine_creation_done(void)
|
||||
* only create hotpluggable devices
|
||||
*/
|
||||
qdev_hotplug = true;
|
||||
|
||||
object_child_foreach_recursive(object_get_root(),
|
||||
qdev_assert_realized_properly, NULL);
|
||||
}
|
||||
|
||||
bool qdev_machine_modified(void)
|
||||
|
Loading…
Reference in New Issue
Block a user