Hi Noralf, Thank you for the patch. On Sunday 23 Jul 2017 21:16:17 Noralf Trønnes wrote: > Add a common drm_driver.dumb_map_offset function for GEM backed drivers. > > Signed-off-by: Noralf Trønnes <noralf@xxxxxxxxxxx> Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/drm_gem.c | 35 +++++++++++++++++++++++++++++++++++ > include/drm/drm_gem.h | 2 ++ > 2 files changed, 37 insertions(+) > > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c > index 5df028a..a8d396b 100644 > --- a/drivers/gpu/drm/drm_gem.c > +++ b/drivers/gpu/drm/drm_gem.c > @@ -311,6 +311,41 @@ drm_gem_handle_delete(struct drm_file *filp, u32 > handle) EXPORT_SYMBOL(drm_gem_handle_delete); > > /** > + * drm_gem_dumb_map_offset - return the fake mmap offset for a gem object > + * @file: drm file-private structure containing the gem object > + * @dev: corresponding drm_device > + * @handle: gem object handle > + * @offset: return location for the fake mmap offset > + * > + * This implements the &drm_driver.dumb_map_offset kms driver callback for > + * drivers which use gem to manage their backing storage. > + * > + * Returns: > + * 0 on success or a negative error code on failure. > + */ > +int drm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, > + u32 handle, u64 *offset) > +{ > + struct drm_gem_object *obj; > + int ret; > + > + obj = drm_gem_object_lookup(file, handle); > + if (!obj) > + return -ENOENT; > + > + ret = drm_gem_create_mmap_offset(obj); > + if (ret) > + goto out; > + > + *offset = drm_vma_node_offset_addr(&obj->vma_node); > +out: > + drm_gem_object_put_unlocked(obj); > + > + return ret; > +} > +EXPORT_SYMBOL_GPL(drm_gem_dumb_map_offset); > + > +/** > * drm_gem_dumb_destroy - dumb fb callback helper for gem based drivers > * @file: drm file-private structure to remove the dumb handle from > * @dev: corresponding drm_device > diff --git a/include/drm/drm_gem.h b/include/drm/drm_gem.h > index 4a9d231..9c55c2a 100644 > --- a/include/drm/drm_gem.h > +++ b/include/drm/drm_gem.h > @@ -302,6 +302,8 @@ void drm_gem_put_pages(struct drm_gem_object *obj, > struct page **pages, bool dirty, bool accessed); > > struct drm_gem_object *drm_gem_object_lookup(struct drm_file *filp, u32 > handle); +int drm_gem_dumb_map_offset(struct drm_file *file, struct > drm_device *dev, + u32 handle, u64 *offset); > int drm_gem_dumb_destroy(struct drm_file *file, > struct drm_device *dev, > uint32_t handle); -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel