drm: Remove struct drm_driver.gem_prime_mmap
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 13 Jun 2023 14:51:33 +0000 (16:51 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 19 Jun 2023 11:56:40 +0000 (13:56 +0200)
All drivers initialize this field with drm_gem_prime_mmap(). Call
the function directly and remove the field. Simplifies the code and
resolves a long-standing TODO item.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613150441.17720-3-tzimmermann@suse.de
26 files changed:
Documentation/gpu/todo.rst
drivers/accel/ivpu/ivpu_drv.c
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
drivers/gpu/drm/drm_fbdev_dma.c
drivers/gpu/drm/drm_prime.c
drivers/gpu/drm/etnaviv/etnaviv_drv.c
drivers/gpu/drm/exynos/exynos_drm_drv.c
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
drivers/gpu/drm/lima/lima_drv.c
drivers/gpu/drm/mediatek/mtk_drm_drv.c
drivers/gpu/drm/msm/msm_drv.c
drivers/gpu/drm/msm/msm_drv.h
drivers/gpu/drm/msm/msm_gem_prime.c
drivers/gpu/drm/nouveau/nouveau_drm.c
drivers/gpu/drm/panfrost/panfrost_drv.c
drivers/gpu/drm/pl111/pl111_drv.c
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/rcar-du/rcar_du_drv.c
drivers/gpu/drm/rockchip/rockchip_drm_drv.c
drivers/gpu/drm/v3d/v3d_drv.c
drivers/gpu/drm/virtio/virtgpu_drv.c
drivers/gpu/drm/xen/xen_drm_front.c
include/drm/drm_drv.h
include/drm/drm_gem_dma_helper.h
include/drm/drm_gem_shmem_helper.h
include/drm/drm_gem_vram_helper.h

index 68bdafa0284f55f6c8933c8bf4ae6b0c5618dca5..ca1efad8c89c3771fe75ffef5cd4430d6197cdd0 100644 (file)
@@ -319,15 +319,6 @@ Contact: Daniel Vetter, Noralf Tronnes
 
 Level: Advanced
 
-struct drm_gem_object_funcs
----------------------------
-
-GEM objects can now have a function table instead of having the callbacks on the
-DRM driver struct. This is now the preferred way. Callbacks in drivers have been
-converted, except for struct drm_driver.gem_prime_mmap.
-
-Level: Intermediate
-
 connector register/unregister fixes
 -----------------------------------
 
index 2df7643b843d5f8142e9e0ef3ac791b77093c309..9f2b9fdcc54984c8b41ca7889eecd825721b7a4b 100644 (file)
@@ -376,7 +376,6 @@ static const struct drm_driver driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import = ivpu_gem_prime_import,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
        .ioctls = ivpu_drm_ioctls,
        .num_ioctls = ARRAY_SIZE(ivpu_drm_ioctls),
index c9a41c997c6c777282596d5b0a6e0113c394448b..7681f79f462eb7c97ef6eb4e55001d7aca3dc954 100644 (file)
@@ -2809,7 +2809,6 @@ static const struct drm_driver amdgpu_kms_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import = amdgpu_gem_prime_import,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
        .name = DRIVER_NAME,
        .desc = DRIVER_DESC,
index d86773fa8ab00f49380a8d008745d34acd16d89f..8217f1ddc0075b4ecfc52216773d4c11d4e4e647 100644 (file)
@@ -54,12 +54,8 @@ static void drm_fbdev_dma_fb_destroy(struct fb_info *info)
 static int drm_fbdev_dma_fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
 {
        struct drm_fb_helper *fb_helper = info->par;
-       struct drm_device *dev = fb_helper->dev;
-
-       if (drm_WARN_ON_ONCE(dev, !fb_helper->dev->driver->gem_prime_mmap))
-               return -ENODEV;
 
-       return fb_helper->dev->driver->gem_prime_mmap(fb_helper->buffer->gem, vma);
+       return drm_gem_prime_mmap(fb_helper->buffer->gem, vma);
 }
 
 static const struct fb_ops drm_fbdev_dma_fb_ops = {
index d29dafce9bb0a38bab42574e1293fd2152c31df7..6bcf324ef81c964da738e769e5d7912030ff2524 100644 (file)
@@ -715,8 +715,6 @@ EXPORT_SYMBOL(drm_gem_dmabuf_vunmap);
  * the same codepath that is used for regular GEM buffer mapping on the DRM fd.
  * The fake GEM offset is added to vma->vm_pgoff and &drm_driver->fops->mmap is
  * called to set up the mapping.
- *
- * Drivers can use this as their &drm_driver.gem_prime_mmap callback.
  */
 int drm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
 {
@@ -772,25 +770,17 @@ EXPORT_SYMBOL(drm_gem_prime_mmap);
  * @vma: virtual address range
  *
  * Provides memory mapping for the buffer. This can be used as the
- * &dma_buf_ops.mmap callback. It just forwards to &drm_driver.gem_prime_mmap,
- * which should be set to drm_gem_prime_mmap().
- *
- * FIXME: There's really no point to this wrapper, drivers which need anything
- * else but drm_gem_prime_mmap can roll their own &dma_buf_ops.mmap callback.
+ * &dma_buf_ops.mmap callback. It just forwards to drm_gem_prime_mmap().
  *
  * Returns 0 on success or a negative error code on failure.
  */
 int drm_gem_dmabuf_mmap(struct dma_buf *dma_buf, struct vm_area_struct *vma)
 {
        struct drm_gem_object *obj = dma_buf->priv;
-       struct drm_device *dev = obj->dev;
 
        dma_resv_assert_held(dma_buf->resv);
 
-       if (!dev->driver->gem_prime_mmap)
-               return -ENOSYS;
-
-       return dev->driver->gem_prime_mmap(obj, vma);
+       return drm_gem_prime_mmap(obj, vma);
 }
 EXPORT_SYMBOL(drm_gem_dmabuf_mmap);
 
index 31a7f59ccb49ee7c552e58991c444dd8754e8582..00223a87490922f17e7a5a4d9f543a8984edb3d2 100644 (file)
@@ -484,7 +484,6 @@ static const struct drm_driver etnaviv_drm_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = etnaviv_gem_prime_import_sg_table,
-       .gem_prime_mmap     = drm_gem_prime_mmap,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init       = etnaviv_debugfs_init,
 #endif
index 6b73fb7a83c3c98901a291dd7856b6fe7d2d6e87..c9e3c88fb329ccc50157be1305a58f95c5407eb0 100644 (file)
@@ -113,7 +113,6 @@ static const struct drm_driver exynos_drm_driver = {
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
        .gem_prime_import       = exynos_drm_gem_prime_import,
        .gem_prime_import_sg_table      = exynos_drm_gem_prime_import_sg_table,
-       .gem_prime_mmap         = drm_gem_prime_mmap,
        .ioctls                 = exynos_ioctls,
        .num_ioctls             = ARRAY_SIZE(exynos_ioctls),
        .fops                   = &exynos_drm_driver_fops,
index 0c4aa4d9b0a77cfed44b212fa6212966ea3cb42a..8a98fa276e8a9d9d21d05ed087ac51a1da5d3cfa 100644 (file)
@@ -63,7 +63,6 @@ static const struct drm_driver hibmc_driver = {
        .debugfs_init           = drm_vram_mm_debugfs_init,
        .dumb_create            = hibmc_dumb_create,
        .dumb_map_offset        = drm_gem_ttm_dumb_map_offset,
-       .gem_prime_mmap         = drm_gem_prime_mmap,
 };
 
 static int __maybe_unused hibmc_pm_suspend(struct device *dev)
index e8566211e9fa1f299fc3e8849abe0f5c996845aa..65c31dc38049aca69a57c091728cfcddca789f5f 100644 (file)
@@ -279,7 +279,6 @@ static const struct drm_driver lima_drm_driver = {
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = drm_gem_shmem_prime_import_sg_table,
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 };
 
 struct lima_block_reader {
index 6dcb4ba2466c0d07d01925694a6f34ca8d88632c..5693bb8d29ce44e88ed791cb870a3f81020bafd1 100644 (file)
@@ -560,7 +560,6 @@ static const struct drm_driver mtk_drm_driver = {
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import = mtk_drm_gem_prime_import,
        .gem_prime_import_sg_table = mtk_gem_prime_import_sg_table,
-       .gem_prime_mmap = drm_gem_prime_mmap,
        .fops = &mtk_drm_fops,
 
        .name = DRIVER_NAME,
index 58264ff2c4b1987fea6d3c6c01cac3c4693f73aa..0023a6d56804dda6f3b9c279b3fe7f9b692eec42 100644 (file)
@@ -1089,7 +1089,6 @@ static const struct drm_driver msm_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = msm_gem_prime_import_sg_table,
-       .gem_prime_mmap     = msm_gem_prime_mmap,
 #ifdef CONFIG_DEBUG_FS
        .debugfs_init       = msm_debugfs_init,
 #endif
index e13a8cbd61c95004082c2298208cb9855e20458c..44c9e06f2dffa9ab1a96dd52f549aa2b86b17245 100644 (file)
@@ -282,7 +282,6 @@ unsigned long msm_gem_shrinker_shrink(struct drm_device *dev, unsigned long nr_t
 void msm_gem_shrinker_init(struct drm_device *dev);
 void msm_gem_shrinker_cleanup(struct drm_device *dev);
 
-int msm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma);
 struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj);
 int msm_gem_prime_vmap(struct drm_gem_object *obj, struct iosys_map *map);
 void msm_gem_prime_vunmap(struct drm_gem_object *obj, struct iosys_map *map);
index 2c846afe049e4474fc23258ef1990d38135cca2d..5f68e31a3e4e1cbeed95bfde138711c0fc9c9759 100644 (file)
 #include "msm_drv.h"
 #include "msm_gem.h"
 
-int msm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
-{
-       return drm_gem_prime_mmap(obj, vma);
-}
-
 struct sg_table *msm_gem_prime_get_sg_table(struct drm_gem_object *obj)
 {
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
index cc7c5b4a05fd875413593686ff42470017e8e50f..4199b8294e6e88984fb264687f8432a7ad5e3075 100644 (file)
@@ -1237,7 +1237,6 @@ driver_stub = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = nouveau_gem_prime_import_sg_table,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
        .dumb_create = nouveau_display_dumb_create,
        .dumb_map_offset = drm_gem_ttm_dumb_map_offset,
index 19f8cff52e533c513d6e2ea8caa8d11774fa8c5d..d2916bf4354736ea322c1a9ed77f52b129703e1c 100644 (file)
@@ -542,7 +542,6 @@ static const struct drm_driver panfrost_drm_driver = {
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = panfrost_gem_prime_import_sg_table,
-       .gem_prime_mmap         = drm_gem_prime_mmap,
 };
 
 static int panfrost_probe(struct platform_device *pdev)
index 4b2a9e9753f6da9cf1bbab087ff7533a6c0ac01b..512fc4cfbbf061b8de4a07279bef74fc1ae9702e 100644 (file)
@@ -227,7 +227,6 @@ static const struct drm_driver pl111_drm_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = pl111_gem_import_sg_table,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
 #if defined(CONFIG_DEBUG_FS)
        .debugfs_init = pl111_debugfs_init,
index e4374814f0ef6f36399a4b0647e47d467e4ca2bb..cf1b960c4200c9906dff32a790582a39bacc47db 100644 (file)
@@ -607,7 +607,6 @@ static const struct drm_driver kms_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = radeon_gem_prime_import_sg_table,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
        .name = DRIVER_NAME,
        .desc = DRIVER_DESC,
index 4a6bf50b5c4981649424db7717a1e982bc691374..602d78eba3076930e2f62535cf7acf29636c6fcf 100644 (file)
@@ -651,7 +651,6 @@ static const struct drm_driver rcar_du_driver = {
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = rcar_du_gem_prime_import_sg_table,
-       .gem_prime_mmap         = drm_gem_prime_mmap,
        .fops                   = &rcar_du_fops,
        .name                   = "rcar-du",
        .desc                   = "Renesas R-Car Display Unit",
index c0ebfdf56a7115b8933137116409ae07831be226..b8cf89f0cc56615cd5250eb0456400f2de1c5588 100644 (file)
@@ -227,7 +227,6 @@ static const struct drm_driver rockchip_drm_driver = {
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table      = rockchip_gem_prime_import_sg_table,
-       .gem_prime_mmap         = drm_gem_prime_mmap,
        .fops                   = &rockchip_drm_driver_fops,
        .name   = DRIVER_NAME,
        .desc   = DRIVER_DESC,
index 71f9fdde24b41dd7f61bf233f5c629ca34df9ce4..845a36e36450d51d4f3ffdd5eca4ac330f432ae7 100644 (file)
@@ -174,7 +174,6 @@ static const struct drm_driver v3d_drm_driver = {
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = v3d_prime_import_sg_table,
-       .gem_prime_mmap = drm_gem_prime_mmap,
 
        .ioctls = v3d_drm_ioctls,
        .num_ioctls = ARRAY_SIZE(v3d_drm_ioctls),
index add075681e18f80b3b42afc6cb31ff38e8fa937b..91ace7a44f2a62b76049e46ec9d970f22842146a 100644 (file)
@@ -188,7 +188,6 @@ static const struct drm_driver driver = {
 #endif
        .prime_handle_to_fd = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle = drm_gem_prime_fd_to_handle,
-       .gem_prime_mmap = drm_gem_prime_mmap,
        .gem_prime_import = virtgpu_gem_prime_import,
        .gem_prime_import_sg_table = virtgpu_gem_prime_import_sg_table,
 
index 90996c108146dbf2e12bb945af1099bc710c288b..62c3c13b3a1750c77fbb4cac3c2cbb60b8010860 100644 (file)
@@ -477,7 +477,6 @@ static const struct drm_driver xen_drm_driver = {
        .prime_handle_to_fd        = drm_gem_prime_handle_to_fd,
        .prime_fd_to_handle        = drm_gem_prime_fd_to_handle,
        .gem_prime_import_sg_table = xen_drm_front_gem_import_sg_table,
-       .gem_prime_mmap            = drm_gem_prime_mmap,
        .dumb_create               = xen_drm_drv_dumb_create,
        .fops                      = &xen_drm_dev_fops,
        .name                      = "xendrm-du",
index 89e2706cac5611a68afa345056d2b3ebf0412f55..870278ecd8ba9cb47aa96f4313c01ca271ba446a 100644 (file)
@@ -343,20 +343,6 @@ struct drm_driver {
                                struct drm_device *dev,
                                struct dma_buf_attachment *attach,
                                struct sg_table *sgt);
-       /**
-        * @gem_prime_mmap:
-        *
-        * mmap hook for GEM drivers, used to implement dma-buf mmap in the
-        * PRIME helpers.
-        *
-        * This hook only exists for historical reasons. Drivers must use
-        * drm_gem_prime_mmap() to implement it.
-        *
-        * FIXME: Convert all drivers to implement mmap in struct
-        * &drm_gem_object_funcs and inline drm_gem_prime_mmap() into
-        * its callers. This hook should be removed afterwards.
-        */
-       int (*gem_prime_mmap)(struct drm_gem_object *obj, struct vm_area_struct *vma);
 
        /**
         * @dumb_create:
index 8a043235dad81f45b6822c4c7db7bd6587db7f5c..61da596780b643fcd4366b5cff59a494f61c6bb5 100644 (file)
@@ -169,8 +169,7 @@ drm_gem_dma_prime_import_sg_table(struct drm_device *dev,
        .dumb_create            = (dumb_create_func), \
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd, \
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle, \
-       .gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table, \
-       .gem_prime_mmap         = drm_gem_prime_mmap
+       .gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table
 
 /**
  * DRM_GEM_DMA_DRIVER_OPS - DMA GEM driver operations
@@ -207,8 +206,7 @@ drm_gem_dma_prime_import_sg_table(struct drm_device *dev,
        .dumb_create            = dumb_create_func, \
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd, \
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle, \
-       .gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table_vmap, \
-       .gem_prime_mmap         = drm_gem_prime_mmap
+       .gem_prime_import_sg_table = drm_gem_dma_prime_import_sg_table_vmap
 
 /**
  * DRM_GEM_DMA_DRIVER_OPS_VMAP - DMA GEM driver operations ensuring a virtual
index 5994fed5e3278dd11311d4cb4812b23b4cf43abb..46eb46e6906300ff560692c38d6782015dd2613d 100644 (file)
@@ -293,7 +293,6 @@ int drm_gem_shmem_dumb_create(struct drm_file *file, struct drm_device *dev,
        .prime_handle_to_fd     = drm_gem_prime_handle_to_fd, \
        .prime_fd_to_handle     = drm_gem_prime_fd_to_handle, \
        .gem_prime_import_sg_table = drm_gem_shmem_prime_import_sg_table, \
-       .gem_prime_mmap         = drm_gem_prime_mmap, \
        .dumb_create            = drm_gem_shmem_dumb_create
 
 #endif /* __DRM_GEM_SHMEM_HELPER_H__ */
index f4aab64411d82dbbab324f02766d6982663ef723..6b265cb9f45a47a2b9082a1043bc4a141be19d94 100644 (file)
@@ -160,7 +160,6 @@ void drm_gem_vram_simple_display_pipe_cleanup_fb(
        .debugfs_init             = drm_vram_mm_debugfs_init, \
        .dumb_create              = drm_gem_vram_driver_dumb_create, \
        .dumb_map_offset          = drm_gem_ttm_dumb_map_offset, \
-       .gem_prime_mmap           = drm_gem_prime_mmap, \
        .prime_handle_to_fd       = drm_gem_prime_handle_to_fd, \
        .prime_fd_to_handle       = drm_gem_prime_fd_to_handle