[PATCH 6/7] flush-writes-before-suspend
Chris Wilson
chris at chris-wilson.co.uk
Fri May 25 10:07:42 UTC 2018
---
drivers/gpu/drm/i915/i915_gem.c | 20 +++++++++++++++++---
1 file changed, 17 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index b0980b3186e7..239498191937 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5060,8 +5060,15 @@ int i915_gem_suspend(struct drm_i915_private *dev_priv)
return ret;
}
-void i915_gem_suspend_late(struct drm_i915_private *dev_priv)
+void i915_gem_suspend_late(struct drm_i915_private *i915)
{
+ struct drm_i915_gem_object *obj;
+ struct list_head *phases[] = {
+ &i915->mm.unbound_list,
+ &i915->mm.bound_list,
+ NULL
+ }, **p;
+
/*
* Neither the BIOS, ourselves or any other kernel
* expects the system to be in execlists mode on startup,
@@ -5082,8 +5089,15 @@ void i915_gem_suspend_late(struct drm_i915_private *dev_priv)
* machine in an unusable condition.
*/
- intel_uc_sanitize(dev_priv);
- i915_gem_sanitize(dev_priv);
+ spin_lock(&i915->mm.obj_lock);
+ for (p = phases; *p; p++) {
+ list_for_each_entry(obj, *p, mm.link)
+ WARN_ON(i915_gem_object_set_to_gtt_domain(obj, false));
+ }
+ spin_unlock(&i915->mm.obj_lock);
+
+ intel_uc_sanitize(i915);
+ i915_gem_sanitize(i915);
}
void i915_gem_resume(struct drm_i915_private *i915)
--
2.17.0
More information about the Intel-gfx-trybot
mailing list