We are currently checking for an exact type match. Use QOM dynamic_cast to check for a compatible type instead.
Cc: Konrad Frederic <[email protected]> Signed-off-by: Anthony Liguori <[email protected]> --- hw/qdev-monitor.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/qdev-monitor.c b/hw/qdev-monitor.c index 479eecd..69f5ff2 100644 --- a/hw/qdev-monitor.c +++ b/hw/qdev-monitor.c @@ -431,11 +431,16 @@ DeviceState *qdev_device_add(QemuOpts *opts) /* find bus */ path = qemu_opt_get(opts, "bus"); if (path != NULL) { + ObjectClass *bus_class; + bus = qbus_find(path); if (!bus) { return NULL; } - if (strcmp(object_get_typename(OBJECT(bus)), k->bus_type) != 0) { + + bus_class = OBJECT_CLASS(BUS_GET_CLASS(bus)); + + if (!object_class_dynamic_cast(bus_class, k->bus_type)) { qerror_report(QERR_BAD_BUS_FOR_DEVICE, driver, object_get_typename(OBJECT(bus))); return NULL; -- 1.8.0
