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 <ch...@chris-wilson.co.uk>
> Cc: Imre Deak <imre.d...@intel.com>
> Cc: David Weinehall <david.weineh...@intel.com>

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.weineh...@intel.com>

> ---
>  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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to