On 07/07/20 05:33, Philippe Mathieu-Daudé wrote: > Since commit 510ef98dca5, qdev_realize() aborts if bus-less device > is realized on a bus. While commits 514db7710b..007d1dbf72 took > care of converting all mainstream uses, QEMU forks weren't. These > forks are usually maintained by hobbyist with interest in following > mainstream development, but with limited time, so usually rebase > from time to time. To avoid them to spend time on debugging and > reading git-log history, display a kind hint about what is wrong. > > Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> > --- > Since v2: > - scratch __func__ (armbru) > - reword to justify this is not an impossible case (armbru) > --- > 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..a16f1270f1 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, "Unexpected bus '%s' for bus-less device '%s'", > + DEVICE_GET_CLASS(dev)->bus_type, > + object_get_typename(OBJECT(dev))); > + return false; > } > > object_property_set_bool(OBJECT(dev), true, "realized", &err); >
Queued, thanks. Paolo