Message ID | 1370312422-25027-5-git-send-email-laurent.pinchart+renesas@ideasonboard.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Mon, Jun 3, 2013 at 10:20 PM, Laurent Pinchart <laurent.pinchart+renesas@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@ideasonboard.com> Signed-off-by: Rob Clark <robdclark@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 >
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);
The CMA-specific mapping code will be used to implement dma-buf mmap support. Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> --- drivers/gpu/drm/drm_gem_cma_helper.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)