On resume we unbind+bind our VMA-mappings. This patch simplifies
this a bit by introducing a restore_vma() helper.  As a nice side-effect
this also makes the resume callgraph self-documenting.

v2: move the helper to i915_gem_gtt.c since it's only used by
    i915_gem_restore_gtt_mappings(), rename to restore_vma(),
    and make static (Chris)

Signed-off-by: David Weinehall <[email protected]>
CC: Chris Wilson <[email protected]>
---
 drivers/gpu/drm/i915/i915_gem_gtt.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c 
b/drivers/gpu/drm/i915/i915_gem_gtt.c
index b4bde1452f2a..2711044e3bf2 100644
--- a/drivers/gpu/drm/i915/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/i915_gem_gtt.c
@@ -3277,6 +3277,16 @@ int i915_ggtt_enable_hw(struct drm_i915_private 
*dev_priv)
        return 0;
 }
 
+static bool restore_vma(struct i915_vma *vma)
+{
+       if (i915_vma_is_pinned(vma)) {
+               WARN_ON(i915_vma_bind(vma, vma->obj->cache_level, PIN_UPDATE));
+               return true;
+       } else {
+               WARN_ON(i915_vma_unbind(vma));
+               return false;
+       }
+}
 void i915_gem_restore_gtt_mappings(struct drm_i915_private *dev_priv)
 {
        struct i915_ggtt *ggtt = &dev_priv->ggtt;
@@ -3299,12 +3309,7 @@ void i915_gem_restore_gtt_mappings(struct 
drm_i915_private *dev_priv)
                        if (vma->vm != &ggtt->base)
                                continue;
 
-                       if (!i915_vma_unbind(vma))
-                               continue;
-
-                       WARN_ON(i915_vma_bind(vma, obj->cache_level,
-                                             PIN_UPDATE));
-                       ggtt_bound = true;
+                       ggtt_bound |= restore_vma(vma);
                }
 
                if (ggtt_bound)
-- 
2.10.2

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to