From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=57265 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OmArZ-0002Aj-S3 for qemu-devel@nongnu.org; Thu, 19 Aug 2010 15:33:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OmArY-0005ud-Rx for qemu-devel@nongnu.org; Thu, 19 Aug 2010 15:33:21 -0400 Received: from mail-gw0-f45.google.com ([74.125.83.45]:56409) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OmArY-0005uZ-P6 for qemu-devel@nongnu.org; Thu, 19 Aug 2010 15:33:20 -0400 Received: by gwb11 with SMTP id 11so967823gwb.4 for ; Thu, 19 Aug 2010 12:33:20 -0700 (PDT) Message-ID: <4C6D86F9.3010602@codemonkey.ws> Date: Thu, 19 Aug 2010 14:33:13 -0500 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 0/7] APIC/IOAPIC cleanup References: In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: "Liu >> \"Liu, Jinsong\"" , Avi Kivity , qemu-devel , Paul Brook On 06/12/2010 04:14 PM, Blue Swirl wrote: > Clean up APIC and IOAPIC. Convert both devices to qdev. > > v1->v2: > Remove apic.h reorganization. > Add IOAPIC and APIC qdev conversions. > Use CPUState also in 5/7. However on 6/7 we have to again use void * > because of VMState limitations. VMState gurus, please comment. > I'm late to the game here, but I'm not sure converting the APIC to qdev makes a lot of sense conceptually. qdev models devices that exist on a bus, but the local APIC actually lives on the processor core. It's extremely unique in that it actually maps a physical memory region different depending on the actual core. It really belongs as part of the CPU emulation and not as part of the device emulation. For now, the practical problem is that you can't hotplug a CPU because that creates an APIC which lives on the Sysbus which does not allow hotplug. Making sysbus allow hotplug is definitely note the right answer though. I think the options are to allow non-bus devices (like the APIC) or make the APIC a special case that's part of the CPU emulation. > Blue Swirl (7): > ioapic: unexport ioapic_set_irq > ioapic: convert to qdev > apic: avoid passing CPUState from devices > apic: avoid passing CPUState from CPU code > apic: avoid using CPUState internals > apic: convert to qdev > apic: qdev conversion cleanup > > hw/apic.c | 174 +++++++++++++++++++++++----------------------- > hw/apic.h | 21 ++++-- > hw/ioapic.c | 47 ++++++++---- > hw/pc.c | 74 ++++++++++++++++++-- > hw/pc.h | 4 +- > hw/pc_piix.c | 19 +++++- > qemu-common.h | 2 +- > target-i386/cpu.h | 28 +++++--- > target-i386/cpuid.c | 6 ++ > target-i386/helper.c | 4 +- > target-i386/kvm.c | 14 ++-- > target-i386/op_helper.c | 8 +- > 12 files changed, 258 insertions(+), 143 deletions(-) > >