Ion drivers: Compatible with older versions about flush cache
authorkfx <kfx@rock-chips.com>
Mon, 19 Mar 2012 04:19:10 +0000 (12:19 +0800)
committerkfx <kfx@rock-chips.com>
Mon, 19 Mar 2012 04:19:10 +0000 (12:19 +0800)
drivers/gpu/ion/ion.c
drivers/gpu/ion/ion_carveout_heap.c
drivers/gpu/ion/ion_priv.h

index 6a1c59ae965086df7eba62dd2b08adc085025b5f..378e6b1feef347a1f01db2f601b9d0bfa4406dc6 100755 (executable)
@@ -930,6 +930,9 @@ static long ion_share_ioctl(struct file *filp, unsigned int cmd, unsigned long a
                if (copy_from_user(&region, (void __user *)arg,
                                sizeof(struct pmem_region)))
                        return -EFAULT;
+                if(!(region.offset & 0xf0000000))
+                        region.offset = buffer->vm_start;
+
                dmac_flush_range((void *)region.offset, (void *)(region.offset + region.len));
 
                break;
index ec355c7da546adea8726bb697c432800dbf28953..c8fa2d82d4231bc62dcde9745c21fc4ebb039506 100755 (executable)
@@ -177,6 +177,7 @@ int ion_carveout_heap_map_user(struct ion_heap *heap, struct ion_buffer *buffer,
                                        vma->vm_end - vma->vm_start,
                                        pgprot_noncached(vma->vm_page_prot));
 
+        buffer->vm_start = vma->vm_start;
        return err;
 }
 int ion_carveout_cache_op(struct ion_heap *heap, struct ion_buffer *buffer,
index f954d2d90058c9c886d206acc73d19734b3ed537..f4ef07a8e28e29cdbb1df9f658828510e562655e 100755 (executable)
@@ -75,6 +75,7 @@ struct ion_buffer {
        void *vaddr;
        int dmap_cnt;
        struct scatterlist *sglist;
+        unsigned long vm_start;
 
        int marked;
 };