[Intel-gfx] [PATCH] drm/i915: Skip force-wake for uncached mmio flush of GGTT writes

Mika Kuoppala mika.kuoppala at linux.intel.com
Mon Mar 20 10:02:02 UTC 2017


Chris Wilson <chris at chris-wilson.co.uk> writes:

> The trick of using an uncached mmio read to ensure that the GGTT writes
> are flushed does not require us to do the forcewake dance, so avoid it
> in the hope of reducing the frequency that we do keep the device forced
> awake.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  drivers/gpu/drm/i915/i915_gem.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 5e280e3bfd86..d468300e2f05 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -3094,8 +3094,11 @@ i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj)
>  	 * system agents we cannot reproduce this behaviour).
>  	 */
>  	wmb();
> -	if (INTEL_GEN(dev_priv) >= 6 && !HAS_LLC(dev_priv))
> -		POSTING_READ(RING_ACTHD(dev_priv->engine[RCS]->mmio_base));
> +	if (INTEL_GEN(dev_priv) >= 6 && !HAS_LLC(dev_priv)) {
> +		spin_lock_irq(&dev_priv->uncore.lock);
> +		POSTING_READ_FW(RING_ACTHD(dev_priv->engine[RCS]->mmio_base));
> +		spin_unlock_irq(&dev_priv->uncore.lock);
> +	}
>

Why is it so that the flushing (from gpu side) doesn't need
the rc6?

Also noticed that write domain check, prior to calling this,
in set_to_cpu_domain() is redundant.

-Mika

>  	intel_fb_obj_flush(obj, write_origin(obj, I915_GEM_DOMAIN_GTT));
>  
> -- 
> 2.11.0
>
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/intel-gfx


More information about the Intel-gfx mailing list