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