On Fri, Feb 13, 2015 at 12:59:45PM +0000, Chris Wilson wrote: > Long ago I found that I was getting sporadic errors when booting SNB, > with the symptom being that the first batch died with IPEHR != *ACTHD, > typically caused by the TLB being invalid. These magically disappeared > if I held the forcewake during the entire ring initialisation sequence. > (It can probably be shortened to a short critical section, but the whole > initialisation is full of register writes and so we would be taking and > releasing forcewake almost continually, and so holding it over the > entire sequence will probably be a net win!) > > Note some of the kernels I encounted the issue already had the deferred > forcewake release, so it is still relevant. > > I know that there have been a few other reports with similar failure > conditions on SNB, I think such as > References: https://bugs.freedesktop.org/show_bug.cgi?id=80913 > > Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Given that we've already added a forcewake critical section around individual ring inits this makes maybe a bit too much sense. But I do wonder whether we don't need the same for resume and gpu resets? With the split into hw/sw setup we could get that by pusing the forcewake_get/put inti i915_gem_init_hw. Does the magic still work with that? And if we put it there there fw_get/put in init_ring_common is fully redundant and could be remove. -Daniel > --- > drivers/gpu/drm/i915/i915_gem.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 8d15c8110962..2426f6d9b5a5 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -4868,6 +4868,7 @@ int i915_gem_init(struct drm_device *dev) > dev_priv->gt.stop_ring = intel_logical_ring_stop; > } > > + intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); > ret = i915_gem_init_userptr(dev); > if (ret) > goto out_unlock; > @@ -4894,6 +4895,7 @@ int i915_gem_init(struct drm_device *dev) > } > > out_unlock: > + intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); > mutex_unlock(&dev->struct_mutex); > > return ret; > -- > 2.1.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx