Since commit 510ef98dca5, qdev_realize() aborts if bus-less device is realized on a bus. Be kind with the developer by displaying a hint about what is wrong.
Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- v2: Use errp (bonzini suggestion) Paolo, I was tempted to check errp is really &error_abort else it is an error! :P } else if (DEVICE_GET_CLASS(dev)->bus_type) { error_setg(errp, "%s: Unexpected bus '%s' for bus-less device '%s'", __func__, DEVICE_GET_CLASS(dev)->bus_type, object_get_typename(OBJECT(dev))); assert(errp == &error_abort); // <-------------- return false; } --- hw/core/qdev.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 2131c7f951..9d1530c39d 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -392,8 +392,11 @@ bool qdev_realize(DeviceState *dev, BusState *bus, Error **errp) if (bus) { qdev_set_parent_bus(dev, bus); - } else { - assert(!DEVICE_GET_CLASS(dev)->bus_type); + } else if (DEVICE_GET_CLASS(dev)->bus_type) { + error_setg(errp, "%s: Unexpected bus '%s' for bus-less device '%s'", + __func__, DEVICE_GET_CLASS(dev)->bus_type, + object_get_typename(OBJECT(dev))); + return false; } object_property_set_bool(OBJECT(dev), true, "realized", &err); -- 2.21.3