On 22/06/2020 21:33, Jason Andryuk wrote: > Hi, > > Running qemu devel for a Xen VM is failing an assert after the recent > "qdev: Rework how we plug into the parent bus" sysbus changes. > > qemu-system-i386: hw/core/qdev.c:102: qdev_set_parent_bus: Assertion > `dc->bus_type && object_dynamic_cast(OBJECT(bus), dc->bus_type)' > failed. > > dc->bus_type is "xen-sysbus" and it's the > `object_dynamic_cast(OBJECT(bus), dc->bus_type)` portion that fails > the assert. bus seems to be "main-system-bus", I think: > (gdb) p *bus > $3 = {obj = {class = 0x55555636d780, free = 0x7ffff7c40db0 <g_free>, > properties = 0x5555563f7180, ref = 3, parent = 0x5555563fe980}, parent > = 0x0, name = 0x5555563fec60 "main-system-bus", ... > > The call comes from hw/xen/xen-legacy-backend.c:706 > sysbus_realize_and_unref(SYS_BUS_DEVICE(xen_sysdev), &error_fatal); > > Any pointers on what needs to be fixed?
Hi Jason, My understanding is that the assert() is telling you that you're plugging a TYPE_SYS_BUS_DEVICE into a bus that isn't derived from TYPE_SYSTEM_BUS. A quick look at the file in question suggests that you could try changing the parent class of TYPE_XENSYSBUS from TYPE_BUS to TYPE_SYSTEM_BUS to see if that helps? ATB, Mark.