From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56690) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aBHSZ-0007Ln-8c for qemu-devel@nongnu.org; Tue, 22 Dec 2015 02:34:16 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aBHSS-0006PB-6V for qemu-devel@nongnu.org; Tue, 22 Dec 2015 02:34:15 -0500 Received: from mail-wm0-x229.google.com ([2a00:1450:400c:c09::229]:34449) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aBHSR-0006P6-Vo for qemu-devel@nongnu.org; Tue, 22 Dec 2015 02:34:08 -0500 Received: by mail-wm0-x229.google.com with SMTP id l126so97375269wml.1 for ; Mon, 21 Dec 2015 23:34:07 -0800 (PST) References: <1450436632-23980-1-git-send-email-caoj.fnst@cn.fujitsu.com> <1450436632-23980-4-git-send-email-caoj.fnst@cn.fujitsu.com> <56744A11.3030405@redhat.com> <56769336.9050104@cn.fujitsu.com> <56781F82.3060603@redhat.com> <5678CA5D.8070002@cn.fujitsu.com> From: Marcel Apfelbaum Message-ID: <5678FCEC.10500@gmail.com> Date: Tue, 22 Dec 2015 09:34:04 +0200 MIME-Version: 1.0 In-Reply-To: <5678CA5D.8070002@cn.fujitsu.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 3/5] PXB: convert to realize() Reply-To: marcel@redhat.com List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Cao jin , Paolo Bonzini , qemu-devel@nongnu.org Cc: Marcel Apfelbaum , mst@redhat.com On 12/22/2015 05:58 AM, Cao jin wrote: > > > On 12/21/2015 11:49 PM, Paolo Bonzini wrote: >> >> >> On 20/12/2015 12:38, Cao jin wrote: >>>>> >>>>> + object_unref(OBJECT(ds)); >>>>> + object_unref(OBJECT(bds)); >>>>> + object_unref(OBJECT(bus)); >>>> >>>> I think these should be object_unparent, not unref. >>>> >>> >>> But, it seems these 3 objects isn`t added as a child-property via >>> object_property_add_child() during creation, so OBJECT(ds)->parent(so >>> does the other 2) will be NULL, and so object_unparent will do nothing? >> >> qdev_init_nofail adds them (qdev_init_nofail -> object_property_set_bool >> -> device_set_realized -> object_property_add_child). >> >> If you haven't reached qdev_init_nofail, you should indeed unref ds and >> bds instead. However, the bus should be unparented because pci_bus_new >> makes it a child of ds (pci_bus_new -> qbus_create -> qbus_realize -> >> object_property_add_child). >> > > Yes...that`s true. > > and @Marcel, I think maybe this is final decision? I say add a debug trace line before pxb_register_bus (or use the debugger) and check ds->parent, bds->parent and bus->parent. Run the qemu with -device pxb,bus=80,... and for every one that its parent is not null add unparent. :) Thanks, Marcel > >> Paolo >> >> >> . >> >