From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44708) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShePa-0000ce-Il for qemu-devel@nongnu.org; Thu, 21 Jun 2012 06:14:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ShePU-0001gE-4V for qemu-devel@nongnu.org; Thu, 21 Jun 2012 06:14:50 -0400 Received: from cantor2.suse.de ([195.135.220.15]:42977 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ShePT-0001fL-Dd for qemu-devel@nongnu.org; Thu, 21 Jun 2012 06:14:44 -0400 Message-ID: <4FE2F40B.7000207@suse.de> Date: Thu, 21 Jun 2012 12:14:35 +0200 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1340197164-9574-1-git-send-email-imammedo@redhat.com> <1340197164-9574-4-git-send-email-imammedo@redhat.com> <4FE1D1BB.6030709@suse.de> <4FE2ECB6.6090608@redhat.com> In-Reply-To: <4FE2ECB6.6090608@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 3/5] target-i386: call x86_cpu_realize() after APIC is initialized. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: peter.maydell@linaro.org, aliguori@us.ibm.com, ehabkost@redhat.com, jan.kiszka@siemens.com, mtosatti@redhat.com, qemu-devel@nongnu.org, mdroth@linux.vnet.ibm.com, blauwirbel@gmail.com, avi@redhat.com, pbonzini@redhat.com Am 21.06.2012 11:43, schrieb Igor Mammedov: > On 06/20/2012 03:35 PM, Andreas F=E4rber wrote: >> Am 20.06.2012 14:59, schrieb Igor Mammedov: >>> It's not correct to make CPU runnable (i.e. calling x86_cpu_realize()= ) >>> when not all properties are set (APIC in this case). >>> >>> Fix it by calling x86_cpu_realize() at board level after APIC is >>> initialized, right before cpu_reset(). >>> >>> Signed-off-by: Igor Mammedov >>> --- >>> hw/pc.c | 1 + >>> target-i386/helper.c | 2 -- >>> 2 files changed, 1 insertion(+), 2 deletions(-) >>> >>> diff --git a/hw/pc.c b/hw/pc.c >>> index 8368701..8a662cf 100644 >>> --- a/hw/pc.c >>> +++ b/hw/pc.c >>> @@ -948,6 +948,7 @@ static X86CPU *pc_new_cpu(const char *cpu_model) >>> env->apic_state =3D apic_init(env, env->cpuid_apic_id); >>> } >>> qemu_register_reset(pc_cpu_reset, cpu); >>> + x86_cpu_realize(OBJECT(cpu), NULL); >>> pc_cpu_reset(cpu); >>> return cpu; >>> } >>> diff --git a/target-i386/helper.c b/target-i386/helper.c >>> index c52ec13..b38ea7f 100644 >>> --- a/target-i386/helper.c >>> +++ b/target-i386/helper.c >>> @@ -1161,8 +1161,6 @@ X86CPU *cpu_x86_init(const char *cpu_model) >>> return NULL; >>> } >>> >>> - x86_cpu_realize(OBJECT(cpu), NULL); >>> - >>> return cpu; >>> } >>> >> >> This will require changes in linux-user and possibly bsd-user. Having = a > Why it would require changes in linux-user? So far x86_cpu_realize() do= es > nothing useful in linux-user, compiled and tested. It should be harmle= ss > for linux-user not to execute it. Hm, I'd need to recheck... > But I haven't compiled/tested bsd-user, do I need BSD for this? Yes, you do. But if it's not needed for linux-user then it shouldn't be needed for bsd-user either. >> cpu_realize() would probably help with avoiding #ifdef'ery. >> Unfortunately deriving CPUState from DeviceState proves a bit difficul= t >> in the meantime (it worked at one point, now there's lots of circular >> header dependencies), and realize support for Object got stopped. > I'm in process of untangling this header mayhem (at least to a point > that allows compilation complete when CPU is derived from Device) So am I... A few weeks ago my qom-cpu-dev branch on GitHub used to compile, now something has changed and I needed to take cpu.h out of qemu-common.h and move lots of, e.g., ARM devices into libhw to avoid cpu.h dependencies and add cpu.h includes elsewhere. Would be good to coordinate that, are you on IRC later today? Andreas --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg