Patchwork [v2] pxa2xx_lcd: SRAM is valid location for the framebuffer

login
register
mail settings
Submitter Vasily Khoruzhick
Date Jan. 24, 2012, 7:32 p.m.
Message ID <1327433550-20827-1-git-send-email-anarsoul@gmail.com>
Download mbox | patch
Permalink /patch/137646/
State New
Headers show

Comments

Vasily Khoruzhick - Jan. 24, 2012, 7:32 p.m.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
---
v2: fix descptr validation

 hw/pxa2xx_lcd.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)
andrzej zaborowski - Feb. 17, 2012, 7:26 a.m.
On 24 January 2012 20:32, Vasily Khoruzhick <anarsoul@gmail.com> wrote:
> Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>

Thanks, applied this patch.

Cheers

Patch

diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c
index 4e9f7b4..de0fa48 100644
--- a/hw/pxa2xx_lcd.c
+++ b/hw/pxa2xx_lcd.c
@@ -308,9 +308,12 @@  static void pxa2xx_descriptor_load(PXA2xxLCDState *s)
         } else
             descptr = s->dma_ch[i].descriptor;
 
-        if (!(descptr >= PXA2XX_SDRAM_BASE && descptr +
-                    sizeof(desc) <= PXA2XX_SDRAM_BASE + ram_size))
+        if (!((descptr >= PXA2XX_SDRAM_BASE && descptr +
+                    sizeof(desc) <= PXA2XX_SDRAM_BASE + ram_size) ||
+            (descptr >= PXA2XX_INTERNAL_BASE && descptr +
+              sizeof(desc) <= PXA2XX_INTERNAL_BASE + PXA2XX_INTERNAL_SIZE))) {
             continue;
+        }
 
         cpu_physical_memory_read(descptr, (void *)&desc, sizeof(desc));
         s->dma_ch[i].descriptor = tswap32(desc.fdaddr);
@@ -830,8 +833,10 @@  static void pxa2xx_update_display(void *opaque)
                 continue;
             }
             fbptr = s->dma_ch[ch].source;
-            if (!(fbptr >= PXA2XX_SDRAM_BASE &&
-                    fbptr <= PXA2XX_SDRAM_BASE + ram_size)) {
+            if (!((fbptr >= PXA2XX_SDRAM_BASE &&
+                    fbptr <= PXA2XX_SDRAM_BASE + ram_size) ||
+                  (fbptr >= PXA2XX_INTERNAL_BASE &&
+                   fbptr <= PXA2XX_INTERNAL_BASE + PXA2XX_INTERNAL_SIZE))) {
                 pxa2xx_dma_ber_set(s, ch);
                 continue;
             }