[PATCH 13/20] drm/gem: create drm_gem_dumb_destroy
Rob Clark
robdclark at gmail.com
Mon Jul 22 15:52:22 PDT 2013
On Tue, Jul 16, 2013 at 3:12 AM, Daniel Vetter <daniel.vetter at ffwll.ch> 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 at samsung.com>
> Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Cc: Intel Graphics Development <intel-gfx at lists.freedesktop.org>
> Cc: Ben Skeggs <skeggsb at gmail.com>
> Cc: Rob Clark <robdclark at gmail.com>
> Cc: Alex Deucher <alexdeucher at gmail.com>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Reviewed-by: Rob Clark <robdclark at gmail.com>
> ---
> 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
>
More information about the dri-devel
mailing list