On Tue, Jul 16, 2013 at 9:12 AM, Daniel Vetter <daniel.vetter@xxxxxxxx> wrote: > All the gem based kms drivers really want the same function to > destroy a dumb framebuffer backing storage object. > > So give it to them and roll it out in all drivers. > > This still leaves the option open for kms drivers which don't use GEM > for backing storage, but it does decently simplify matters for gem > drivers. > > Cc: Inki Dae <inki.dae@xxxxxxxxxxx> > Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Intel Graphics Development <intel-gfx@xxxxxxxxxxxxxxxxxxxxx> > Cc: Ben Skeggs <skeggsb@xxxxxxxxx> > Cc: Rob Clark <robdclark@xxxxxxxxx> > Cc: Alex Deucher <alexdeucher@xxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxx> > --- > drivers/gpu/drm/ast/ast_drv.c | 2 +- > drivers/gpu/drm/ast/ast_drv.h | 3 --- > drivers/gpu/drm/ast/ast_main.c | 7 ------- > drivers/gpu/drm/cirrus/cirrus_drv.c | 2 +- > drivers/gpu/drm/cirrus/cirrus_drv.h | 3 --- > drivers/gpu/drm/cirrus/cirrus_main.c | 7 ------- > drivers/gpu/drm/drm_gem.c | 14 ++++++++++++++ > drivers/gpu/drm/drm_gem_cma_helper.c | 10 ---------- > drivers/gpu/drm/exynos/exynos_drm_drv.c | 2 +- > drivers/gpu/drm/exynos/exynos_drm_gem.c | 20 -------------------- > drivers/gpu/drm/exynos/exynos_drm_gem.h | 9 --------- > drivers/gpu/drm/gma500/gem.c | 17 ----------------- > drivers/gpu/drm/gma500/psb_drv.c | 2 +- > drivers/gpu/drm/gma500/psb_drv.h | 2 -- > drivers/gpu/drm/i915/i915_drv.c | 2 +- > drivers/gpu/drm/i915/i915_drv.h | 2 -- > drivers/gpu/drm/i915/i915_gem.c | 7 ------- > drivers/gpu/drm/mgag200/mgag200_drv.c | 2 +- > drivers/gpu/drm/mgag200/mgag200_drv.h | 3 --- > drivers/gpu/drm/mgag200/mgag200_main.c | 7 ------- > drivers/gpu/drm/nouveau/nouveau_display.c | 7 ------- > drivers/gpu/drm/nouveau/nouveau_display.h | 2 -- > drivers/gpu/drm/nouveau/nouveau_drm.c | 2 +- > drivers/gpu/drm/omapdrm/omap_drv.c | 2 +- > drivers/gpu/drm/omapdrm/omap_drv.h | 2 -- > drivers/gpu/drm/omapdrm/omap_gem.c | 15 --------------- > drivers/gpu/drm/qxl/qxl_drv.c | 2 +- > drivers/gpu/drm/qxl/qxl_drv.h | 3 --- > drivers/gpu/drm/qxl/qxl_dumb.c | 7 ------- > drivers/gpu/drm/radeon/radeon.h | 3 --- > drivers/gpu/drm/radeon/radeon_drv.c | 5 +---- > drivers/gpu/drm/radeon/radeon_gem.c | 7 ------- > drivers/gpu/drm/rcar-du/rcar_du_drv.c | 2 +- > drivers/gpu/drm/shmobile/shmob_drm_drv.c | 2 +- > drivers/gpu/drm/tilcdc/tilcdc_drv.c | 2 +- > drivers/gpu/drm/udl/udl_drv.c | 2 +- > drivers/gpu/drm/udl/udl_drv.h | 2 -- > drivers/gpu/drm/udl/udl_gem.c | 6 ------ > drivers/gpu/host1x/drm/drm.c | 2 +- > drivers/gpu/host1x/drm/gem.c | 6 ------ > drivers/gpu/host1x/drm/gem.h | 2 -- > drivers/staging/imx-drm/imx-drm-core.c | 2 +- > include/drm/drmP.h | 3 +++ > include/drm/drm_gem_cma_helper.h | 8 -------- > 44 files changed, 33 insertions(+), 186 deletions(-) > > diff --git a/drivers/gpu/drm/ast/ast_drv.c b/drivers/gpu/drm/ast/ast_drv.c > index df0d0a0..a144fb0 100644 > --- a/drivers/gpu/drm/ast/ast_drv.c > +++ b/drivers/gpu/drm/ast/ast_drv.c > @@ -216,7 +216,7 @@ static struct drm_driver driver = { > .gem_free_object = ast_gem_free_object, > .dumb_create = ast_dumb_create, > .dumb_map_offset = ast_dumb_mmap_offset, > - .dumb_destroy = ast_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > > }; > > diff --git a/drivers/gpu/drm/ast/ast_drv.h b/drivers/gpu/drm/ast/ast_drv.h > index 622d4ae..796dbb2 100644 > --- a/drivers/gpu/drm/ast/ast_drv.h > +++ b/drivers/gpu/drm/ast/ast_drv.h > @@ -322,9 +322,6 @@ ast_bo(struct ttm_buffer_object *bo) > extern int ast_dumb_create(struct drm_file *file, > struct drm_device *dev, > struct drm_mode_create_dumb *args); > -extern int ast_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle); > > extern int ast_gem_init_object(struct drm_gem_object *obj); > extern void ast_gem_free_object(struct drm_gem_object *obj); > diff --git a/drivers/gpu/drm/ast/ast_main.c b/drivers/gpu/drm/ast/ast_main.c > index f60fd7b..0ef4228 100644 > --- a/drivers/gpu/drm/ast/ast_main.c > +++ b/drivers/gpu/drm/ast/ast_main.c > @@ -449,13 +449,6 @@ int ast_dumb_create(struct drm_file *file, > return 0; > } > > -int ast_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > - > int ast_gem_init_object(struct drm_gem_object *obj) > { > BUG(); > diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.c b/drivers/gpu/drm/cirrus/cirrus_drv.c > index 8ecb601..d35d99c 100644 > --- a/drivers/gpu/drm/cirrus/cirrus_drv.c > +++ b/drivers/gpu/drm/cirrus/cirrus_drv.c > @@ -102,7 +102,7 @@ static struct drm_driver driver = { > .gem_free_object = cirrus_gem_free_object, > .dumb_create = cirrus_dumb_create, > .dumb_map_offset = cirrus_dumb_mmap_offset, > - .dumb_destroy = cirrus_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > }; > > static struct pci_driver cirrus_pci_driver = { > diff --git a/drivers/gpu/drm/cirrus/cirrus_drv.h b/drivers/gpu/drm/cirrus/cirrus_drv.h > index bae5560..9b0bb91 100644 > --- a/drivers/gpu/drm/cirrus/cirrus_drv.h > +++ b/drivers/gpu/drm/cirrus/cirrus_drv.h > @@ -203,9 +203,6 @@ int cirrus_gem_create(struct drm_device *dev, > int cirrus_dumb_create(struct drm_file *file, > struct drm_device *dev, > struct drm_mode_create_dumb *args); > -int cirrus_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle); > > int cirrus_framebuffer_init(struct drm_device *dev, > struct cirrus_framebuffer *gfb, > diff --git a/drivers/gpu/drm/cirrus/cirrus_main.c b/drivers/gpu/drm/cirrus/cirrus_main.c > index 35cbae8..c1ed9e1 100644 > --- a/drivers/gpu/drm/cirrus/cirrus_main.c > +++ b/drivers/gpu/drm/cirrus/cirrus_main.c > @@ -255,13 +255,6 @@ int cirrus_dumb_create(struct drm_file *file, > return 0; > } > > -int cirrus_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > - > int cirrus_gem_init_object(struct drm_gem_object *obj) > { > BUG(); > diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c > index 3b5305c..1609a3d 100644 > --- a/drivers/gpu/drm/drm_gem.c > +++ b/drivers/gpu/drm/drm_gem.c > @@ -303,6 +303,20 @@ drm_gem_handle_delete(struct drm_file *filp, u32 handle) > EXPORT_SYMBOL(drm_gem_handle_delete); > > /** > + * drm_gem_dumb_destroy - dumb fb callback helper for gem based drivers > + * > + * This implements the ->dumb_destroy kms driver callback for drivers which use > + * gem to manage their backing storage. > + */ > +int drm_gem_dumb_destroy(struct drm_file *file, > + struct drm_device *dev, > + uint32_t handle) > +{ > + return drm_gem_handle_delete(file, handle); > +} > +EXPORT_SYMBOL(drm_gem_dumb_destroy); > + > +/** > * Create a handle for this object. This adds a handle reference > * to the object, which includes a regular reference count. Callers > * will likely want to dereference the object afterwards. > diff --git a/drivers/gpu/drm/drm_gem_cma_helper.c b/drivers/gpu/drm/drm_gem_cma_helper.c > index ece72a8..2e4840d 100644 > --- a/drivers/gpu/drm/drm_gem_cma_helper.c > +++ b/drivers/gpu/drm/drm_gem_cma_helper.c > @@ -286,16 +286,6 @@ int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma) > } > EXPORT_SYMBOL_GPL(drm_gem_cma_mmap); > > -/* > - * drm_gem_cma_dumb_destroy - (struct drm_driver)->dumb_destroy callback function > - */ > -int drm_gem_cma_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *drm, unsigned int handle) > -{ > - return drm_gem_handle_delete(file_priv, handle); > -} > -EXPORT_SYMBOL_GPL(drm_gem_cma_dumb_destroy); > - > #ifdef CONFIG_DEBUG_FS > void drm_gem_cma_describe(struct drm_gem_cma_object *cma_obj, struct seq_file *m) > { > diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c > index ca2729a..21fc28a 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c > @@ -271,7 +271,7 @@ static struct drm_driver exynos_drm_driver = { > .gem_vm_ops = &exynos_drm_gem_vm_ops, > .dumb_create = exynos_drm_gem_dumb_create, > .dumb_map_offset = exynos_drm_gem_dumb_map_offset, > - .dumb_destroy = exynos_drm_gem_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .prime_handle_to_fd = drm_gem_prime_handle_to_fd, > .prime_fd_to_handle = drm_gem_prime_fd_to_handle, > .gem_prime_export = exynos_dmabuf_prime_export, > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.c b/drivers/gpu/drm/exynos/exynos_drm_gem.c > index 16963ca..2ecd945 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.c > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.c > @@ -719,26 +719,6 @@ unlock: > return ret; > } > > -int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - unsigned int handle) > -{ > - int ret; > - > - /* > - * obj->refcount and obj->handle_count are decreased and > - * if both them are 0 then exynos_drm_gem_free_object() > - * would be called by callback to release resources. > - */ > - ret = drm_gem_handle_delete(file_priv, handle); > - if (ret < 0) { > - DRM_ERROR("failed to delete drm_gem_handle.\n"); > - return ret; > - } > - > - return 0; > -} > - > int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf) > { > struct drm_gem_object *obj = vma->vm_private_data; > diff --git a/drivers/gpu/drm/exynos/exynos_drm_gem.h b/drivers/gpu/drm/exynos/exynos_drm_gem.h > index 468766b..09555af 100644 > --- a/drivers/gpu/drm/exynos/exynos_drm_gem.h > +++ b/drivers/gpu/drm/exynos/exynos_drm_gem.h > @@ -151,15 +151,6 @@ int exynos_drm_gem_dumb_map_offset(struct drm_file *file_priv, > struct drm_device *dev, uint32_t handle, > uint64_t *offset); > > -/* > - * destroy memory region allocated. > - * - a gem handle and physical memory region pointed by a gem object > - * would be released by drm_gem_handle_delete(). > - */ > -int exynos_drm_gem_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - unsigned int handle); > - > /* page fault handler and mmap fault address(virtual) to physical memory. */ > int exynos_drm_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); > > diff --git a/drivers/gpu/drm/gma500/gem.c b/drivers/gpu/drm/gma500/gem.c > index eefd6cc..5ac9741 100644 > --- a/drivers/gpu/drm/gma500/gem.c > +++ b/drivers/gpu/drm/gma500/gem.c > @@ -165,23 +165,6 @@ int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev, > } > > /** > - * psb_gem_dumb_destroy - destroy a dumb buffer > - * @file: client file > - * @dev: our DRM device > - * @handle: the object handle > - * > - * Destroy a handle that was created via psb_gem_dumb_create, at least > - * we hope it was created that way. i915 seems to assume the caller > - * does the checking but that might be worth review ! FIXME > - */ > -int psb_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, > - uint32_t handle) > -{ > - /* No special work needed, drop the reference and see what falls out */ > - return drm_gem_handle_delete(file, handle); > -} > - > -/** > * psb_gem_fault - pagefault handler for GEM objects > * @vma: the VMA of the GEM object > * @vmf: fault detail > diff --git a/drivers/gpu/drm/gma500/psb_drv.c b/drivers/gpu/drm/gma500/psb_drv.c > index bddea58..ed06d5c 100644 > --- a/drivers/gpu/drm/gma500/psb_drv.c > +++ b/drivers/gpu/drm/gma500/psb_drv.c > @@ -652,7 +652,7 @@ static struct drm_driver driver = { > .gem_vm_ops = &psb_gem_vm_ops, > .dumb_create = psb_gem_dumb_create, > .dumb_map_offset = psb_gem_dumb_map_gtt, > - .dumb_destroy = psb_gem_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .fops = &psb_gem_fops, > .name = DRIVER_NAME, > .desc = DRIVER_DESC, > diff --git a/drivers/gpu/drm/gma500/psb_drv.h b/drivers/gpu/drm/gma500/psb_drv.h > index 6053b8a..984cacf 100644 > --- a/drivers/gpu/drm/gma500/psb_drv.h > +++ b/drivers/gpu/drm/gma500/psb_drv.h > @@ -838,8 +838,6 @@ extern int psb_gem_get_aperture(struct drm_device *dev, void *data, > struct drm_file *file); > extern int psb_gem_dumb_create(struct drm_file *file, struct drm_device *dev, > struct drm_mode_create_dumb *args); > -extern int psb_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, > - uint32_t handle); > extern int psb_gem_dumb_map_gtt(struct drm_file *file, struct drm_device *dev, > uint32_t handle, uint64_t *offset); > extern int psb_gem_fault(struct vm_area_struct *vma, struct vm_fault *vmf); > diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c > index b07362f..cca12db 100644 > --- a/drivers/gpu/drm/i915/i915_drv.c > +++ b/drivers/gpu/drm/i915/i915_drv.c > @@ -1163,7 +1163,7 @@ static struct drm_driver driver = { > > .dumb_create = i915_gem_dumb_create, > .dumb_map_offset = i915_gem_mmap_gtt, > - .dumb_destroy = i915_gem_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .ioctls = i915_ioctls, > .fops = &i915_driver_fops, > .name = DRIVER_NAME, > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > index cef35d3..5cb3e4d 100644 > --- a/drivers/gpu/drm/i915/i915_drv.h > +++ b/drivers/gpu/drm/i915/i915_drv.h > @@ -1732,8 +1732,6 @@ int i915_gem_dumb_create(struct drm_file *file_priv, > struct drm_mode_create_dumb *args); > int i915_gem_mmap_gtt(struct drm_file *file_priv, struct drm_device *dev, > uint32_t handle, uint64_t *offset); > -int i915_gem_dumb_destroy(struct drm_file *file_priv, struct drm_device *dev, > - uint32_t handle); > /** > * Returns true if seq1 is later than seq2. > */ > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 46bf7e3..10b8c43 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -246,13 +246,6 @@ i915_gem_dumb_create(struct drm_file *file, > args->size, &args->handle); > } > > -int i915_gem_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > - > /** > * Creates a new mm object and returns a handle to it. > */ > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.c b/drivers/gpu/drm/mgag200/mgag200_drv.c > index 122b571..bd91964 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_drv.c > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.c > @@ -104,7 +104,7 @@ static struct drm_driver driver = { > .gem_free_object = mgag200_gem_free_object, > .dumb_create = mgag200_dumb_create, > .dumb_map_offset = mgag200_dumb_mmap_offset, > - .dumb_destroy = mgag200_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > }; > > static struct pci_driver mgag200_pci_driver = { > diff --git a/drivers/gpu/drm/mgag200/mgag200_drv.h b/drivers/gpu/drm/mgag200/mgag200_drv.h > index 12e2499..baaae19 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_drv.h > +++ b/drivers/gpu/drm/mgag200/mgag200_drv.h > @@ -264,9 +264,6 @@ int mgag200_gem_init_object(struct drm_gem_object *obj); > int mgag200_dumb_create(struct drm_file *file, > struct drm_device *dev, > struct drm_mode_create_dumb *args); > -int mgag200_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle); > void mgag200_gem_free_object(struct drm_gem_object *obj); > int > mgag200_dumb_mmap_offset(struct drm_file *file, > diff --git a/drivers/gpu/drm/mgag200/mgag200_main.c b/drivers/gpu/drm/mgag200/mgag200_main.c > index 9fa5685..8d46c22 100644 > --- a/drivers/gpu/drm/mgag200/mgag200_main.c > +++ b/drivers/gpu/drm/mgag200/mgag200_main.c > @@ -310,13 +310,6 @@ int mgag200_dumb_create(struct drm_file *file, > return 0; > } > > -int mgag200_dumb_destroy(struct drm_file *file, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > - > int mgag200_gem_init_object(struct drm_gem_object *obj) > { > BUG(); > diff --git a/drivers/gpu/drm/nouveau/nouveau_display.c b/drivers/gpu/drm/nouveau/nouveau_display.c > index 708b2d1..e6dfaaa 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_display.c > +++ b/drivers/gpu/drm/nouveau/nouveau_display.c > @@ -681,13 +681,6 @@ nouveau_display_dumb_create(struct drm_file *file_priv, struct drm_device *dev, > } > > int > -nouveau_display_dumb_destroy(struct drm_file *file_priv, struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file_priv, handle); > -} > - > -int > nouveau_display_dumb_map_offset(struct drm_file *file_priv, > struct drm_device *dev, > uint32_t handle, uint64_t *poffset) > diff --git a/drivers/gpu/drm/nouveau/nouveau_display.h b/drivers/gpu/drm/nouveau/nouveau_display.h > index 1ea3e47..185e741 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_display.h > +++ b/drivers/gpu/drm/nouveau/nouveau_display.h > @@ -68,8 +68,6 @@ int nouveau_display_dumb_create(struct drm_file *, struct drm_device *, > struct drm_mode_create_dumb *args); > int nouveau_display_dumb_map_offset(struct drm_file *, struct drm_device *, > u32 handle, u64 *offset); > -int nouveau_display_dumb_destroy(struct drm_file *, struct drm_device *, > - u32 handle); > > void nouveau_hdmi_mode_set(struct drm_encoder *, struct drm_display_mode *); > > diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c b/drivers/gpu/drm/nouveau/nouveau_drm.c > index 218a4b5..c683bae 100644 > --- a/drivers/gpu/drm/nouveau/nouveau_drm.c > +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c > @@ -715,7 +715,7 @@ driver = { > > .dumb_create = nouveau_display_dumb_create, > .dumb_map_offset = nouveau_display_dumb_map_offset, > - .dumb_destroy = nouveau_display_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > > .name = DRIVER_NAME, > .desc = DRIVER_DESC, > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index 826586f..75886a3 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -618,7 +618,7 @@ static struct drm_driver omap_drm_driver = { > .gem_vm_ops = &omap_gem_vm_ops, > .dumb_create = omap_gem_dumb_create, > .dumb_map_offset = omap_gem_dumb_map_offset, > - .dumb_destroy = omap_gem_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .ioctls = ioctls, > .num_ioctls = DRM_OMAP_NUM_IOCTLS, > .fops = &omapdriver_fops, > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h > index 215a20d..fd13601 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.h > +++ b/drivers/gpu/drm/omapdrm/omap_drv.h > @@ -224,8 +224,6 @@ int omap_gem_init_object(struct drm_gem_object *obj); > void *omap_gem_vaddr(struct drm_gem_object *obj); > int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, > uint32_t handle, uint64_t *offset); > -int omap_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, > - uint32_t handle); > int omap_gem_dumb_create(struct drm_file *file, struct drm_device *dev, > struct drm_mode_create_dumb *args); > int omap_gem_mmap(struct file *filp, struct vm_area_struct *vma); > diff --git a/drivers/gpu/drm/omapdrm/omap_gem.c b/drivers/gpu/drm/omapdrm/omap_gem.c > index ebbdf41..9c30aaa 100644 > --- a/drivers/gpu/drm/omapdrm/omap_gem.c > +++ b/drivers/gpu/drm/omapdrm/omap_gem.c > @@ -629,21 +629,6 @@ int omap_gem_dumb_create(struct drm_file *file, struct drm_device *dev, > } > > /** > - * omap_gem_dumb_destroy - destroy a dumb buffer > - * @file: client file > - * @dev: our DRM device > - * @handle: the object handle > - * > - * Destroy a handle that was created via omap_gem_dumb_create. > - */ > -int omap_gem_dumb_destroy(struct drm_file *file, struct drm_device *dev, > - uint32_t handle) > -{ > - /* No special work needed, drop the reference and see what falls out */ > - return drm_gem_handle_delete(file, handle); > -} > - > -/** > * omap_gem_dumb_map - buffer mapping for dumb interface > * @file: our drm client file > * @dev: drm device > diff --git a/drivers/gpu/drm/qxl/qxl_drv.c b/drivers/gpu/drm/qxl/qxl_drv.c > index df0b577..48f2dfd 100644 > --- a/drivers/gpu/drm/qxl/qxl_drv.c > +++ b/drivers/gpu/drm/qxl/qxl_drv.c > @@ -221,7 +221,7 @@ static struct drm_driver qxl_driver = { > > .dumb_create = qxl_mode_dumb_create, > .dumb_map_offset = qxl_mode_dumb_mmap, > - .dumb_destroy = qxl_mode_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > #if defined(CONFIG_DEBUG_FS) > .debugfs_init = qxl_debugfs_init, > .debugfs_cleanup = qxl_debugfs_takedown, > diff --git a/drivers/gpu/drm/qxl/qxl_drv.h b/drivers/gpu/drm/qxl/qxl_drv.h > index aacb791..57cb7a8 100644 > --- a/drivers/gpu/drm/qxl/qxl_drv.h > +++ b/drivers/gpu/drm/qxl/qxl_drv.h > @@ -418,9 +418,6 @@ int qxl_bo_kmap(struct qxl_bo *bo, void **ptr); > int qxl_mode_dumb_create(struct drm_file *file_priv, > struct drm_device *dev, > struct drm_mode_create_dumb *args); > -int qxl_mode_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - uint32_t handle); > int qxl_mode_dumb_mmap(struct drm_file *filp, > struct drm_device *dev, > uint32_t handle, uint64_t *offset_p); > diff --git a/drivers/gpu/drm/qxl/qxl_dumb.c b/drivers/gpu/drm/qxl/qxl_dumb.c > index 847c4ee..d34bb41 100644 > --- a/drivers/gpu/drm/qxl/qxl_dumb.c > +++ b/drivers/gpu/drm/qxl/qxl_dumb.c > @@ -68,13 +68,6 @@ int qxl_mode_dumb_create(struct drm_file *file_priv, > return 0; > } > > -int qxl_mode_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file_priv, handle); > -} > - > int qxl_mode_dumb_mmap(struct drm_file *file_priv, > struct drm_device *dev, > uint32_t handle, uint64_t *offset_p) > diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h > index 9b7025d..39e5be8 100644 > --- a/drivers/gpu/drm/radeon/radeon.h > +++ b/drivers/gpu/drm/radeon/radeon.h > @@ -490,9 +490,6 @@ int radeon_mode_dumb_create(struct drm_file *file_priv, > int radeon_mode_dumb_mmap(struct drm_file *filp, > struct drm_device *dev, > uint32_t handle, uint64_t *offset_p); > -int radeon_mode_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - uint32_t handle); > > /* > * Semaphores. > diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c > index e5419b3..f01a218 100644 > --- a/drivers/gpu/drm/radeon/radeon_drv.c > +++ b/drivers/gpu/drm/radeon/radeon_drv.c > @@ -120,9 +120,6 @@ int radeon_mode_dumb_mmap(struct drm_file *filp, > int radeon_mode_dumb_create(struct drm_file *file_priv, > struct drm_device *dev, > struct drm_mode_create_dumb *args); > -int radeon_mode_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - uint32_t handle); > struct sg_table *radeon_gem_prime_get_sg_table(struct drm_gem_object *obj); > struct drm_gem_object *radeon_gem_prime_import_sg_table(struct drm_device *dev, > size_t size, > @@ -420,7 +417,7 @@ static struct drm_driver kms_driver = { > .dma_ioctl = radeon_dma_ioctl_kms, > .dumb_create = radeon_mode_dumb_create, > .dumb_map_offset = radeon_mode_dumb_mmap, > - .dumb_destroy = radeon_mode_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .fops = &radeon_driver_kms_fops, > > .prime_handle_to_fd = drm_gem_prime_handle_to_fd, > diff --git a/drivers/gpu/drm/radeon/radeon_gem.c b/drivers/gpu/drm/radeon/radeon_gem.c > index aa79603..dce99c8 100644 > --- a/drivers/gpu/drm/radeon/radeon_gem.c > +++ b/drivers/gpu/drm/radeon/radeon_gem.c > @@ -570,13 +570,6 @@ int radeon_mode_dumb_create(struct drm_file *file_priv, > return 0; > } > > -int radeon_mode_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file_priv, handle); > -} > - > #if defined(CONFIG_DEBUG_FS) > static int radeon_debugfs_gem_info(struct seq_file *m, void *data) > { > diff --git a/drivers/gpu/drm/rcar-du/rcar_du_drv.c b/drivers/gpu/drm/rcar-du/rcar_du_drv.c > index ff82877..3ebd419 100644 > --- a/drivers/gpu/drm/rcar-du/rcar_du_drv.c > +++ b/drivers/gpu/drm/rcar-du/rcar_du_drv.c > @@ -253,7 +253,7 @@ static struct drm_driver rcar_du_driver = { > .gem_prime_export = drm_gem_cma_dmabuf_export, > .dumb_create = rcar_du_dumb_create, > .dumb_map_offset = drm_gem_cma_dumb_map_offset, > - .dumb_destroy = drm_gem_cma_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .fops = &rcar_du_fops, > .name = "rcar-du", > .desc = "Renesas R-Car Display Unit", > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c b/drivers/gpu/drm/shmobile/shmob_drm_drv.c > index edc1018..7e1843f 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c > @@ -280,7 +280,7 @@ static struct drm_driver shmob_drm_driver = { > .gem_prime_export = drm_gem_cma_dmabuf_export, > .dumb_create = drm_gem_cma_dumb_create, > .dumb_map_offset = drm_gem_cma_dumb_map_offset, > - .dumb_destroy = drm_gem_cma_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .fops = &shmob_drm_fops, > .name = "shmob-drm", > .desc = "Renesas SH Mobile DRM", > diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > index 40b71da..14801c2 100644 > --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c > +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c > @@ -519,7 +519,7 @@ static struct drm_driver tilcdc_driver = { > .gem_vm_ops = &drm_gem_cma_vm_ops, > .dumb_create = drm_gem_cma_dumb_create, > .dumb_map_offset = drm_gem_cma_dumb_map_offset, > - .dumb_destroy = drm_gem_cma_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > #ifdef CONFIG_DEBUG_FS > .debugfs_init = tilcdc_debugfs_init, > .debugfs_cleanup = tilcdc_debugfs_cleanup, > diff --git a/drivers/gpu/drm/udl/udl_drv.c b/drivers/gpu/drm/udl/udl_drv.c > index c0770db..bb0af58 100644 > --- a/drivers/gpu/drm/udl/udl_drv.c > +++ b/drivers/gpu/drm/udl/udl_drv.c > @@ -84,7 +84,7 @@ static struct drm_driver driver = { > > .dumb_create = udl_dumb_create, > .dumb_map_offset = udl_gem_mmap, > - .dumb_destroy = udl_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > .fops = &udl_driver_fops, > > .prime_fd_to_handle = drm_gem_prime_fd_to_handle, > diff --git a/drivers/gpu/drm/udl/udl_drv.h b/drivers/gpu/drm/udl/udl_drv.h > index cc6d90f..56aec94 100644 > --- a/drivers/gpu/drm/udl/udl_drv.h > +++ b/drivers/gpu/drm/udl/udl_drv.h > @@ -114,8 +114,6 @@ int udl_dumb_create(struct drm_file *file_priv, > struct drm_mode_create_dumb *args); > int udl_gem_mmap(struct drm_file *file_priv, struct drm_device *dev, > uint32_t handle, uint64_t *offset); > -int udl_dumb_destroy(struct drm_file *file_priv, struct drm_device *dev, > - uint32_t handle); > > int udl_gem_init_object(struct drm_gem_object *obj); > void udl_gem_free_object(struct drm_gem_object *gem_obj); > diff --git a/drivers/gpu/drm/udl/udl_gem.c b/drivers/gpu/drm/udl/udl_gem.c > index ef034fa..c82c84a 100644 > --- a/drivers/gpu/drm/udl/udl_gem.c > +++ b/drivers/gpu/drm/udl/udl_gem.c > @@ -66,12 +66,6 @@ int udl_dumb_create(struct drm_file *file, > args->size, &args->handle); > } > > -int udl_dumb_destroy(struct drm_file *file, struct drm_device *dev, > - uint32_t handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > - > int udl_drm_gem_mmap(struct file *filp, struct vm_area_struct *vma) > { > int ret; > diff --git a/drivers/gpu/host1x/drm/drm.c b/drivers/gpu/host1x/drm/drm.c > index e184b00..87aa09b 100644 > --- a/drivers/gpu/host1x/drm/drm.c > +++ b/drivers/gpu/host1x/drm/drm.c > @@ -633,7 +633,7 @@ struct drm_driver tegra_drm_driver = { > .gem_vm_ops = &tegra_bo_vm_ops, > .dumb_create = tegra_bo_dumb_create, > .dumb_map_offset = tegra_bo_dumb_map_offset, > - .dumb_destroy = tegra_bo_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > > .ioctls = tegra_drm_ioctls, > .num_ioctls = ARRAY_SIZE(tegra_drm_ioctls), > diff --git a/drivers/gpu/host1x/drm/gem.c b/drivers/gpu/host1x/drm/gem.c > index c5e9a9b..e4fbd78 100644 > --- a/drivers/gpu/host1x/drm/gem.c > +++ b/drivers/gpu/host1x/drm/gem.c > @@ -262,9 +262,3 @@ int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma) > > return ret; > } > - > -int tegra_bo_dumb_destroy(struct drm_file *file, struct drm_device *drm, > - unsigned int handle) > -{ > - return drm_gem_handle_delete(file, handle); > -} > diff --git a/drivers/gpu/host1x/drm/gem.h b/drivers/gpu/host1x/drm/gem.h > index 34de2b4..2e93b03 100644 > --- a/drivers/gpu/host1x/drm/gem.h > +++ b/drivers/gpu/host1x/drm/gem.h > @@ -49,8 +49,6 @@ int tegra_bo_dumb_create(struct drm_file *file, struct drm_device *drm, > struct drm_mode_create_dumb *args); > int tegra_bo_dumb_map_offset(struct drm_file *file, struct drm_device *drm, > uint32_t handle, uint64_t *offset); > -int tegra_bo_dumb_destroy(struct drm_file *file, struct drm_device *drm, > - unsigned int handle); > > int tegra_drm_mmap(struct file *file, struct vm_area_struct *vma); > > diff --git a/drivers/staging/imx-drm/imx-drm-core.c b/drivers/staging/imx-drm/imx-drm-core.c > index 6455305..9b16b56 100644 > --- a/drivers/staging/imx-drm/imx-drm-core.c > +++ b/drivers/staging/imx-drm/imx-drm-core.c > @@ -800,7 +800,7 @@ static struct drm_driver imx_drm_driver = { > .gem_vm_ops = &drm_gem_cma_vm_ops, > .dumb_create = drm_gem_cma_dumb_create, > .dumb_map_offset = drm_gem_cma_dumb_map_offset, > - .dumb_destroy = drm_gem_cma_dumb_destroy, > + .dumb_destroy = drm_gem_dumb_destroy, > > .get_vblank_counter = drm_vblank_count, > .enable_vblank = imx_drm_enable_vblank, > diff --git a/include/drm/drmP.h b/include/drm/drmP.h > index 1da1ca2..4d7ea3d 100644 > --- a/include/drm/drmP.h > +++ b/include/drm/drmP.h > @@ -1670,6 +1670,9 @@ int drm_gem_handle_create(struct drm_file *file_priv, > u32 *handlep); > int drm_gem_handle_delete(struct drm_file *filp, u32 handle); > > +int drm_gem_dumb_destroy(struct drm_file *file, > + struct drm_device *dev, > + uint32_t handle); > > void drm_gem_free_mmap_offset(struct drm_gem_object *obj); > int drm_gem_create_mmap_offset(struct drm_gem_object *obj); > diff --git a/include/drm/drm_gem_cma_helper.h b/include/drm/drm_gem_cma_helper.h > index c34f27f..89b4d7d 100644 > --- a/include/drm/drm_gem_cma_helper.h > +++ b/include/drm/drm_gem_cma_helper.h > @@ -30,14 +30,6 @@ int drm_gem_cma_dumb_map_offset(struct drm_file *file_priv, > /* set vm_flags and we can change the vm attribute to other one at here. */ > int drm_gem_cma_mmap(struct file *filp, struct vm_area_struct *vma); > > -/* > - * destroy memory region allocated. > - * - a gem handle and physical memory region pointed by a gem object > - * would be released by drm_gem_handle_delete(). > - */ > -int drm_gem_cma_dumb_destroy(struct drm_file *file_priv, > - struct drm_device *drm, unsigned int handle); > - > /* allocate physical memory. */ > struct drm_gem_cma_object *drm_gem_cma_create(struct drm_device *drm, > unsigned int size); > -- > 1.8.3.2 Looks good Acked-by: Patrik Jakobsson <patrik.r.jakobsson@xxxxxxxxx> Thanks Patrik _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel