[PATCH] check mod_delayed_work

Tvrtko Ursulin tursulin at ursulin.net
Tue Feb 20 14:35:48 UTC 2018


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 drivers/gpu/drm/i915/i915_drv.h         | 2 ++
 drivers/gpu/drm/i915/i915_gem.c         | 7 ++++++-
 drivers/gpu/drm/i915/i915_gem_request.c | 1 +
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 76bfe909168c..b9747ec24ec9 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -2355,6 +2355,8 @@ struct drm_i915_private {
 		struct delayed_work idle_work;
 
 		ktime_t last_init_time;
+
+		ktime_t idle_queued;
 	} gt;
 
 	/* perform PHY state sanity checks? */
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 631a2db2bb6e..fbf28c278220 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3420,6 +3420,11 @@ i915_gem_idle_work_handler(struct work_struct *work)
 	bool rearm_hangcheck;
 	ktime_t end;
 
+	end = ktime_get() - dev_priv->gt.idle_queued;
+	if (ktime_to_ms(end) < 100)
+		DRM_ERROR("idle work ran after %llums\n", ktime_to_ms(end));
+
+
 	if (!READ_ONCE(dev_priv->gt.awake))
 		return;
 
@@ -3445,7 +3450,7 @@ i915_gem_idle_work_handler(struct work_struct *work)
 		/* Currently busy, come back later */
 		mod_delayed_work(dev_priv->wq,
 				 &dev_priv->gt.idle_work,
-				 msecs_to_jiffies(50));
+				 msecs_to_jiffies(100));
 		goto out_rearm;
 	}
 
diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
index 8bc7c50b8418..ee1295b297ab 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -321,6 +321,7 @@ static void unreserve_engine(struct intel_engine_cs *engine)
 	if (!--i915->gt.active_requests) {
 		/* Cancel the mark_busy() from our reserve_engine() */
 		GEM_BUG_ON(!i915->gt.awake);
+		i915->gt.idle_queued = ktime_get();
 		mod_delayed_work(i915->wq,
 				 &i915->gt.idle_work,
 				 msecs_to_jiffies(100));
-- 
2.14.1



More information about the Intel-gfx-trybot mailing list