From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MWSjv-0005ID-Rd for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:19:59 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MWSjs-0005GZ-1p for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:19:59 -0400 Received: from [199.232.76.173] (port=34919 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MWSjr-0005GV-Uw for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:19:55 -0400 Received: from mx2.redhat.com ([66.187.237.31]:41345) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MWSjr-0008JA-FU for qemu-devel@nongnu.org; Thu, 30 Jul 2009 06:19:55 -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 n6UAJsit002825 for ; Thu, 30 Jul 2009 06:19:54 -0400 From: Zachary Amsden Date: Thu, 30 Jul 2009 00:15:08 -1000 Message-Id: <1248948912-7877-11-git-send-email-zamsden@redhat.com> In-Reply-To: <1248948912-7877-10-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> Subject: [Qemu-devel] [PATCH 10/14] Stash VGA physical address and use it in KVM callbacks. Stash VGA physical pointer in cirrus vga as well. 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 | 18 ++++++++---------- hw/vga.c | 9 +++++---- hw/vga_int.h | 1 + 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c index 2287e94..60c67fe 100644 --- a/hw/cirrus_vga.c +++ b/hw/cirrus_vga.c @@ -1219,7 +1219,7 @@ static void cirrus_update_bank_ptr(CirrusVGAState * s, unsigned bank_index) /* Thinking about changing bank base? First, drop the dirty bitmap information * on the current location, otherwise we lose this pointer forever */ if (s->vga.lfb_vram_mapped) { - target_phys_addr_t base_addr = isa_mem_base + 0xa0000 + bank_index * 0x8000; + target_phys_addr_t base_addr = s->vga.vram_phys + bank_index * 0x8000; cpu_physical_sync_dirty_bitmap(base_addr, 0x8000); } s->cirrus_bank_base[bank_index] = offset; @@ -2603,16 +2603,15 @@ static void map_linear_vram(CirrusVGAState *s) && !((s->vga.gr[0x0B] & 0x14) == 0x14) && !(s->vga.gr[0x0B] & 0x02)) { - cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x8000, + cpu_register_physical_memory(s->vga.vram_phys, 0x8000, (s->vga.vram_offset + s->cirrus_bank_base[0]) | IO_MEM_RAM); - cpu_register_physical_memory(isa_mem_base + 0xa8000, 0x8000, + cpu_register_physical_memory(s->vga.vram_phys + 0x8000, 0x8000, (s->vga.vram_offset + s->cirrus_bank_base[1]) | IO_MEM_RAM); s->vga.lfb_vram_mapped = 1; } else { - cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x20000, - s->vga.vga_io_memory); + cpu_register_physical_memory(s->vga.vram_phys, 0x20000, s->vga.vga_io_memory); } vga_dirty_log_start(&s->vga); @@ -2623,8 +2622,7 @@ static void unmap_linear_vram(CirrusVGAState *s) if (s->vga.map_addr && s->vga.lfb_addr && s->vga.lfb_end) s->vga.map_addr = s->vga.map_size = 0; - cpu_register_physical_memory(isa_mem_base + 0xa0000, 0x20000, - s->vga.vga_io_memory); + cpu_register_physical_memory(s->vga.vram_phys, 0x20000, s->vga.vga_io_memory); } /* Compute the memory access functions */ @@ -3197,11 +3195,11 @@ static void cirrus_init_common(CirrusVGAState * s, int device_id, int is_pci) 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 + 0xa0000; s->vga.vga_io_memory = cpu_register_io_memory(cirrus_vga_mem_read, cirrus_vga_mem_write, s); - cpu_register_physical_memory(isa_mem_base + 0x000a0000, 0x20000, - s->vga.vga_io_memory); - qemu_register_coalesced_mmio(isa_mem_base + 0x000a0000, 0x20000); + cpu_register_physical_memory(s->vga.vram_phys, 0x20000, s->vga.vga_io_memory); + qemu_register_coalesced_mmio(s->vga.vram_phys, 0x20000); /* I/O handler for LFB */ s->cirrus_linear_io_addr = diff --git a/hw/vga.c b/hw/vga.c index 907cdb7..0941962 100644 --- a/hw/vga.c +++ b/hw/vga.c @@ -1574,8 +1574,8 @@ static void vga_sync_dirty_bitmap(VGAState *s) cpu_physical_sync_dirty_bitmap(s->map_addr, s->map_size); if (s->lfb_vram_mapped) { - cpu_physical_sync_dirty_bitmap(isa_mem_base + 0xa0000, 0x8000); - cpu_physical_sync_dirty_bitmap(isa_mem_base + 0xa8000, 0x8000); + cpu_physical_sync_dirty_bitmap(s->vram_phys, 0x8000); + cpu_physical_sync_dirty_bitmap(s->vram_phys + 0x8000, 0x8000); } } @@ -2230,8 +2230,8 @@ void vga_dirty_log_start(VGAState *s) kvm_log_start(s->map_addr, s->map_size); if (kvm_enabled() && s->lfb_vram_mapped) { - kvm_log_start(isa_mem_base + 0xa0000, 0x8000); - kvm_log_start(isa_mem_base + 0xa8000, 0x8000); + kvm_log_start(s->vram_phys, 0x8000); + kvm_log_start(s->vram_phys + 0x8000, 0x8000); } } @@ -2409,6 +2409,7 @@ void vga_init(VGAState *s, target_phys_addr_t vram_base, s->bank_offset = 0; s->it_shift = it_shift; + s->vram_phys = vram_base; /* Pass ctrl_base to setup memory mapped I/O control */ if (ctrl_base) { diff --git a/hw/vga_int.h b/hw/vga_int.h index f072663..bab04c6 100644 --- a/hw/vga_int.h +++ b/hw/vga_int.h @@ -102,6 +102,7 @@ typedef struct VGACommonState { uint8_t *vram_ptr; ram_addr_t vram_offset; unsigned int vram_size; + target_phys_addr_t vram_phys; uint32_t lfb_addr; uint32_t lfb_end; uint32_t map_addr; -- 1.6.2.5