[RFC v5 5/8] drm/i915: Retire requests during reset prepare
Michal Wajdeczko
michal.wajdeczko at intel.com
Mon Jan 14 13:18:49 UTC 2019
WIP v2
Signed-off-by: Michal Wajdeczko <michal.wajdeczko at intel.com>
---
drivers/gpu/drm/i915/i915_gem.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index a4435a807e83..0f911f6039fa 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2968,6 +2968,8 @@ int i915_gem_reset_prepare(struct drm_i915_private *dev_priv)
enum intel_engine_id id;
int err = 0;
+ lockdep_assert_held(&dev_priv->drm.struct_mutex);
+
for_each_engine(engine, dev_priv, id) {
request = i915_gem_reset_prepare_engine(engine);
if (IS_ERR(request)) {
@@ -2979,6 +2981,16 @@ int i915_gem_reset_prepare(struct drm_i915_private *dev_priv)
}
i915_gem_revoke_fences(dev_priv);
+ i915_retire_requests(dev_priv);
+
+ /*
+ * We are idle; the idle-worker will be queued, but we need to run
+ * it now. As we already hold the struct mutex, we can park the GPU
+ * right away, letting the lazy worker see that we are already active
+ * again by the time it acquires the mutex.
+ */
+ __i915_gem_park(dev_priv);
+
intel_uc_sanitize(dev_priv);
return err;
--
2.19.2
More information about the Intel-gfx-trybot
mailing list