In the next patch, we will start to defer retiring the request from the
engine list if it is still active on the submission backend. To preserve
the semantics that after wait-for-idle completes the system is idle and
fully retired, we need to therefore wait for the backends to idle before
calling i915_retire_requests().

Signed-off-by: Chris Wilson <[email protected]>
---
 drivers/gpu/drm/i915/i915_gem.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 5155e458b11e..44bafb839dd7 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -3810,10 +3810,13 @@ int i915_gem_wait_for_idle(struct drm_i915_private 
*i915, unsigned int flags)
                        if (err)
                                return err;
                }
+
+               err = wait_for_engines(i915);
+               if (err)
+                       return err;
+
                i915_retire_requests(i915);
                GEM_BUG_ON(i915->gt.active_requests);
-
-               return wait_for_engines(i915);
        } else {
                struct intel_engine_cs *engine;
                enum intel_engine_id id;
@@ -3824,9 +3827,9 @@ int i915_gem_wait_for_idle(struct drm_i915_private *i915, 
unsigned int flags)
                        if (err)
                                return err;
                }
-
-               return 0;
        }
+
+       return 0;
 }
 
 static void __i915_gem_object_flush_for_display(struct drm_i915_gem_object 
*obj)
-- 
2.17.1

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to