As the list retirement is now clean of implementation details, we can
move it closer to the request management.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahti...@linux.intel.com>
---
 drivers/gpu/drm/i915/i915_gem.c         | 44 ---------------------------------
 drivers/gpu/drm/i915/i915_gem_request.c | 35 ++++++++++++++++++++++++++
 2 files changed, 35 insertions(+), 44 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index d320d3711fa5..ac89c4c2008a 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2534,50 +2534,6 @@ void i915_gem_reset(struct drm_device *dev)
        i915_gem_restore_fences(dev);
 }
 
-/**
- * This function clears the request list as sequence numbers are passed.
- * @engine: engine to retire requests on
- */
-void
-i915_gem_retire_requests_ring(struct intel_engine_cs *engine)
-{
-       while (!list_empty(&engine->request_list)) {
-               struct drm_i915_gem_request *request;
-
-               request = list_first_entry(&engine->request_list,
-                                          struct drm_i915_gem_request,
-                                          link);
-
-               if (!i915_gem_request_completed(request))
-                       break;
-
-               i915_gem_request_retire_upto(request);
-       }
-}
-
-void i915_gem_retire_requests(struct drm_i915_private *dev_priv)
-{
-       struct intel_engine_cs *engine;
-
-       lockdep_assert_held(&dev_priv->drm.struct_mutex);
-
-       if (dev_priv->gt.active_engines == 0)
-               return;
-
-       GEM_BUG_ON(!dev_priv->gt.awake);
-
-       for_each_engine(engine, dev_priv) {
-               i915_gem_retire_requests_ring(engine);
-               if (list_empty(&engine->request_list))
-                       dev_priv->gt.active_engines &= 
~intel_engine_flag(engine);
-       }
-
-       if (dev_priv->gt.active_engines == 0)
-               queue_delayed_work(dev_priv->wq,
-                                  &dev_priv->gt.idle_work,
-                                  msecs_to_jiffies(100));
-}
-
 static void
 i915_gem_retire_work_handler(struct work_struct *work)
 {
diff --git a/drivers/gpu/drm/i915/i915_gem_request.c 
b/drivers/gpu/drm/i915/i915_gem_request.c
index 8549375aa75e..6faa84832ade 100644
--- a/drivers/gpu/drm/i915/i915_gem_request.c
+++ b/drivers/gpu/drm/i915/i915_gem_request.c
@@ -731,3 +731,38 @@ complete:
 
        return ret;
 }
+
+void i915_gem_retire_requests_ring(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;
+
+               i915_gem_request_retire(request);
+       }
+}
+
+void i915_gem_retire_requests(struct drm_i915_private *dev_priv)
+{
+       struct intel_engine_cs *engine;
+
+       lockdep_assert_held(&dev_priv->drm.struct_mutex);
+
+       if (dev_priv->gt.active_engines == 0)
+               return;
+
+       GEM_BUG_ON(!dev_priv->gt.awake);
+
+       for_each_engine(engine, dev_priv) {
+               i915_gem_retire_requests_ring(engine);
+               if (list_empty(&engine->request_list))
+                       dev_priv->gt.active_engines &= 
~intel_engine_flag(engine);
+       }
+
+       if (dev_priv->gt.active_engines == 0)
+               queue_delayed_work(dev_priv->wq,
+                                  &dev_priv->gt.idle_work,
+                                  msecs_to_jiffies(100));
+}
-- 
2.8.1

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

Reply via email to