From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42021) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SolYs-0007wP-UE for qemu-devel@nongnu.org; Tue, 10 Jul 2012 21:17:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SolYr-0002qq-4p for qemu-devel@nongnu.org; Tue, 10 Jul 2012 21:17:50 -0400 Received: from mail-we0-f173.google.com ([74.125.82.173]:41547) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SolYq-0002lZ-S5 for qemu-devel@nongnu.org; Tue, 10 Jul 2012 21:17:49 -0400 Received: by mail-we0-f173.google.com with SMTP id z53so423646wey.4 for ; Tue, 10 Jul 2012 18:17:48 -0700 (PDT) MIME-Version: 1.0 In-Reply-To: <4FFBFFF5.6010809@suse.de> References: <1341900967-4344-1-git-send-email-qemulist@gmail.com> <1341900967-4344-5-git-send-email-qemulist@gmail.com> <4FFBEAD7.6060705@redhat.com> <4FFBFFF5.6010809@suse.de> From: liu ping fan Date: Wed, 11 Jul 2012 09:17:27 +0800 Message-ID: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 4/5] qom-cpu: during cpu reset, it will reset its child List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-1?Q?Andreas_F=E4rber?= Cc: Blue Swirl , Paolo Bonzini , qemu-devel@nongnu.org, Anthony Liguori , Jan Kiszka On Tue, Jul 10, 2012 at 6:12 PM, Andreas F=E4rber wrote: > Am 10.07.2012 10:41, schrieb Paolo Bonzini: >> Il 10/07/2012 08:16, Liu Ping Fan ha scritto: >>> This will give the embeded logic module, such as apic has the >>> opportunity to reset. >>> >>> Signed-off-by: Liu Ping Fan >>> --- >>> qom/cpu.c | 16 ++++++++++++++++ >>> 1 files changed, 16 insertions(+), 0 deletions(-) >>> >>> diff --git a/qom/cpu.c b/qom/cpu.c >>> index 5b36046..6aea8e6 100644 >>> --- a/qom/cpu.c >>> +++ b/qom/cpu.c >>> @@ -20,10 +20,26 @@ >>> >>> #include "qemu/cpu.h" >>> #include "qemu-common.h" >>> +#include "hw/qdev.h" >>> + >>> +static int cpu_reset_kid(Object *child, void *opaque) >>> +{ >>> + if (object_is_type_str(child, TYPE_DEVICE)) { >>> + device_reset(DEVICE(child)); >>> + } else if (object_is_type_str(child, TYPE_BUS)) { >>> + bus_reset(BUS(child)); >>> + } else { >>> + printf("cpu's child must be DEVICE or BUS"); >>> + abort(); >>> + } >>> + return 0; >>> +} >>> >>> void cpu_reset(CPUState *cpu) >>> { >>> CPUClass *klass =3D CPU_GET_CLASS(cpu); >>> + Object *obj =3D OBJECT(cpu); >>> + object_child_foreach(obj, cpu_reset_kid, NULL); >> >> Ok, now I see what you want to do. Next time, please add meaningful >> commit messages to all patches in the series, even those that only add >> infrastructure. >> >> It really looks like time is ripe to make CPUs children of Device, so >> you can just use qdev_reset_all to reset the CPU. > > While we agree on that goal, the way there has proven controversial, > please review and comment on the two approaches around. > > One thing we definitely need to do is to split up qdev.h. > Could you remember the main topic about these? I miss these discussion. Thanks, pingfan > Andreas > > -- > SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany > GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg > >