Laurent Vivier <lviv...@redhat.com> writes: > cannot_destroy_with_object_finalize_yet was added by 4c315c2 > ("qdev: Protect device-list-properties against broken devices") > because "realview_pci" and "versatile_pci" were hanging > during "device-list-properties" cleanup (an infinite loop in > bus_unparent()). > > We have this problem because the child is not removed from > the list of the PCI bus child because it has no defined parent:
s/child/children/ > qdev_set_parent_bus() set the device parent_bus pointer to bus, and > adds the device in the bus children list, but doesn't update the > device parent pointer. > > To fix the problem, move all the involved parts to the realize function. > > Signed-off-by: Laurent Vivier <lviv...@redhat.com> The devices aren't unpluggable. There is no unrealize(). How work needs to be spread between init and realize isn't obvious to me in general. I can see this work done both in init and in realize. I figure the move is okay. Reviewed-by: Markus Armbruster <arm...@redhat.com>