On Fri, 2016-01-01 at 23:37 +0100, Paolo Bonzini wrote: > > On 31/12/2015 19:13, Ilya Lesokhin wrote: > > I was able to overcome this issue by calling object_unparent on my > > device but I’m not sure that the correct way of fixing it. > > Yes, it's definitely the right way to fix it.
Sorry for the late follow-up on this one, but I had to find some more time to spend with the code (and with valgrind too) to understand better/verify what was going on in the qdev/qom layers. In the SR/IOV patch the object is created by pci_create. Since there is no corresponding pci_delete, I assume this means that the correct way to clean up from pci_create is simply a call to object_unparent() as you indicate, and this is what is missing from the patch set. So the full setup/teardown sequence per VF then becomes: pci_create(...) <realize> <unrealize> object_unparent(...) Thanks, Knut