[Intel-gfx] [PATCH 1/5] drm/i915: kicking rings stuck on semaphores considered harmful
Ben Widawsky
ben at bwidawsk.net
Mon Oct 31 02:25:46 CET 2011
On Sun, 30 Oct 2011 20:12:08 +0100
Daniel Vetter <daniel.vetter at ffwll.ch> wrote:
> If our semaphore logic gets confused and we have a ring stuck waiting
> for one, there's a decent chance it'll just execute garbage when being
> kicked. Also, kicking the ring obscures the place where the error
> first occured, making error_state decoding much harder.
>
> So drop this an let gpu reset handle this mess in a clean fashion.
>
> In contrast, kicking rings stuck on MI_WAIT is rather harmless, at
> worst there'll be a bit of screen-flickering. There's also old
> broken userspace out there which needs this as a work-around.
>
> Signed-off-by: Daniel Vetter <daniel.vetter at ffwll.ch>
> Reviewed-by: Chris Wilson <chris at hchris-wilson.co.uk>
> Reviewed-by: Ben Widawsky <ben at bwidawsk.net>
> ---
> drivers/gpu/drm/i915/i915_irq.c | 7 -------
> 1 files changed, 0 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index b40004b..69d4044 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -1649,13 +1649,6 @@ static bool kick_ring(struct intel_ring_buffer *ring)
> I915_WRITE_CTL(ring, tmp);
> return true;
> }
> - if (IS_GEN6(dev) &&
> - (tmp & RING_WAIT_SEMAPHORE)) {
> - DRM_ERROR("Kicking stuck semaphore on %s\n",
> - ring->name);
> - I915_WRITE_CTL(ring, tmp);
> - return true;
> - }
> return false;
> }
>
This also has the added benefit that it fixes a forcewake race on gen6+.
Ben
More information about the Intel-gfx
mailing list