|
| From: | Markus Armbruster |
| Subject: | Re: [Qemu-ppc] [Qemu-devel] [PATCH v2 3/4] versatile: remove cannot_destroy_with_object_finalize_yet |
| Date: | Tue, 18 Apr 2017 15:25:55 +0200 |
| User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Laurent Vivier <address@hidden> 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 <address@hidden>
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 <address@hidden>
| [Prev in Thread] | Current Thread | [Next in Thread] |