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>
This commit is contained in:
Rob Clark
2026-07-29 08:55:48 -07:00
parent 4e67b8fc55
commit 695d2b042a

View File

@@ -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;