drm/gma500: Add fb gtt offset to fb base
authorPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Tue, 14 May 2013 12:37:10 +0000 (14:37 +0200)
committerPatrik Jakobsson <patrik.r.jakobsson@gmail.com>
Wed, 15 May 2013 12:23:09 +0000 (14:23 +0200)
Old code assumed framebuffer starts at base of stolen memory. Since the
addition of hardware cursors, this might not be true anymore so add the
gtt offset to the calculation.

Reported-by: Holger Schurig <holgerschurig@gmail.com>
Tested-by: Holger Schurig <holgerschurig@gmail.com>
Signed-off-by: Patrik Jakobsson <patrik.r.jakobsson@gmail.com>
drivers/gpu/drm/gma500/framebuffer.c

index 1534e220097ab8bbe5b8e272df0d8f007b6447a2..8b1b6d923abe82ab8119ce7134d3a45b681a54f6 100644 (file)
@@ -121,8 +121,8 @@ static int psbfb_vm_fault(struct vm_area_struct *vma, struct vm_fault *vmf)
        unsigned long address;
        int ret;
        unsigned long pfn;
-       /* FIXME: assumes fb at stolen base which may not be true */
-       unsigned long phys_addr = (unsigned long)dev_priv->stolen_base;
+       unsigned long phys_addr = (unsigned long)dev_priv->stolen_base +
+                                 psbfb->gtt->offset;
 
        page_num = (vma->vm_end - vma->vm_start) >> PAGE_SHIFT;
        address = (unsigned long)vmf->virtual_address - (vmf->pgoff << PAGE_SHIFT);