qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] vga: fix vram double-mapping with -vga std and


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] vga: fix vram double-mapping with -vga std and -M pc-0.12
Date: Wed, 30 May 2012 10:13:20 +0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120329 Thunderbird/11.0.1

On 05/09/2012 11:23 PM, Avi Kivity wrote:
With pc-0.12, we map the video RAM both through the PCI BAR (the guest does
this) and through a fixed mapping at 0xe0000000.  The memory API doesn't allow
this double map, and aborts.

Fix by using an alias.

Reported-by: Michael Tokarev<address@hidden>
Signed-off-by: Avi Kivity<address@hidden>

Applied.  Thanks.

Regards,

Anthony Liguori

---
  hw/vga.c     |    7 ++++++-
  hw/vga_int.h |    1 +
  2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/hw/vga.c b/hw/vga.c
index 5824f85..d784df7 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -2357,10 +2357,15 @@ void vga_init(VGACommonState *s, MemoryRegion 
*address_space,
  void vga_init_vbe(VGACommonState *s, MemoryRegion *system_memory)
  {
  #ifdef CONFIG_BOCHS_VBE
+    /* With pc-0.12 and below we map both the PCI BAR and the fixed VBE region,
+     * so use an alias to avoid double-mapping the same region.
+     */
+    memory_region_init_alias(&s->vram_vbe, "vram.vbe",
+&s->vram, 0, memory_region_size(&s->vram));
      /* XXX: use optimized standard vga accesses */
      memory_region_add_subregion(system_memory,
                                  VBE_DISPI_LFB_PHYSICAL_ADDRESS,
-&s->vram);
+&s->vram_vbe);
      s->vbe_mapped = 1;
  #endif
  }
diff --git a/hw/vga_int.h b/hw/vga_int.h
index 7685b2b..d244d8f 100644
--- a/hw/vga_int.h
+++ b/hw/vga_int.h
@@ -105,6 +105,7 @@ typedef struct VGACommonState {
      MemoryRegion *legacy_address_space;
      uint8_t *vram_ptr;
      MemoryRegion vram;
+    MemoryRegion vram_vbe;
      uint32_t vram_size;
      uint32_t latch;
      MemoryRegion *chain4_alias;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]