Patchwork [v3,03/39] vmsvga: don't remember pci BAR address in callback any more

login
register
mail settings
Submitter Avi Kivity
Date Aug. 4, 2011, 1:05 p.m.
Message ID <1312463195-13605-4-git-send-email-avi@redhat.com>
Download mbox | patch
Permalink /patch/108485/
State New
Headers show

Comments

Avi Kivity - Aug. 4, 2011, 1:05 p.m.
We're going to remove the callback, so we can't use it to save the
address.  Use the pci API instead.

Reviewed-by: Richard Henderson <rth@twiddle.net>
Signed-off-by: Avi Kivity <avi@redhat.com>
---
 hw/vmware_vga.c |   12 ++++++------
 1 files changed, 6 insertions(+), 6 deletions(-)
Anthony Liguori - Aug. 5, 2011, 1:54 p.m.
On 08/04/2011 08:05 AM, Avi Kivity wrote:
> We're going to remove the callback, so we can't use it to save the
> address.  Use the pci API instead.
>
> Reviewed-by: Richard Henderson<rth@twiddle.net>
> Signed-off-by: Avi Kivity<avi@redhat.com>

Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>

Regards,

Anthony Liguori

> ---
>   hw/vmware_vga.c |   12 ++++++------
>   1 files changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
> index 354c221..190b005 100644
> --- a/hw/vmware_vga.c
> +++ b/hw/vmware_vga.c
> @@ -52,8 +52,6 @@ struct vmsvga_state_s {
>           int on;
>       } cursor;
>
> -    target_phys_addr_t vram_base;
> -
>       int index;
>       int scratch_size;
>       uint32_t *scratch;
> @@ -761,8 +759,11 @@ static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
>       case SVGA_REG_BYTES_PER_LINE:
>           return ((s->depth + 7)>>  3) * s->new_width;
>
> -    case SVGA_REG_FB_START:
> -        return s->vram_base;
> +    case SVGA_REG_FB_START: {
> +        struct pci_vmsvga_state_s *pci_vmsvga
> +            = container_of(s, struct pci_vmsvga_state_s, chip);
> +        return pci_get_bar_addr(&pci_vmsvga->card, 1);
> +    }
>
>       case SVGA_REG_FB_OFFSET:
>           return 0x0;
> @@ -1247,14 +1248,13 @@ static void pci_vmsvga_map_mem(PCIDevice *pci_dev, int region_num,
>       struct vmsvga_state_s *s =&d->chip;
>       ram_addr_t iomemtype;
>
> -    s->vram_base = addr;
>   #ifdef DIRECT_VRAM
>       iomemtype = cpu_register_io_memory(vmsvga_vram_read,
>                       vmsvga_vram_write, s, DEVICE_NATIVE_ENDIAN);
>   #else
>       iomemtype = s->vga.vram_offset | IO_MEM_RAM;
>   #endif
> -    cpu_register_physical_memory(s->vram_base, s->vga.vram_size,
> +    cpu_register_physical_memory(addr, s->vga.vram_size,
>                       iomemtype);
>
>       s->vga.map_addr = addr;

Patch

diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index 354c221..190b005 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -52,8 +52,6 @@  struct vmsvga_state_s {
         int on;
     } cursor;
 
-    target_phys_addr_t vram_base;
-
     int index;
     int scratch_size;
     uint32_t *scratch;
@@ -761,8 +759,11 @@  static uint32_t vmsvga_value_read(void *opaque, uint32_t address)
     case SVGA_REG_BYTES_PER_LINE:
         return ((s->depth + 7) >> 3) * s->new_width;
 
-    case SVGA_REG_FB_START:
-        return s->vram_base;
+    case SVGA_REG_FB_START: {
+        struct pci_vmsvga_state_s *pci_vmsvga
+            = container_of(s, struct pci_vmsvga_state_s, chip);
+        return pci_get_bar_addr(&pci_vmsvga->card, 1);
+    }
 
     case SVGA_REG_FB_OFFSET:
         return 0x0;
@@ -1247,14 +1248,13 @@  static void pci_vmsvga_map_mem(PCIDevice *pci_dev, int region_num,
     struct vmsvga_state_s *s = &d->chip;
     ram_addr_t iomemtype;
 
-    s->vram_base = addr;
 #ifdef DIRECT_VRAM
     iomemtype = cpu_register_io_memory(vmsvga_vram_read,
                     vmsvga_vram_write, s, DEVICE_NATIVE_ENDIAN);
 #else
     iomemtype = s->vga.vram_offset | IO_MEM_RAM;
 #endif
-    cpu_register_physical_memory(s->vram_base, s->vga.vram_size,
+    cpu_register_physical_memory(addr, s->vga.vram_size,
                     iomemtype);
 
     s->vga.map_addr = addr;