From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46589) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UjRkU-0007FC-5A for qemu-devel@nongnu.org; Mon, 03 Jun 2013 06:12:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UjRkS-0007yF-RR for qemu-devel@nongnu.org; Mon, 03 Jun 2013 06:12:21 -0400 Received: from mail-wi0-x235.google.com ([2a00:1450:400c:c05::235]:50284) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UjRkS-0007y9-L3 for qemu-devel@nongnu.org; Mon, 03 Jun 2013 06:12:20 -0400 Received: by mail-wi0-f181.google.com with SMTP id hi5so2474963wib.14 for ; Mon, 03 Jun 2013 03:12:20 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <51AC6BF6.9080908@redhat.com> Date: Mon, 03 Jun 2013 12:12:06 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1370187812-13191-1-git-send-email-pbonzini@redhat.com> <51AC3C09.2010708@redhat.com> <51AC647B.6090007@redhat.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 00/15] Memory/IOMMU patches part 4: region ownership List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: jan.kiszka@siemens.com, qemu-devel@nongnu.org, Liu Ping Fan Il 03/06/2013 11:58, Peter Maydell ha scritto: > On 3 June 2013 10:40, Paolo Bonzini wrote: >> Il 03/06/2013 11:22, Peter Maydell ha scritto: >>> arm11mpcore.c does this: >>> sysbus_init_mmio(dev, sysbus_mmio_get_region(s->priv, 0)); >>> which I suspect will assert with your patches. >> >> Thanks for the pointer. All other occurrences of >> sys_bus_mmio_get_region are either in non-qdevified OMAP code, or they >> do what I said in my patch. >> >> I'll fix a11mpcore to use an alias. > > Why? There is no need to -- this should be a perfectly > reasonable use of MemoryRegion*s. If your reference counting > code can't deal with it you need to fix the reference > counting code. It can: 1) I could set the owner to NULL before calling the sysbus_init_mmio; 2) I could add a variant of sysbus_init_mmio that doesn't set the owner; 3) I could skip setting the owner for sysbus altogether, since it is only strictly required for unpluggable devices. What I cannot do is having two owners, where each ref/unref pair will ref/unref both objects. I think you agree that it is overkill. However, I think there is worth in preserving the chain through either containment or aliasing. From the nesting point of view, realview_mpcore is exposing the region. From the implementor point of view, arm_gic is implementing the region (and arm_gic is the one that would be ref/unref'd at execution time). In either case, arm11mpcore_priv is not what you want to see. Its presence is just an implementation detail of realview_mpcore. Paolo