Mostly we don't care about the page array, mapping/etc works in terms of
the sgt.  Add a helper to prepare for allowing the page array to be NULL
for imported dma-bufs.

Signed-off-by: Rob Clark <[email protected]>
---
 drivers/gpu/drm/msm/msm_gem.c | 8 ++++----
 drivers/gpu/drm/msm/msm_gem.h | 6 ++++++
 2 files changed, 10 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c
index c4cff3d53d81..e8390ebd5dd5 100644
--- a/drivers/gpu/drm/msm/msm_gem.c
+++ b/drivers/gpu/drm/msm/msm_gem.c
@@ -147,7 +147,7 @@ static void update_lru_active(struct drm_gem_object *obj)
        struct msm_drm_private *priv = obj->dev->dev_private;
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
 
-       GEM_WARN_ON(!msm_obj->pages);
+       GEM_WARN_ON(!is_resident(msm_obj));
 
        if (msm_obj->pin_count) {
                drm_gem_lru_move_tail_locked(&priv->lru.pinned, obj);
@@ -167,7 +167,7 @@ static void update_lru_locked(struct drm_gem_object *obj)
 
        msm_gem_assert_locked(&msm_obj->base);
 
-       if (!msm_obj->pages) {
+       if (!is_resident(msm_obj)) {
                GEM_WARN_ON(msm_obj->pin_count);
 
                drm_gem_lru_move_tail_locked(&priv->lru.unbacked, obj);
@@ -949,7 +949,7 @@ void msm_gem_describe(struct drm_gem_object *obj, struct 
seq_file *m,
                stats->active.size += obj->size;
        }
 
-       if (msm_obj->pages) {
+       if (is_resident(msm_obj)) {
                stats->resident.count++;
                stats->resident.size += obj->size;
        }
@@ -1172,7 +1172,7 @@ static enum drm_gem_object_status msm_gem_status(struct 
drm_gem_object *obj)
        struct msm_gem_object *msm_obj = to_msm_bo(obj);
        enum drm_gem_object_status status = 0;
 
-       if (msm_obj->pages)
+       if (is_resident(msm_obj))
                status |= DRM_GEM_OBJECT_RESIDENT;
 
        if (msm_obj->madv == MSM_MADV_DONTNEED)
diff --git a/drivers/gpu/drm/msm/msm_gem.h b/drivers/gpu/drm/msm/msm_gem.h
index dff60cbc9d95..73dafe080bfd 100644
--- a/drivers/gpu/drm/msm/msm_gem.h
+++ b/drivers/gpu/drm/msm/msm_gem.h
@@ -419,6 +419,12 @@ static inline bool is_unevictable(struct msm_gem_object 
*msm_obj)
        return is_unpurgeable(msm_obj) || msm_obj->vaddr;
 }
 
+/* Are backing pages/sgt allocated? */
+static inline bool is_resident(struct msm_gem_object *msm_obj)
+{
+       return !!msm_obj->pages;
+}
+
 void msm_gem_purge(struct drm_gem_object *obj);
 void msm_gem_evict(struct drm_gem_object *obj);
 void msm_gem_vunmap(struct drm_gem_object *obj);
-- 
2.55.0

Reply via email to