From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:44158) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TWKnt-0004Id-Bf for qemu-devel@nongnu.org; Thu, 08 Nov 2012 00:37:26 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TWKnr-0003zO-Vj for qemu-devel@nongnu.org; Thu, 08 Nov 2012 00:37:25 -0500 Received: from e23smtp01.au.ibm.com ([202.81.31.143]:48634) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TWKnr-0003z6-Da for qemu-devel@nongnu.org; Thu, 08 Nov 2012 00:37:23 -0500 Received: from /spool/local by e23smtp01.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 8 Nov 2012 15:34:24 +1000 Received: from d23av04.au.ibm.com (d23av04.au.ibm.com [9.190.235.139]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id qA85bHoO29884662 for ; Thu, 8 Nov 2012 16:37:17 +1100 Received: from d23av04.au.ibm.com (loopback [127.0.0.1]) by d23av04.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id qA85bFo0030795 for ; Thu, 8 Nov 2012 16:37:16 +1100 From: Wanpeng Li Date: Thu, 8 Nov 2012 13:36:36 +0800 Message-Id: <1352352999-2561-8-git-send-email-liwanp@linux.vnet.ibm.com> In-Reply-To: <1352352999-2561-1-git-send-email-liwanp@linux.vnet.ibm.com> References: <1352352999-2561-1-git-send-email-liwanp@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH 07/10] convert VMPORT as piix3 proper QOM child List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Ram Pai , "Michael S. Tsirkin" , Jan Kiszka , qemu-devel@nongnu.org, Liu Ping Fan , Blue Swirl , Stefan Weil , Avi Kivity , Paolo Bonzini , Wanpeng Li convert VMPORT as piix3 proper QOM child. VMPORT creation for the PIIX3 is done by calling object_init() with qdev_init() being called for each child device in the PIIX3 ::init function. Signed-off-by: Wanpeng Li --- hw/pc.c | 1 - hw/pc.h | 5 ----- hw/piix3.c | 11 +++++++++++ hw/piix3.h | 11 +++++++++++ hw/vmport.c | 10 +--------- 5 files changed, 23 insertions(+), 15 deletions(-) diff --git a/hw/pc.c b/hw/pc.c index a14bf5a..99cd314 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -951,7 +951,6 @@ static void pc_basic_device_init(ISABus *isa_bus, qemu_irq *gsi, } if (!no_vmport) { - vmport_init(isa_bus); vmmouse = isa_try_create(isa_bus, "vmmouse"); } else { vmmouse = NULL; diff --git a/hw/pc.h b/hw/pc.h index 17d48a0..5b7bc26 100644 --- a/hw/pc.h +++ b/hw/pc.h @@ -54,11 +54,6 @@ typedef struct GSIState { qemu_irq ioapic_irq[IOAPIC_NUM_PINS]; } GSIState; -/* vmport.c */ -static inline void vmport_init(ISABus *bus) -{ - isa_create_simple(bus, "vmport"); -} void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque); void vmmouse_get_data(uint32_t *data); void vmmouse_set_data(const uint32_t *data); diff --git a/hw/piix3.c b/hw/piix3.c index c6bf3cb..27c8f50 100644 --- a/hw/piix3.c +++ b/hw/piix3.c @@ -269,6 +269,12 @@ static int piix3_realize(PCIDevice *dev) i8042_setup_a20_line(ISA_DEVICE(&s->i8042), &a20_line[0]); qdev_init_nofail(DEVICE(&s->i8042)); + /* Realize the VMPORT */ + if (!xen_enabled()) { + qdev_set_parent_bus(DEVICE(&s->vmport), BUS(s->bus)); + qdev_init_nofail(DEVICE(&s->vmport)); + } + return 0; } @@ -307,6 +313,11 @@ static void piix3_initfn(Object *obj) object_initialize(&s->i8042, TYPE_I8042); object_property_add_child(obj, "i8042", OBJECT(&s->i8042), NULL); + + if (!xen_enabled()) { + object_initialize(&s->vmport, TYPE_VMPORT); + object_property_add_child(obj, "vmport", OBJECT(&s->vmport), NULL); + } } static void piix3_class_init(ObjectClass *klass, void *data) diff --git a/hw/piix3.h b/hw/piix3.h index 94a0daf..477e39e 100644 --- a/hw/piix3.h +++ b/hw/piix3.h @@ -54,6 +54,16 @@ typedef struct KVMPITState { #define TYPE_PORT92 "port92" +#define TYPE_VMPORT "vmport" +#define VMPORT_ENTRIES 0x2c + +typedef struct _VMPortState { + ISADevice dev; + MemoryRegion io; + IOPortReadFunc *func[VMPORT_ENTRIES]; + void *opaque[VMPORT_ENTRIES]; +} VMPortState; + /* port 92 stuff: could be split off */ typedef struct Port92State { ISADevice dev; @@ -110,6 +120,7 @@ typedef struct PIIX3State { PITCommonState pit; KVMPITState kvm_pit; } pit; + VMPortState vmport; #endif PCSpkState pcspk; Port92State port92; diff --git a/hw/vmport.c b/hw/vmport.c index 3ab3a14..45daef6 100644 --- a/hw/vmport.c +++ b/hw/vmport.c @@ -35,14 +35,6 @@ #define VMPORT_ENTRIES 0x2c #define VMPORT_MAGIC 0x564D5868 -typedef struct _VMPortState -{ - ISADevice dev; - MemoryRegion io; - IOPortReadFunc *func[VMPORT_ENTRIES]; - void *opaque[VMPORT_ENTRIES]; -} VMPortState; - static VMPortState *port_state; void vmport_register(unsigned char command, IOPortReadFunc *func, void *opaque) @@ -156,7 +148,7 @@ static void vmport_class_initfn(ObjectClass *klass, void *data) } static TypeInfo vmport_info = { - .name = "vmport", + .name = TYPE_VMPORT, .parent = TYPE_ISA_DEVICE, .instance_size = sizeof(VMPortState), .class_init = vmport_class_initfn, -- 1.7.7.6