commit c6916417c8575637659686ff0e4f744babf0cb4e Author: Ben Widawsky <ben@xxxxxxxxxxxx> Date: Tue Sep 24 09:58:00 2013 -0700 drm/i915: Use the new vm [un]bind functions changes the interpretation of the bind routines, and in particular we only bind into the global GTT if we pass a flag to the routine. So upon resume, we need to ask for whatever we thing is bound into the global GTT (cursors, fences, scanouts) to be rebound or else glorious corruption ensues. v2.1: Clear the is-bound flags before attempting to rebind. Fixes: i-g-t/gem_suspend Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69834 Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> Cc: Ben Widawsky <ben@xxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem_gtt.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c index e053f14..55a8d87 100644 --- a/drivers/gpu/drm/i915/i915_gem_gtt.c +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c @@ -508,8 +508,14 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) { struct i915_vma *vma = i915_gem_obj_to_vma(obj, &dev_priv->gtt.base); + unsigned flags = obj->has_global_gtt_mapping ? GLOBAL_BIND : 0; + i915_gem_clflush_object(obj, obj->pin_display); - vma->vm->bind_vma(vma, obj->cache_level, 0); + + obj->has_global_gtt_mapping = false; + obj->has_aliasing_ppgtt_mapping = false; + + vma->vm->bind_vma(vma, obj->cache_level, flags); } i915_gem_chipset_flush(dev); -- 1.8.4.rc3 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx