YaGL: Allow user to specify marshal buffer size
authorStanislav Vorobiov <s.vorobiov@samsung.com>
Thu, 13 Sep 2012 13:30:18 +0000 (17:30 +0400)
committerSeokYeon Hwang <syeon.hwang@samsung.com>
Wed, 9 Apr 2014 05:42:17 +0000 (14:42 +0900)
It still has to be 1 page, to be fixed later

Change-Id: I5c1d8a276922008621a468485f61e69566abd0c6

drivers/gpu/yagl/yagl_driver.c
drivers/gpu/yagl/yagl_version.h

index 463cc82..e36fb76 100644 (file)
@@ -181,18 +181,18 @@ static int yagl_misc_mmap(struct file *file, struct vm_area_struct *vma)
 
     mutex_lock(&yfile->device->mutex);
 
-    if (num_pages != 1) {
-        dprintk("%s: mmap must be called for 1 page only\n",
-                yfile->device->miscdev.name);
-        ret = -EINVAL;
-        goto out;
-    }
-
     if (vma->vm_pgoff == 0) {
         /*
          * First page is 'regs'.
          */
 
+        if (num_pages != 1) {
+            dprintk("%s: mmap must be called for 1 page only\n",
+                    yfile->device->miscdev.name);
+            ret = -EINVAL;
+            goto out;
+        }
+
         vma->vm_flags |= VM_IO | VM_RESERVED;
         vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
 
@@ -220,7 +220,7 @@ static int yagl_misc_mmap(struct file *file, struct vm_area_struct *vma)
             goto out;
         }
 
-        buff = vmalloc_user(PAGE_SIZE);
+        buff = vmalloc_user(vma->vm_end - vma->vm_start);
 
         if (!buff) {
             dprintk("%s: unable to alloc memory\n",
index 721a555..52e0778 100644 (file)
@@ -6,7 +6,7 @@
 /*
  * Version number.
  */
-#define YAGL_VERSION 3
+#define YAGL_VERSION 4
 
 /*
  * Device control codes magic.