---
 drivers/gpu/drm/i915/intel_breadcrumbs.c | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_breadcrumbs.c 
b/drivers/gpu/drm/i915/intel_breadcrumbs.c
index 2044dee3cce4..39f585abd3fd 100644
--- a/drivers/gpu/drm/i915/intel_breadcrumbs.c
+++ b/drivers/gpu/drm/i915/intel_breadcrumbs.c
@@ -80,12 +80,6 @@ static void intel_breadcrumbs_hangcheck(unsigned long data)
        if (!b->irq_armed)
                return;
 
-       if (b->hangcheck_interrupts != atomic_read(&engine->irq_count)) {
-               b->hangcheck_interrupts = atomic_read(&engine->irq_count);
-               mod_timer(&b->hangcheck, wait_timeout());
-               return;
-       }
-
        /* We keep the hangcheck timer alive until we disarm the irq, even
         * if there are no waiters at present.
         *
@@ -98,10 +92,12 @@ static void intel_breadcrumbs_hangcheck(unsigned long data)
         * but we still have a waiter. Assuming all batches complete within
         * DRM_I915_HANGCHECK_JIFFIES [1.5s]!
         */
-       if (intel_engine_wakeup(engine) & ENGINE_WAKEUP_ASLEEP) {
+       if (intel_engine_wakeup(engine) & ENGINE_WAKEUP_ASLEEP &&
+           b->hangcheck_interrupts == atomic_read(&engine->irq_count)) {
                missed_breadcrumb(engine);
                mod_timer(&engine->breadcrumbs.fake_irq, jiffies + 1);
        } else {
+               b->hangcheck_interrupts = atomic_read(&engine->irq_count);
                mod_timer(&b->hangcheck, wait_timeout());
        }
 }
-- 
2.11.0

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

Reply via email to