On Thu, May 12, 2016 at 03:28:15PM +0100, Chris Wilson wrote: > Now that we mark the object domains for having been restored from the > hibernation image, we not need to flush everything during resume and > can instead rely on the normal domain tracking to flush only when > required. The only caveat here are objects that are pinned for use by > the hardware, whose contents must be coherent for when the device > resumes reading from then (shortly afterwards with the driver assuming > the objects are in the correct domain). > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > Cc: Imre Deak <imre.deak@xxxxxxxxx> > Cc: David Weinehall <david.weinehall@xxxxxxxxx> I've tested patch 3 + 4 with SuspendResume (analyze_suspend.py -config suspend-callgraph.cfg). The takeaway is that restore_gtt (almost) disappears in the noise. Nice improvement. I've also confirmed that hibernate works properly. Tested-by: David Weinehall <david.weinehall@xxxxxxxxx> > --- > drivers/gpu/drm/i915/i915_gem_gtt.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/i915/i915_gem_gtt.c b/drivers/gpu/drm/i915/i915_gem_gtt.c > index 5fb14c835543..319f3b459b3e 100644 > --- a/drivers/gpu/drm/i915/i915_gem_gtt.c > +++ b/drivers/gpu/drm/i915/i915_gem_gtt.c > @@ -3245,7 +3245,6 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) > struct i915_ggtt *ggtt = &dev_priv->ggtt; > struct drm_i915_gem_object *obj; > struct i915_vma *vma; > - bool flush; > > i915_check_and_clear_faults(dev_priv); > > @@ -3255,19 +3254,16 @@ void i915_gem_restore_gtt_mappings(struct drm_device *dev) > > /* Cache flush objects bound into GGTT and rebind them. */ > list_for_each_entry(obj, &dev_priv->mm.bound_list, global_list) { > - flush = false; > list_for_each_entry(vma, &obj->vma_list, obj_link) { > if (vma->vm != &ggtt->base) > continue; > > WARN_ON(i915_vma_bind(vma, obj->cache_level, > PIN_UPDATE)); > - > - flush = true; > } > > - if (flush) > - i915_gem_clflush_object(obj, obj->pin_display); > + if (obj->pin_display) > + WARN_ON(i915_gem_object_set_to_gtt_domain(obj, false)); > } > > if (INTEL_INFO(dev)->gen >= 8) { > -- > 2.8.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx