Signed-off-by: Markus Armbruster <arm...@redhat.com> --- hw/core/qdev.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 9e5538aeae..936ef3988a 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -98,6 +98,23 @@ void qdev_set_parent_bus(DeviceState *dev, BusState *bus) { BusState *old_parent_bus = dev->parent_bus; + DeviceClass *dc = DEVICE_GET_CLASS(dev); + if (bus) { + BusClass *bc; + for (bc = BUS_GET_CLASS(bus); + bc; + bc = (BusClass *)object_class_dynamic_cast(object_class_get_parent(OBJECT_CLASS(bc)), TYPE_BUS)) { + if (!g_strcmp0(dc->bus_type, object_class_get_name(OBJECT_CLASS(bc)))) { + break; + } + } + if (!bc) { + printf("### bus mismatch %s is %s plugged into %s\n", + object_get_typename(OBJECT(dev)), dc->bus_type, + object_class_get_name(OBJECT_CLASS(BUS_GET_CLASS(bus)))); + } + } + if (old_parent_bus) { trace_qdev_update_parent_bus(dev, object_get_typename(OBJECT(dev)), old_parent_bus, object_get_typename(OBJECT(old_parent_bus)), -- 2.21.1