All of lore.kernel.org
 help / color / mirror / Atom feed
* [CI 1/2] drm/i915: Tidy reporting busy status during i915_gem_retire_requests()
@ 2016-08-27  7:54 Chris Wilson
  2016-08-27  7:54 ` [CI 2/2] drm/i915: Make for_each_engine_masked() more compact and quicker Chris Wilson
  2016-08-27  8:21 ` ✗ Fi.CI.BAT: warning for series starting with [CI,1/2] drm/i915: Tidy reporting busy status during i915_gem_retire_requests() Patchwork
  0 siblings, 2 replies; 7+ messages in thread
From: Chris Wilson @ 2016-08-27  7:54 UTC (permalink / raw)
  To: intel-gfx

As we know by inspection whether any engine is still busy as we retire
all the requests, we can pass that information back via return value
rather than check again afterwards.

v2: A little more polish missed in patch splitting

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_gem_request.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem_request.c b/drivers/gpu/drm/i915/i915_gem_request.c
index 1a215320cefb..5e55270bb2de 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -749,16 +749,18 @@ complete:
 	return ret;
 }
 
-static void engine_retire_requests(struct intel_engine_cs *engine)
+static bool engine_retire_requests(struct intel_engine_cs *engine)
 {
 	struct drm_i915_gem_request *request, *next;
 
 	list_for_each_entry_safe(request, next, &engine->request_list, link) {
 		if (!i915_gem_request_completed(request))
-			break;
+			return false;
 
 		i915_gem_request_retire(request);
 	}
+
+	return true;
 }
 
 void i915_gem_retire_requests(struct drm_i915_private *dev_priv)
@@ -772,11 +774,9 @@ void i915_gem_retire_requests(struct drm_i915_private *dev_priv)
 
 	GEM_BUG_ON(!dev_priv->gt.awake);
 
-	for_each_engine(engine, dev_priv) {
-		engine_retire_requests(engine);
-		if (!intel_engine_is_active(engine))
+	for_each_engine_masked(engine, dev_priv, dev_priv->gt.active_engines)
+		if (engine_retire_requests(engine))
 			dev_priv->gt.active_engines &= ~intel_engine_flag(engine);
-	}
 
 	if (dev_priv->gt.active_engines == 0)
 		queue_delayed_work(dev_priv->wq,
-- 
2.9.3

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-09-01 16:59 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-27  7:54 [CI 1/2] drm/i915: Tidy reporting busy status during i915_gem_retire_requests() Chris Wilson
2016-08-27  7:54 ` [CI 2/2] drm/i915: Make for_each_engine_masked() more compact and quicker Chris Wilson
2016-09-01 14:17   ` [PATCH] Another flavour of for_each_engine_masked() Dave Gordon
2016-09-01 14:36     ` Joonas Lahtinen
2016-09-01 14:48     ` Chris Wilson
2016-09-01 16:59       ` Dave Gordon
2016-08-27  8:21 ` ✗ Fi.CI.BAT: warning for series starting with [CI,1/2] drm/i915: Tidy reporting busy status during i915_gem_retire_requests() Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.