[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