[PATCH v2 4/5] drm: GEM CMA: Split object mapping into GEM mapping and CMA mapping
Rob Clark
robdclark at gmail.com
Tue Jun 4 13:19:28 PDT 2013
On Mon, Jun 3, 2013 at 10:20 PM, Laurent Pinchart
<laurent.pinchart+renesas at ideasonboard.com> wrote:
> The CMA-specific mapping code will be used to implement dma-buf mmap
> support.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
Signed-off-by: Rob Clark <robdclark at gmail.com>
> ---
> drivers/gpu/drm/drm_gem_cma_helper.c | 22 +++++++++++++++-------
> 1 file changed, 15 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c
> index 8cce330..7a4db4e 100644
> --- a/drivers/gpu/drm/drm_gem_cma_helper.c
> +++ b/drivers/gpu/drm/drm_gem_cma_helper.c
> @@ -228,13 +228,26 @@ const struct vm_operations_struct drm_gem_cma_vm_ops = {
> };
> EXPORT_SYMBOL_GPL(drm_gem_cma_vm_ops);
>
> +static int drm_gem_cma_mmap_obj(struct drm_gem_cma_object *cma_obj,
> + struct vm_area_struct *vma)
> +{
> + int ret;
> +
> + ret = remap_pfn_range(vma, vma->vm_start, cma_obj->paddr >> PAGE_SHIFT,
> + vma->vm_end - vma->vm_start, vma->vm_page_prot);
> + if (ret)
> + drm_gem_vm_close(vma);
> +
> + return ret;
> +}
> +
> /*
> * drm_gem_cma_mmap - (struct file_operation)->mmap callback function
> */
> int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma)
> {
> - struct drm_gem_object *gem_obj;
> struct drm_gem_cma_object *cma_obj;
> + struct drm_gem_object *gem_obj;
> int ret;
>
> ret = drm_gem_mmap(filp, vma);
> @@ -244,12 +257,7 @@ int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma)
> gem_obj = vma->vm_private_data;
> cma_obj = to_drm_gem_cma_obj(gem_obj);
>
> - ret = remap_pfn_range(vma, vma->vm_start, cma_obj->paddr >> PAGE_SHIFT,
> - vma->vm_end - vma->vm_start, vma->vm_page_prot);
> - if (ret)
> - drm_gem_vm_close(vma);
> -
> - return ret;
> + return drm_gem_cma_mmap_obj(cma_obj, vma);
> }
> EXPORT_SYMBOL_GPL(drm_gem_cma_mmap);
>
> --
> 1.8.1.5
>
More information about the dri-devel
mailing list