summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorRob Clark <robin.clark@oss.qualcomm.com>2026-07-29 08:55:48 -0700
committerRob Clark <robin.clark@oss.qualcomm.com>2026-07-29 11:56:02 -0700
commit695d2b042af032bdbbfe4a1db475de2a2024e320 (patch)
treeaac346b34211ab623ffe2c36ec0e66f35e2480d8 /drivers
parent4e67b8fc55c4389652321355ff71ae8d4cb39783 (diff)
downloadlinux-695d2b042af032bdbbfe4a1db475de2a2024e320.tar.gz
linux-695d2b042af032bdbbfe4a1db475de2a2024e320.zip
drm/msm/gem: Extract bookkeeping init helper
Clean up duplicated logic between import and new paths. Signed-off-by: Rob Clark <robin.clark@oss.qualcomm.com> Patchwork: https://patchwork.freedesktop.org/patch/743089/ Message-ID: <20260729155609.20190-12-robin.clark@oss.qualcomm.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/msm/msm_gem.c38
1 files 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;