[Intel-gfx] [PATCH 3/3] drm/i915: remove ring kick

Ben Widawsky ben at bwidawsk.net
Tue Oct 4 23:11:53 CEST 2011


Ring kick was racy (forcewake), and doesn't really do anything for us
that shouldn't be done by reset.

Signed-off-by: Ben Widawsky <ben at bwidawsk.net>
---
 drivers/gpu/drm/i915/i915_irq.c |   41 ---------------------------------------
 1 files changed, 0 insertions(+), 41 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index 6b6abe1..6e168b6 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -1645,27 +1645,6 @@ static bool i915_hangcheck_ring_idle(struct intel_ring_buffer *ring, bool *err)
 	return false;
 }
 
-static bool kick_ring(struct intel_ring_buffer *ring)
-{
-	struct drm_device *dev = ring->dev;
-	struct drm_i915_private *dev_priv = dev->dev_private;
-	u32 tmp = I915_READ_CTL(ring);
-	if (tmp & RING_WAIT) {
-		DRM_ERROR("Kicking stuck wait on %s\n",
-			  ring->name);
-		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;
-}
-
 static bool
 instdone_stuck(struct drm_device *dev)
 {
@@ -1771,26 +1750,6 @@ void i915_hangcheck_elapsed(unsigned long data)
 
 	if (gpu_stuck(dev)) {
 		DRM_ERROR("Hangcheck timer elapsed... GPU hung\n");
-
-		if (!IS_GEN2(dev)) {
-			/* Is the chip hanging on a WAIT_FOR_EVENT?
-			 * If so we can simply poke the RB_WAIT bit
-			 * and break the hang. This should work on
-			 * all but the second generation chipsets.
-			 */
-
-			if (kick_ring(&dev_priv->ring[RCS]))
-				goto repeat;
-
-			if (HAS_BSD(dev) &&
-			    kick_ring(&dev_priv->ring[VCS]))
-				goto repeat;
-
-			if (HAS_BLT(dev) &&
-			    kick_ring(&dev_priv->ring[BCS]))
-				goto repeat;
-		}
-
 		i915_handle_error(dev, true);
 		return;
 	}
-- 
1.7.6.4




More information about the Intel-gfx mailing list