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
