[Intel-gfx] [PATCH] hmm
Chris Wilson
chris at chris-wilson.co.uk
Tue Apr 4 10:23:46 UTC 2017
---
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
More information about the Intel-gfx
mailing list