mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-13 18:23:44 -04:00
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:
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user