[Intel-gfx] [PATCH] drm/i915: Stop touching forcewake following a gen6+ engine reset

Chris Wilson chris at chris-wilson.co.uk
Fri Aug 18 08:08:27 UTC 2017


Quoting Michel Thierry (2017-08-17 18:41:16)
> On 17/08/17 10:32, Chris Wilson wrote:
> > Forcewake is not affected by the engine reset on gen6+. Indeed the
> > reason why we added intel_uncore_forcewake_reset() to
> > gen6_reset_engines() was to keep the bookkeeping intact because the
> > reset did not touch the forcewake bit (yet we cancelled the forcewake
> > consumers)!  This was done in commit 521198a2e7095:
> >      Author: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> >      Date:   Fri Aug 23 16:52:30 2013 +0300
> > 
> >       drm/i915: sanitize forcewake registers on reset
> > 
> >       In reset we try to restore the forcewake state to
> >       pre reset state, using forcewake_count. The reset
> >       doesn't seem to clear the forcewake bits so we
> >       get warn on forcewake ack register not clearing.
> > 
> > That futzing of the forcewake bookkeeping was dropped in commit
> > 0294ae7b44bb ("drm/i915: Consolidate forcewake resetting to a single
> > function"), but it did not make the realisation that the remaining
> > intel_uncore_forcewake_reset() was redundant.
> > 
> > The new danger with using intel_uncore_forcewake_reset() with per-engine
> > resets is that the driver and hw are still in an active state as we
> > perform the reset. We may be using the forcewake to read protected
> > registers elsewhere and those results may be clobbered by the concurrent
> > dropping of forcewake.
> > 
> > Reported-by: Michel Thierry <michel.thierry at intel.com>
> > Fixes: 142bc7d99bcf ("drm/i915: Modify error handler for per engine hang recovery")
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> > Cc: Michel Thierry <michel.thierry at intel.com>

[snip]

> Thanks for digging out the commit history.

As you suspected, applying this commit makes BXT happy with the
per-engine reset scenarios that were failing before. One pass at
least, a few more (another 24hours or so) to be truly convinced :)
-Chris


More information about the Intel-gfx mailing list