Commit 0adec227 authored by Thomas Zimmermann's avatar Thomas Zimmermann
Browse files

drm: Remove struct drm_driver.gem_prime_mmap



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: default avatarThomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230613150441.17720-3-tzimmermann@suse.de
parent 734458b7
Loading
Loading
Loading
Loading
+0 −9
Original line number Original line Diff line number Diff line
@@ -319,15 +319,6 @@ Contact: Daniel Vetter, Noralf Tronnes


Level: Advanced
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
connector register/unregister fixes
-----------------------------------
-----------------------------------


+0 −1
Original line number Original line Diff line number Diff line
@@ -376,7 +376,6 @@ static const struct drm_driver driver = {
	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
	.gem_prime_import = ivpu_gem_prime_import,
	.gem_prime_import = ivpu_gem_prime_import,
	.gem_prime_mmap = drm_gem_prime_mmap,


	.ioctls = ivpu_drm_ioctls,
	.ioctls = ivpu_drm_ioctls,
	.num_ioctls = ARRAY_SIZE(ivpu_drm_ioctls),
	.num_ioctls = ARRAY_SIZE(ivpu_drm_ioctls),
+0 −1
Original line number Original line Diff line number Diff line
@@ -2809,7 +2809,6 @@ static const struct drm_driver amdgpu_kms_driver = {
	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,
	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
	.prime_fd_to_handle = drm_gem_prime_fd_to_handle,
	.gem_prime_import = amdgpu_gem_prime_import,
	.gem_prime_import = amdgpu_gem_prime_import,
	.gem_prime_mmap = drm_gem_prime_mmap,


	.name = DRIVER_NAME,
	.name = DRIVER_NAME,
	.desc = DRIVER_DESC,
	.desc = DRIVER_DESC,
+1 −5
Original line number Original line Diff line number Diff line
@@ -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)
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_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 = {
static const struct fb_ops drm_fbdev_dma_fb_ops = {
+2 −12
Original line number Original line Diff line number Diff line
@@ -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 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
 * The fake GEM offset is added to vma->vm_pgoff and &drm_driver->fops->mmap is
 * called to set up the mapping.
 * 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)
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
 * @vma: virtual address range
 *
 *
 * Provides memory mapping for the buffer. This can be used as the
 * 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,
 * &dma_buf_ops.mmap callback. It just forwards to drm_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.
 *
 *
 * Returns 0 on success or a negative error code on failure.
 * 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)
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_gem_object *obj = dma_buf->priv;
	struct drm_device *dev = obj->dev;


	dma_resv_assert_held(dma_buf->resv);
	dma_resv_assert_held(dma_buf->resv);


	if (!dev->driver->gem_prime_mmap)
	return drm_gem_prime_mmap(obj, vma);
		return -ENOSYS;

	return dev->driver->gem_prime_mmap(obj, vma);
}
}
EXPORT_SYMBOL(drm_gem_dmabuf_mmap);
EXPORT_SYMBOL(drm_gem_dmabuf_mmap);


Loading