From: Thomas Zimmermann <tzimmermann@suse.de>
To: Sui Jingfeng <suijingfeng@loongson.cn>,
daniel@ffwll.ch, airlied@gmail.com, robdclark@gmail.com,
quic_abhinavk@quicinc.com, sean@poorly.run
Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org,
dri-devel@lists.freedesktop.org
Subject: Re: [2/2] drm: Remove struct drm_driver.gem_prime_mmap
Date: Wed, 14 Jun 2023 12:39:32 +0200 [thread overview]
Message-ID: <9cb37bc2-5bb5-34cc-884b-87c94d26eea5@suse.de> (raw)
In-Reply-To: <9e3d9884-2e03-2728-563e-32cc91ace677@loongson.cn>
[-- Attachment #1.1: Type: text/plain, Size: 26600 bytes --]
Hi
Am 14.06.23 um 10:26 schrieb Sui Jingfeng:
> Hi,
>
> On 2023/6/14 13:34, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 14.06.23 um 04:06 schrieb Sui Jingfeng:
>>>
>>> On 2023/6/14 01:27, Sui Jingfeng wrote:
>>>> Wow, so many drivers get nuked!
>>>>
>>>> On 2023/6/13 22:51, Thomas Zimmermann wrote:
>>>>> 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>
>>>>
>>>>
>>>> I have tested this patch briefly with drm/amdgpu(RX560), Running
>>>> glmark2, the rendered scene looks OK.
>>>>
>>>> But single driver is self-sharing. I think I should test this more
>>>> with multiple video card.
>>>>
>>> No need to test; it's equivalent to removing a wrapper.
>>
>> Yes, only msm hardware might be affected.
>>
>>>
>>> But new DRM (un-upstreamed) drivers cannot be compiled anymore with
>>> this patch applied.
>>>
>>> This makes them all out-of-date or going to be outdated; this is
>>> embarrassing!
>>
>> What do you mean by embarrassing? Simply rebase your driver onto the
>> change and that's it. This happens regularly for out-of-tree drivers.
>> But if such a driver would land before this patchset, I'd have to
>> update the patchset instead.
>>
> Thanks for you told me this then.
>
> I worry about what it will happen if two conflict patch got merged
> together.
Yes that occasionaly breaks something, but luckily it rarely results in
a significant problem. Drivers that break can be disabled by the
majority of developers. So that's not an issue for most. Core code is a
bit more important. Usually someone provides a patch or workaround quickly.
Best regards
Thomas
>
> If my driver got merged, then one more driver will be nuked together.
> Saving a lot of effort.
>
>
>> Best regards
>> Thomas
>>
>>>
>>>>
>>>>> ---
>>>>> Documentation/gpu/todo.rst | 9 ---------
>>>>> drivers/accel/ivpu/ivpu_drv.c | 1 -
>>>>> drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 1 -
>>>>> drivers/gpu/drm/drm_fbdev_dma.c | 6 +-----
>>>>> drivers/gpu/drm/drm_prime.c | 14 ++------------
>>>>> drivers/gpu/drm/etnaviv/etnaviv_drv.c | 1 -
>>>>> drivers/gpu/drm/exynos/exynos_drm_drv.c | 1 -
>>>>> drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c | 1 -
>>>>> drivers/gpu/drm/lima/lima_drv.c | 1 -
>>>>> drivers/gpu/drm/mediatek/mtk_drm_drv.c | 1 -
>>>>> drivers/gpu/drm/msm/msm_drv.c | 1 -
>>>>> drivers/gpu/drm/msm/msm_drv.h | 1 -
>>>>> drivers/gpu/drm/msm/msm_gem_prime.c | 5 -----
>>>>> drivers/gpu/drm/nouveau/nouveau_drm.c | 1 -
>>>>> drivers/gpu/drm/panfrost/panfrost_drv.c | 1 -
>>>>> drivers/gpu/drm/pl111/pl111_drv.c | 1 -
>>>>> drivers/gpu/drm/radeon/radeon_drv.c | 1 -
>>>>> drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c | 1 -
>>>>> drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 1 -
>>>>> drivers/gpu/drm/v3d/v3d_drv.c | 1 -
>>>>> drivers/gpu/drm/virtio/virtgpu_drv.c | 1 -
>>>>> drivers/gpu/drm/xen/xen_drm_front.c | 1 -
>>>>> include/drm/drm_drv.h | 14 --------------
>>>>> include/drm/drm_gem_dma_helper.h | 6 ++----
>>>>> include/drm/drm_gem_shmem_helper.h | 1 -
>>>>> include/drm/drm_gem_vram_helper.h | 1 -
>>>>> 26 files changed, 5 insertions(+), 69 deletions(-)
>>>>>
>>>>> diff --git a/Documentation/gpu/todo.rst b/Documentation/gpu/todo.rst
>>>>> index 68bdafa0284f5..ca1efad8c89c3 100644
>>>>> --- a/Documentation/gpu/todo.rst
>>>>> +++ b/Documentation/gpu/todo.rst
>>>>> @@ -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
>>>>> -----------------------------------
>>>>> diff --git a/drivers/accel/ivpu/ivpu_drv.c
>>>>> b/drivers/accel/ivpu/ivpu_drv.c
>>>>> index 2df7643b843d5..9f2b9fdcc5498 100644
>>>>> --- a/drivers/accel/ivpu/ivpu_drv.c
>>>>> +++ b/drivers/accel/ivpu/ivpu_drv.c
>>>>> @@ -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),
>>>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>>>> index c9a41c997c6c7..7681f79f462eb 100644
>>>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/drm_fbdev_dma.c
>>>>> b/drivers/gpu/drm/drm_fbdev_dma.c
>>>>> index d86773fa8ab00..8217f1ddc0075 100644
>>>>> --- a/drivers/gpu/drm/drm_fbdev_dma.c
>>>>> +++ b/drivers/gpu/drm/drm_fbdev_dma.c
>>>>> @@ -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 = {
>>>>> diff --git a/drivers/gpu/drm/drm_prime.c b/drivers/gpu/drm/drm_prime.c
>>>>> index d29dafce9bb0a..6bcf324ef81c9 100644
>>>>> --- a/drivers/gpu/drm/drm_prime.c
>>>>> +++ b/drivers/gpu/drm/drm_prime.c
>>>>> @@ -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);
>>>>> diff --git a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>>>>> b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>>>>> index 31a7f59ccb49e..00223a8749092 100644
>>>>> --- a/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>>>>> +++ b/drivers/gpu/drm/etnaviv/etnaviv_drv.c
>>>>> @@ -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
>>>>> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>>> b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>>> index 6b73fb7a83c3c..c9e3c88fb329c 100644
>>>>> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>>> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>>>>> b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>>>>> index 0c4aa4d9b0a77..8a98fa276e8a9 100644
>>>>> --- a/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>>>>> +++ b/drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c
>>>>> @@ -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)
>>>>> diff --git a/drivers/gpu/drm/lima/lima_drv.c
>>>>> b/drivers/gpu/drm/lima/lima_drv.c
>>>>> index e8566211e9fa1..65c31dc38049a 100644
>>>>> --- a/drivers/gpu/drm/lima/lima_drv.c
>>>>> +++ b/drivers/gpu/drm/lima/lima_drv.c
>>>>> @@ -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 {
>>>>> diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>>>>> b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>>>>> index 6dcb4ba2466c0..5693bb8d29ce4 100644
>>>>> --- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>>>>> +++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/msm/msm_drv.c
>>>>> b/drivers/gpu/drm/msm/msm_drv.c
>>>>> index 891eff8433a9c..47efa3c4492c4 100644
>>>>> --- a/drivers/gpu/drm/msm/msm_drv.c
>>>>> +++ b/drivers/gpu/drm/msm/msm_drv.c
>>>>> @@ -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
>>>>> diff --git a/drivers/gpu/drm/msm/msm_drv.h
>>>>> b/drivers/gpu/drm/msm/msm_drv.h
>>>>> index e13a8cbd61c95..44c9e06f2dffa 100644
>>>>> --- a/drivers/gpu/drm/msm/msm_drv.h
>>>>> +++ b/drivers/gpu/drm/msm/msm_drv.h
>>>>> @@ -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);
>>>>> diff --git a/drivers/gpu/drm/msm/msm_gem_prime.c
>>>>> b/drivers/gpu/drm/msm/msm_gem_prime.c
>>>>> index 2c846afe049e4..5f68e31a3e4e1 100644
>>>>> --- a/drivers/gpu/drm/msm/msm_gem_prime.c
>>>>> +++ b/drivers/gpu/drm/msm/msm_gem_prime.c
>>>>> @@ -11,11 +11,6 @@
>>>>> #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);
>>>>> diff --git a/drivers/gpu/drm/nouveau/nouveau_drm.c
>>>>> b/drivers/gpu/drm/nouveau/nouveau_drm.c
>>>>> index cc7c5b4a05fd8..4199b8294e6e8 100644
>>>>> --- a/drivers/gpu/drm/nouveau/nouveau_drm.c
>>>>> +++ b/drivers/gpu/drm/nouveau/nouveau_drm.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c
>>>>> b/drivers/gpu/drm/panfrost/panfrost_drv.c
>>>>> index 19f8cff52e533..d2916bf435473 100644
>>>>> --- a/drivers/gpu/drm/panfrost/panfrost_drv.c
>>>>> +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c
>>>>> @@ -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)
>>>>> diff --git a/drivers/gpu/drm/pl111/pl111_drv.c
>>>>> b/drivers/gpu/drm/pl111/pl111_drv.c
>>>>> index 43049c8028b21..c4b8357ea9996 100644
>>>>> --- a/drivers/gpu/drm/pl111/pl111_drv.c
>>>>> +++ b/drivers/gpu/drm/pl111/pl111_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/radeon/radeon_drv.c
>>>>> b/drivers/gpu/drm/radeon/radeon_drv.c
>>>>> index e4374814f0ef6..cf1b960c4200c 100644
>>>>> --- a/drivers/gpu/drm/radeon/radeon_drv.c
>>>>> +++ b/drivers/gpu/drm/radeon/radeon_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
>>>>> b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
>>>>> index ed3ee3d15baec..4280ff5fa91f2 100644
>>>>> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
>>>>> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_du_drv.c
>>>>> @@ -608,7 +608,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",
>>>>> diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>>>>> b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>>>>> index c0ebfdf56a711..b8cf89f0cc566 100644
>>>>> --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>>>>> +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/v3d/v3d_drv.c
>>>>> b/drivers/gpu/drm/v3d/v3d_drv.c
>>>>> index 71f9fdde24b41..845a36e36450d 100644
>>>>> --- a/drivers/gpu/drm/v3d/v3d_drv.c
>>>>> +++ b/drivers/gpu/drm/v3d/v3d_drv.c
>>>>> @@ -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),
>>>>> diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>>> b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>>> index add075681e18f..91ace7a44f2a6 100644
>>>>> --- a/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>>> +++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
>>>>> @@ -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,
>>>>> diff --git a/drivers/gpu/drm/xen/xen_drm_front.c
>>>>> b/drivers/gpu/drm/xen/xen_drm_front.c
>>>>> index 90996c108146d..62c3c13b3a175 100644
>>>>> --- a/drivers/gpu/drm/xen/xen_drm_front.c
>>>>> +++ b/drivers/gpu/drm/xen/xen_drm_front.c
>>>>> @@ -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",
>>>>> diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
>>>>> index 89e2706cac561..870278ecd8ba9 100644
>>>>> --- a/include/drm/drm_drv.h
>>>>> +++ b/include/drm/drm_drv.h
>>>>> @@ -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:
>>>>> diff --git a/include/drm/drm_gem_dma_helper.h
>>>>> b/include/drm/drm_gem_dma_helper.h
>>>>> index 8a043235dad81..61da596780b64 100644
>>>>> --- a/include/drm/drm_gem_dma_helper.h
>>>>> +++ b/include/drm/drm_gem_dma_helper.h
>>>>> @@ -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
>>>>> diff --git a/include/drm/drm_gem_shmem_helper.h
>>>>> b/include/drm/drm_gem_shmem_helper.h
>>>>> index 5994fed5e3278..46eb46e690630 100644
>>>>> --- a/include/drm/drm_gem_shmem_helper.h
>>>>> +++ b/include/drm/drm_gem_shmem_helper.h
>>>>> @@ -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__ */
>>>>> diff --git a/include/drm/drm_gem_vram_helper.h
>>>>> b/include/drm/drm_gem_vram_helper.h
>>>>> index f4aab64411d82..6b265cb9f45a4 100644
>>>>> --- a/include/drm/drm_gem_vram_helper.h
>>>>> +++ b/include/drm/drm_gem_vram_helper.h
>>>>> @@ -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
>>>>
>>
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
prev parent reply other threads:[~2023-06-14 10:40 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-13 14:51 [PATCH 0/2] drm: Remove gem_prime_mmap callback Thomas Zimmermann
2023-06-13 14:51 ` [PATCH 1/2] drm/msm: Initialize mmap offset after constructing the buffer object Thomas Zimmermann
2023-06-13 14:51 ` [PATCH 2/2] drm: Remove struct drm_driver.gem_prime_mmap Thomas Zimmermann
2023-06-13 15:32 ` Alex Deucher
2023-06-13 17:27 ` [2/2] " Sui Jingfeng
2023-06-14 2:06 ` Sui Jingfeng
2023-06-14 5:34 ` Thomas Zimmermann
2023-06-14 8:26 ` Sui Jingfeng
2023-06-14 10:39 ` Thomas Zimmermann [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=9cb37bc2-5bb5-34cc-884b-87c94d26eea5@suse.de \
--to=tzimmermann@suse.de \
--cc=airlied@gmail.com \
--cc=daniel@ffwll.ch \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=quic_abhinavk@quicinc.com \
--cc=robdclark@gmail.com \
--cc=sean@poorly.run \
--cc=suijingfeng@loongson.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox