|
@@ -2845,7 +2845,7 @@ static int semaphore_passed(struct intel_engine_cs *ring)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = ring->dev->dev_private;
|
|
|
struct intel_engine_cs *signaller;
|
|
|
- u32 seqno, ctl;
|
|
|
+ u32 seqno;
|
|
|
|
|
|
ring->hangcheck.deadlock++;
|
|
|
|
|
@@ -2857,15 +2857,12 @@ static int semaphore_passed(struct intel_engine_cs *ring)
|
|
|
if (signaller->hangcheck.deadlock >= I915_NUM_RINGS)
|
|
|
return -1;
|
|
|
|
|
|
- /* cursory check for an unkickable deadlock */
|
|
|
- ctl = I915_READ_CTL(signaller);
|
|
|
- if (ctl & RING_WAIT_SEMAPHORE && semaphore_passed(signaller) < 0)
|
|
|
- return -1;
|
|
|
-
|
|
|
if (i915_seqno_passed(signaller->get_seqno(signaller, false), seqno))
|
|
|
return 1;
|
|
|
|
|
|
- if (signaller->hangcheck.deadlock)
|
|
|
+ /* cursory check for an unkickable deadlock */
|
|
|
+ if (I915_READ_CTL(signaller) & RING_WAIT_SEMAPHORE &&
|
|
|
+ semaphore_passed(signaller) < 0)
|
|
|
return -1;
|
|
|
|
|
|
return 0;
|