From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40302) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxF7u-0004pU-4j for qemu-devel@nongnu.org; Tue, 26 May 2015 09:42:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YxF7q-0007lW-V2 for qemu-devel@nongnu.org; Tue, 26 May 2015 09:42:38 -0400 Received: from mail-pa0-f52.google.com ([209.85.220.52]:33754) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxF7q-0007l6-Pp for qemu-devel@nongnu.org; Tue, 26 May 2015 09:42:34 -0400 Received: by padbw4 with SMTP id bw4so93202782pad.0 for ; Tue, 26 May 2015 06:42:33 -0700 (PDT) Message-ID: <55647843.4040609@ozlabs.ru> Date: Tue, 26 May 2015 23:42:27 +1000 From: Alexey Kardashevskiy MIME-Version: 1.0 References: <1429964684-23872-1-git-send-email-aik@ozlabs.ru> <1429964684-23872-7-git-send-email-aik@ozlabs.ru> <55633A54.8080807@ozlabs.ru> <20150526024628.GA30620@voom.redhat.com> <5564359A.2070009@redhat.com> <556447BB.9000802@ozlabs.ru> <55644819.3000003@redhat.com> <55646803.8040007@ozlabs.ru> <55646C18.4000303@redhat.com> <5564750C.8000100@ozlabs.ru> <556475BD.50401@redhat.com> In-Reply-To: <556475BD.50401@redhat.com> Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH qemu v7 06/14] spapr_iommu: Introduce "enabled" state for TCE table List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini , David Gibson Cc: Michael Roth , Alex Williamson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, Alexander Graf On 05/26/2015 11:31 PM, Paolo Bonzini wrote: > > > On 26/05/2015 15:28, Alexey Kardashevskiy wrote: >> >> My initial concern was if I can or cannot do: >> >> memory_region_init_iommu + memory_region_add_subregion >> and >> memory_region_del_subregion + object_unref >> >> outside of init/realize/unrealize/finalize. >> >> You said I cannot do unparenting but as I am not doing this (and I just >> do unref()) - I am fine. That's what I meant. > > Well, if you do the above you have two different bugs: > > 1) you leak the original child property > > 2) you initialize the second region on top of the first, so you have two > regions pointing to the same memory The next patch of this patchset changes: spapr_tce_table_do_enable() memory_region_init_iommu(&iommu) memory_region_add_subregion(&root, &iommu) spapr_tce_table_disable() memory_region_del_subregion(&root, &iommu) object_unref(&iommu) These spapr_tce_xxx are called by request from the guest. &root is a container and exists as long as sPAPRTCETable exists. Where do I get a leaking child property here? > This is even worse than unparenting :) and would have been wrong even > without the RCU changes. I believe you :) But do not understand :) -- Alexey