--- 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 Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx