drm/msm: Initialize mmap offset after constructing the buffer object
authorThomas Zimmermann <tzimmermann@suse.de>
Tue, 13 Jun 2023 14:51:32 +0000 (16:51 +0200)
committerThomas Zimmermann <tzimmermann@suse.de>
Mon, 19 Jun 2023 11:56:32 +0000 (13:56 +0200)
Only the msm driver provides its own implementation of gem_prime_mmap
from struct drm_driver. All other drivers use the drm_gem_prime_mmap()
helper.

Initialize the mmap offset when constructing the buffer object in msm
and reduce the gem_prime_mmap code to the generic helper. Prepares
msm for the removal of struct drm_driver.gem_prime_mmap.

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-2-tzimmermann@suse.de
drivers/gpu/drm/msm/msm_gem.c
drivers/gpu/drm/msm/msm_gem_prime.c

index c32264234ea162c60add369a96e00d54240ca32b..649688b5a8409bc20615a87d0686a53f4995ef78 100644 (file)
@@ -1240,6 +1240,10 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev, uint32_t size, uint32
        list_add_tail(&msm_obj->node, &priv->objects);
        mutex_unlock(&priv->obj_lock);
 
+       ret = drm_gem_create_mmap_offset(obj);
+       if (ret)
+               goto fail;
+
        return obj;
 
 fail:
@@ -1296,6 +1300,10 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
        list_add_tail(&msm_obj->node, &priv->objects);
        mutex_unlock(&priv->obj_lock);
 
+       ret = drm_gem_create_mmap_offset(obj);
+       if (ret)
+               goto fail;
+
        return obj;
 
 fail:
index c1d91863df055b619332b466128d7b3aba9fe6d2..2c846afe049e4474fc23258ef1990d38135cca2d 100644 (file)
 
 int msm_gem_prime_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma)
 {
-       int ret;
-
-       /* Ensure the mmap offset is initialized.  We lazily initialize it,
-        * so if it has not been first mmap'd directly as a GEM object, the
-        * mmap offset will not be already initialized.
-        */
-       ret = drm_gem_create_mmap_offset(obj);
-       if (ret)
-               return ret;
-
        return drm_gem_prime_mmap(obj, vma);
 }