From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47633) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1YxAjt-0008W5-09 for qemu-devel@nongnu.org; Tue, 26 May 2015 05:01:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1YxAjl-0007iS-Gu for qemu-devel@nongnu.org; Tue, 26 May 2015 05:01:32 -0400 Message-ID: <55643662.9030005@suse.de> Date: Tue, 26 May 2015 11:01:22 +0200 From: Alexander Graf 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> In-Reply-To: <5564359A.2070009@redhat.com> Content-Type: text/plain; charset=windows-1252 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 , Alexey Kardashevskiy Cc: Alex Williamson , qemu-ppc@nongnu.org, qemu-devel@nongnu.org, Michael Roth On 26.05.15 10:58, Paolo Bonzini wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA256 > > > > On 26/05/2015 04:46, David Gibson wrote: >> On Tue, May 26, 2015 at 01:05:56AM +1000, Alexey Kardashevskiy >> wrote: >>> Hi Paolo, >>> >>> I have had a conversation with Mike and it turns out I am not >>> allowed to create/remove memory regions dynamically >>> (docs/memory.txt:101); otherwise "destroying regions during >>> reset causes assertion in RCU thread during PHB/IOMMU >>> unplug/unparent". Is it because patch just missing some >>> unref()/unparent() call or it is totally wrong and I have to >>> implement subregions (on a PCI bus address space) myself if I >>> want dynamic DMA windows? Thanks! > > I'm blind, can you explain the path where that happens? > >> So, the sentences after that one note an exception for alias and >> container regions. I think iommu regions should behave similarly >> - in a sense they're just a procedurally generated collection of >> alias regions. > > The difference is that containers and aliases are resolved at the time > the memory region tree is flattened, while IOMMU regions are resolved > at run time. Can you please go into more detail here? What part exactly gets resolved at run time? We don't flatten the memory regions for IOMMU accesses? But even if we walk the regions rather than the flattened tree, I don't see how we could end up with races when removing a device. Alex