From: Dave Gordon <[email protected]>

For: VIZ-2021
Signed-off-by: Dave Gordon <[email protected]>
---
 drivers/gpu/drm/i915/i915_irq.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
index d280e05..eb55a41 100644
--- a/drivers/gpu/drm/i915/i915_irq.c
+++ b/drivers/gpu/drm/i915/i915_irq.c
@@ -2973,23 +2973,24 @@ static void i915_hangcheck_elapsed(struct work_struct 
*work)
 
                if (ring->hangcheck.seqno == seqno) {
                        if (ring_idle(ring, seqno)) {
+                               busy = false;
                                ring->hangcheck.action = HANGCHECK_IDLE;
 
                                if (waitqueue_active(&ring->irq_queue)) {
+                                       if 
(!(dev_priv->gpu_error.test_irq_rings & intel_ring_flag(ring)))
+                                               DRM_ERROR("Hangcheck timer 
elapsed... %s idle\n",
+                                                         ring->name);
+                                       else
+                                               DRM_INFO("Fake missed irq on 
%s\n",
+                                                        ring->name);
+
                                        /* Issue a wake-up to catch stuck h/w. 
*/
-                                       if (!test_and_set_bit(ring->id, 
&dev_priv->gpu_error.missed_irq_rings)) {
-                                               if 
(!(dev_priv->gpu_error.test_irq_rings & intel_ring_flag(ring)))
-                                                       DRM_ERROR("Hangcheck 
timer elapsed... %s idle\n",
-                                                                 ring->name);
-                                               else
-                                                       DRM_INFO("Fake missed 
irq on %s\n",
-                                                                ring->name);
-                                               wake_up_all(&ring->irq_queue);
-                                       }
+                                       set_bit(ring->id, 
&dev_priv->gpu_error.missed_irq_rings);
+                                       wake_up_all(&ring->irq_queue);
                                        /* Safeguard against driver failure */
                                        ring->hangcheck.score += BUSY;
-                               } else
-                                       busy = false;
+                                       busy = true;
+                               }
                        } else {
                                /* We always increment the hangcheck score
                                 * if the ring is busy and still processing
-- 
1.9.1

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to