From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:39005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SosUt-0002nX-Mn for qemu-devel@nongnu.org; Wed, 11 Jul 2012 04:42:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SosUm-0006zT-K6 for qemu-devel@nongnu.org; Wed, 11 Jul 2012 04:42:11 -0400 Received: from mx1.redhat.com ([209.132.183.28]:37714) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SosUm-0006zJ-CB for qemu-devel@nongnu.org; Wed, 11 Jul 2012 04:42:04 -0400 Message-ID: <4FFD3C55.30804@redhat.com> Date: Wed, 11 Jul 2012 10:41:57 +0200 From: Igor Mammedov MIME-Version: 1.0 References: <1341900967-4344-1-git-send-email-qemulist@gmail.com> <1341900967-4344-6-git-send-email-qemulist@gmail.com> <4FFBEBA0.3080609@redhat.com> <4FFC06EC.5080100@suse.de> In-Reply-To: <4FFC06EC.5080100@suse.de> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 5/5] apic: create apic as a child of cpu, not system_bus any longer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?ISO-8859-15?Q?Andreas_F=E4rber?= Cc: Jan Kiszka , qemu-devel@nongnu.org, Liu Ping Fan , Blue Swirl , Anthony Liguori , Paolo Bonzini On 07/10/2012 12:41 PM, Andreas F=E4rber wrote: > Am 10.07.2012 10:45, schrieb Paolo Bonzini: >> Il 10/07/2012 08:16, Liu Ping Fan ha scritto: >>> Signed-off-by: Liu Ping Fan >>> --- >>> hw/pc.c | 10 +++++----- >>> 1 files changed, 5 insertions(+), 5 deletions(-) >>> >>> diff --git a/hw/pc.c b/hw/pc.c >>> index c7e9ab3..8df58c9 100644 >>> --- a/hw/pc.c >>> +++ b/hw/pc.c >>> @@ -886,17 +886,17 @@ DeviceState *cpu_get_current_apic(void) >>> } >>> } >>> >>> -static DeviceState *apic_init(void *env, uint8_t apic_id) >>> +static DeviceState *apic_init(void *cpu, void *env, uint8_t apic_id) >>> { >>> DeviceState *dev; >>> static int apic_mapped; >>> >>> if (kvm_irqchip_in_kernel()) { >>> - dev =3D qdev_create(NULL, "kvm-apic"); >>> + dev =3D qdev_create_kid(OBJECT(cpu), "kvm-apic"); >>> } else if (xen_enabled()) { >>> - dev =3D qdev_create(NULL, "xen-apic"); >>> + dev =3D qdev_create_kid(OBJECT(cpu), "xen-apic"); >>> } else { >>> - dev =3D qdev_create(NULL, "apic"); >>> + dev =3D qdev_create_kid(OBJECT(cpu), "apic"); >>> } >> >> Does it make sense instead to do this in the realize method of the CPU= ? > > Igor was working on patches to do that. We ran into other design issues > on that road, yesterday I made a proposal how we might proceed with his > approach: > > http://lists.nongnu.org/archive/html/qemu-devel/2012-07/msg00992.html > > Andreas I was trying to put APIC by-value inside of X86_CPU and do in-place initi= alization in x86_cpu_initfn(), but that has it's own drawbacks: 1. currently all apic flavors have common instance sizeof(APICCommonSt= ate) that could be used as a way to reserve space in CPUX86State. But they co= uld diverge and create problems later when nobody remembers that sizeof(whateve= r apic) must be equal to sizeof(APICCommonState) 2. it won't solve OOM anyway because of a initfn could fail due to OOM= in any object_property_add() call So if not-inplace apic creation in realize() is acceptable alternative th= en I'd like to respin apic patches with this change. --=20 ----- Igor