[PATCH v7 11/17] drm/msm/gem: Extract bookkeeping init helper
From: Rob Clark
Date: Wed Jul 29 2026 - 12:55:42 EST
Clean up duplicated logic between import and new paths.
Signed-off-by: Rob Clark <robin.clark@xxxxxxxxxxxxxxxx>
---
drivers/gpu/drm/msm/msm_gem.c | 38 +++++++++++++++++------------------
1 file changed, 19 insertions(+), 19 deletions(-)
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index cc45392691e5..3c36b1c4a4d5 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -1234,10 +1234,25 @@ static int msm_gem_new_impl(struct drm_device *dev, uint32_t flags,
return 0;
}
+static int msm_gem_init_bookkeeping(struct drm_gem_object *obj)
+{
+ struct msm_drm_private *priv = obj->dev->dev_private;
+
+ if (drm_gem_is_imported(obj)) {
+ drm_gem_lru_move_tail(&priv->lru.pinned, obj);
+ } else {
+ drm_gem_lru_move_tail(&priv->lru.unbacked, obj);
+ }
+
+ mutex_lock(&priv->obj_lock);
+ list_add_tail(&to_msm_bo(obj)->node, &priv->objects);
+ mutex_unlock(&priv->obj_lock);
+
+ return drm_gem_create_mmap_offset(obj);
+}
+
struct drm_gem_object *msm_gem_new(struct drm_device *dev, size_t size, uint32_t flags)
{
- struct msm_drm_private *priv = dev->dev_private;
- struct msm_gem_object *msm_obj;
struct drm_gem_object *obj = NULL;
int ret;
@@ -1253,8 +1268,6 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev, size_t size, uint32_t
if (ret)
return ERR_PTR(ret);
- msm_obj = to_msm_bo(obj);
-
ret = drm_gem_object_init(dev, obj, size);
if (ret)
goto fail;
@@ -1266,13 +1279,7 @@ struct drm_gem_object *msm_gem_new(struct drm_device *dev, size_t size, uint32_t
*/
mapping_set_gfp_mask(obj->filp->f_mapping, GFP_HIGHUSER);
- drm_gem_lru_move_tail(&priv->lru.unbacked, obj);
-
- mutex_lock(&priv->obj_lock);
- list_add_tail(&msm_obj->node, &priv->objects);
- mutex_unlock(&priv->obj_lock);
-
- ret = drm_gem_create_mmap_offset(obj);
+ ret = msm_gem_init_bookkeeping(obj);
if (ret)
goto fail;
@@ -1287,7 +1294,6 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
struct dma_buf_attachment *attach,
struct sg_table *sgt)
{
- struct msm_drm_private *priv = dev->dev_private;
struct msm_gem_object *msm_obj;
struct drm_gem_object *obj;
struct dma_buf *dmabuf = attach->dmabuf;
@@ -1321,13 +1327,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,
goto fail;
}
- drm_gem_lru_move_tail(&priv->lru.pinned, obj);
-
- mutex_lock(&priv->obj_lock);
- list_add_tail(&msm_obj->node, &priv->objects);
- mutex_unlock(&priv->obj_lock);
-
- ret = drm_gem_create_mmap_offset(obj);
+ ret = msm_gem_init_bookkeeping(obj);
if (ret)
goto fail;
--
2.55.0