From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55084) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VL6Vj-00073r-5I for qemu-devel@nongnu.org; Sun, 15 Sep 2013 03:12:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VL6Vc-0005tW-C8 for qemu-devel@nongnu.org; Sun, 15 Sep 2013 03:12:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55544) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VL6Vc-0005tL-4g for qemu-devel@nongnu.org; Sun, 15 Sep 2013 03:12:40 -0400 Date: Sun, 15 Sep 2013 10:14:45 +0300 From: "Michael S. Tsirkin" Message-ID: <20130915071445.GA29806@redhat.com> References: <1378728715.3072.14.camel@localhost.localdomain> <20130909122307.GB583@redhat.com> <1378730629.3072.32.camel@localhost.localdomain> <1378732073.3072.42.camel@localhost.localdomain> <20130910123917.GA1800@redhat.com> <20130910130229.GB2121@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: Subject: Re: [Qemu-devel] [PATCH RFC v2 2/2] hw/pci: handle unassigned pci addresses List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: Paolo Bonzini , Anthony Liguori , Jan Kiszka , QEMU Developers , Marcel Apfelbaum On Tue, Sep 10, 2013 at 02:12:56PM +0100, Peter Maydell wrote: > On 10 September 2013 14:02, Michael S. Tsirkin wrote: > > On Tue, Sep 10, 2013 at 01:50:47PM +0100, Peter Maydell wrote: > >> On 10 September 2013 13:39, Michael S. Tsirkin wrote: > >> > On Mon, Sep 09, 2013 at 02:16:41PM +0100, Peter Maydell wrote: > >> >> memory_region_init_alias(&pci_dev->bus_master_enable_region, > >> >> OBJECT(pci_dev), "bus master", > >> >> dma_as->root, 0, > >> >> memory_region_size(dma_as->root)); > >> >> > >> >> If instead of using this alias directly as the > >> >> bus_master_enable region you instead: > >> >> * create a container region > >> >> * create a 'background' region at negative priority > >> >> (ie one per device, and you can make the 'opaque' pointer > >> >> point to the device, not the bus) > >> >> * put the alias and the background region into the container > >> >> * use the container as the bus_master_enable region > >> > > >> > Interesting. There's one thing I don't understand here: > >> > as far as I can see bus_master_enable_region covers the > >> > whole 64 bit memory address space. > >> > > >> > It looks like it will always override the background > >> > region in the same container. What did I miss? > >> > >> That should be itself a container, > >> so assuming it doesn't > >> itself have any kind of background region the "holes" > >> inside it will still be present when we put it in > >> our new container. (Basically putting a container, > >> or an alias to one, inside a region is just saying > >> "put everything in that container inside this region > >> at the appropriate place"). > > > > Confused. "That" and "it" here refers to what exactly? > > Well, I was a bit confused by your talking about > the properties of "bus_master_enable_region" when my > suggestion is effectively that we change what that is. > So let's start again: > * create a container region > This is 64 bits wide, but totally empty > * create a 'background' region at negative priority > 64 bits wide > * put the alias and the background region into the container > The alias is 64 bits wide too, but it is an alias of > dma_as->root, which is a container with no background > region. > * use the container as the bus_master_enable region > -- all you see in this container is the background region > and anyhing that was in dma_as->root. This confused me even more. dma root covers whole 64 bit doesn't it? The doc says: "This is done with memory_region_add_subregion_overlap(), which allows the region to overlap any other region in the same container, and specifies a priority that allows the core to decide which of two regions at the same address are visible (highest wins)." So if I create an alias that also covers whole 64 bit and background in the same container, background with a negative priority, won't alias always win? > So when I said "that" and "it" I meant dma_as->root. > > Hope that is a little less opaque. > > -- PMM