Clean up duplicated logic between import and new paths.

Signed-off-by: Rob Clark <[email protected]>
---
 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

Reply via email to