From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MWSkC-0005Pr-R5 for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:20:16 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MWSk8-0005NO-3J for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:20:16 -0400 Received: from [199.232.76.173] (port=34931 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MWSk7-0005NG-Lh for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:20:11 -0400 Received: from mx20.gnu.org ([199.232.41.8]:26389) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MWSk7-0008Nc-Bc for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:20:11 -0400 Received: from mx2.redhat.com ([66.187.237.31]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MWSk6-0001Mk-HW for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:20:10 -0400 Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26]) by mx2.redhat.com (8.13.8/8.13.8) with ESMTP id n6UAK99J003262 for ; Thu, 30 Jul 2009 06:20:09 -0400 From: Zachary Amsden Date: Thu, 30 Jul 2009 00:15:11 -1000 Message-Id: <1248948912-7877-14-git-send-email-zamsden@redhat.com> In-Reply-To: <1248948912-7877-13-git-send-email-zamsden@redhat.com> References: <1248948912-7877-1-git-send-email-zamsden@redhat.com> <1248948912-7877-2-git-send-email-zamsden@redhat.com> <1248948912-7877-3-git-send-email-zamsden@redhat.com> <1248948912-7877-4-git-send-email-zamsden@redhat.com> <1248948912-7877-5-git-send-email-zamsden@redhat.com> <1248948912-7877-6-git-send-email-zamsden@redhat.com> <1248948912-7877-7-git-send-email-zamsden@redhat.com> <1248948912-7877-8-git-send-email-zamsden@redhat.com> <1248948912-7877-9-git-send-email-zamsden@redhat.com> <1248948912-7877-10-git-send-email-zamsden@redhat.com> <1248948912-7877-11-git-send-email-zamsden@redhat.com> <1248948912-7877-12-git-send-email-zamsden@redhat.com> <1248948912-7877-13-git-send-email-zamsden@redhat.com> Subject: [Qemu-devel] [PATCH 13/14] Allow cirrus VGA to be initialized multiple times; only the first init takes the ISA memory region and hardware I/O ports. List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: zamsden@redhat.com Signed-off-by: Zachary Amsden --- hw/cirrus_vga.c | 37 +++++++++++++++++++++---------------- 1 files changed, 21 insertions(+), 16 deletions(-) diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c index d7874f0..c0cf088 100644 --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -3153,6 +3153,7 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) { int i; static int inited; + static int idx = 0; if (!inited) { inited = 1; @@ -3181,25 +3182,28 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) s->bustype = CIRRUS_BUSTYPE_ISA; } - register_ioport_write(0x3c0, 16, 1, vga_ioport_write, s); + if (idx == 0) { + register_ioport_write(0x3c0, 16, 1, vga_ioport_write, s); - register_ioport_write(0x3b4, 2, 1, vga_ioport_write, s); - register_ioport_write(0x3d4, 2, 1, vga_ioport_write, s); - register_ioport_write(0x3ba, 1, 1, vga_ioport_write, s); - register_ioport_write(0x3da, 1, 1, vga_ioport_write, s); + register_ioport_write(0x3b4, 2, 1, vga_ioport_write, s); + register_ioport_write(0x3d4, 2, 1, vga_ioport_write, s); + register_ioport_write(0x3ba, 1, 1, vga_ioport_write, s); + register_ioport_write(0x3da, 1, 1, vga_ioport_write, s); - register_ioport_read(0x3c0, 16, 1, vga_ioport_read, s); + register_ioport_read(0x3c0, 16, 1, vga_ioport_read, s); - register_ioport_read(0x3b4, 2, 1, vga_ioport_read, s); - register_ioport_read(0x3d4, 2, 1, vga_ioport_read, s); - register_ioport_read(0x3ba, 1, 1, vga_ioport_read, s); - register_ioport_read(0x3da, 1, 1, vga_ioport_read, s); + register_ioport_read(0x3b4, 2, 1, vga_ioport_read, s); + register_ioport_read(0x3d4, 2, 1, vga_ioport_read, s); + register_ioport_read(0x3ba, 1, 1, vga_ioport_read, s); + register_ioport_read(0x3da, 1, 1, vga_ioport_read, s); + s->vga.vram_phys = isa_mem_base + VGA_ISA_ADDRESS; - s->vga.vram_phys = isa_mem_base + VGA_ISA_ADDRESS; - s->vga.vga_io_memory = cpu_register_io_memory(cirrus_vga_mem_read, - cirrus_vga_mem_write, s); - cpu_register_physical_memory(s->vga.vram_phys, VGA_VRAM_SIZE, s->vga.vga_io_memory); - qemu_register_coalesced_mmio(s->vga.vram_phys, VGA_VRAM_SIZE); + s->vga.vga_io_memory = cpu_register_io_memory(cirrus_vga_mem_read, + cirrus_vga_mem_write, s); + cpu_register_physical_memory(s->vga.vram_phys, VGA_VRAM_SIZE, + s->vga.vga_io_memory); + qemu_register_coalesced_mmio(s->vga.vram_phys, VGA_VRAM_SIZE); + } /* I/O handler for LFB */ s->cirrus_linear_io_addr = @@ -3229,7 +3233,8 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) qemu_register_reset(cirrus_reset, 0, s); cirrus_reset(s); - register_savevm("cirrus_vga", 0, 2, cirrus_vga_save, cirrus_vga_load, s); + register_savevm("cirrus_vga", idx, 2, cirrus_vga_save, cirrus_vga_load, s); + idx++; } /*************************************** -- 1.6.2.5