diff mbox

[v2,2/5] drm/omap: Use drm_gem_mmap_obj() to implement dma-buf mmap

Message ID 1370312422-25027-3-git-send-email-laurent.pinchart+renesas@ideasonboard.com
State Superseded
Headers show

Commit Message

Laurent Pinchart June 4, 2013, 2:20 a.m. UTC
The dma-buf mmap code was copied from the GEM mmap implementation.
Replace it with the new drm_gem_mmap_obj() function.

Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
 drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 32 +++----------------------------
 1 file changed, 3 insertions(+), 29 deletions(-)

Comments

Rob Clark June 4, 2013, 11:33 a.m. UTC | #1
On Mon, Jun 3, 2013 at 10:20 PM, Laurent Pinchart
<laurent.pinchart+renesas@ideasonboard.com> wrote:
> The dma-buf mmap code was copied from the GEM mmap implementation.
> Replace it with the new drm_gem_mmap_obj() function.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>

Reviewed-by: Rob Clark <robdclark@gmail.com>

> ---
>  drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c | 32 +++----------------------------
>  1 file changed, 3 insertions(+), 29 deletions(-)
>
> diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> index be7cd97..3256693 100644
> --- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> +++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
> @@ -136,10 +136,6 @@ static void omap_gem_dmabuf_kunmap(struct dma_buf *buffer,
>         kunmap(pages[page_num]);
>  }
>
> -/*
> - * TODO maybe we can split up drm_gem_mmap to avoid duplicating
> - * some here.. or at least have a drm_dmabuf_mmap helper.
> - */
>  static int omap_gem_dmabuf_mmap(struct dma_buf *buffer,
>                 struct vm_area_struct *vma)
>  {
> @@ -149,31 +145,9 @@ static int omap_gem_dmabuf_mmap(struct dma_buf *buffer,
>         if (WARN_ON(!obj->filp))
>                 return -EINVAL;
>
> -       /* Check for valid size. */
> -       if (omap_gem_mmap_size(obj) < vma->vm_end - vma->vm_start) {
> -               ret = -EINVAL;
> -               goto out_unlock;
> -       }
> -
> -       if (!obj->dev->driver->gem_vm_ops) {
> -               ret = -EINVAL;
> -               goto out_unlock;
> -       }
> -
> -       vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
> -       vma->vm_ops = obj->dev->driver->gem_vm_ops;
> -       vma->vm_private_data = obj;
> -       vma->vm_page_prot =  pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
> -
> -       /* Take a ref for this mapping of the object, so that the fault
> -        * handler can dereference the mmap offset's pointer to the object.
> -        * This reference is cleaned up by the corresponding vm_close
> -        * (which should happen whether the vma was created by this call, or
> -        * by a vm_open due to mremap or partial unmap or whatever).
> -        */
> -       vma->vm_ops->open(vma);
> -
> -out_unlock:
> +       ret = drm_gem_mmap_obj(obj, omap_gem_mmap_size(obj), vma);
> +       if (ret < 0)
> +               return ret;
>
>         return omap_gem_mmap_obj(obj, vma);
>  }
> --
> 1.8.1.5
>
Laurent Pinchart June 4, 2013, 6:03 p.m. UTC | #2
Hi Rob,

On Tuesday 04 June 2013 07:33:42 Rob Clark wrote:
> On Mon, Jun 3, 2013 at 10:20 PM, Laurent Pinchart wrote:
> > The dma-buf mmap code was copied from the GEM mmap implementation.
> > Replace it with the new drm_gem_mmap_obj() function.
> > 
> > Signed-off-by: Laurent Pinchart
> > <laurent.pinchart+renesas@ideasonboard.com>
> 
> Reviewed-by: Rob Clark <robdclark@gmail.com>

Thanks. Any chance you would have time to review 3/5 to 5/5 ? :-)
diff mbox

Patch

diff --git a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
index be7cd97..3256693 100644
--- a/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
+++ b/drivers/gpu/drm/omapdrm/omap_gem_dmabuf.c
@@ -136,10 +136,6 @@  static void omap_gem_dmabuf_kunmap(struct dma_buf *buffer,
 	kunmap(pages[page_num]);
 }
 
-/*
- * TODO maybe we can split up drm_gem_mmap to avoid duplicating
- * some here.. or at least have a drm_dmabuf_mmap helper.
- */
 static int omap_gem_dmabuf_mmap(struct dma_buf *buffer,
 		struct vm_area_struct *vma)
 {
@@ -149,31 +145,9 @@  static int omap_gem_dmabuf_mmap(struct dma_buf *buffer,
 	if (WARN_ON(!obj->filp))
 		return -EINVAL;
 
-	/* Check for valid size. */
-	if (omap_gem_mmap_size(obj) < vma->vm_end - vma->vm_start) {
-		ret = -EINVAL;
-		goto out_unlock;
-	}
-
-	if (!obj->dev->driver->gem_vm_ops) {
-		ret = -EINVAL;
-		goto out_unlock;
-	}
-
-	vma->vm_flags |= VM_IO | VM_PFNMAP | VM_DONTEXPAND | VM_DONTDUMP;
-	vma->vm_ops = obj->dev->driver->gem_vm_ops;
-	vma->vm_private_data = obj;
-	vma->vm_page_prot =  pgprot_writecombine(vm_get_page_prot(vma->vm_flags));
-
-	/* Take a ref for this mapping of the object, so that the fault
-	 * handler can dereference the mmap offset's pointer to the object.
-	 * This reference is cleaned up by the corresponding vm_close
-	 * (which should happen whether the vma was created by this call, or
-	 * by a vm_open due to mremap or partial unmap or whatever).
-	 */
-	vma->vm_ops->open(vma);
-
-out_unlock:
+	ret = drm_gem_mmap_obj(obj, omap_gem_mmap_size(obj), vma);
+	if (ret < 0)
+		return ret;
 
 	return omap_gem_mmap_obj(obj, vma);
 }