[PATCH 1/1] drm/i915: Clear stop-engine on full reset as well

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Thu Nov 14 14:47:16 UTC 2019


Commit a99b32a6fff7 ("drm/i915: Clear stop-engine for a pardoned
reset") introduced a new function which cancels STOP_RING operation.
It is called unconditionally after each per-engine reset to prevent
from engine hangs caused by STOP_RING bit possibly left asserted if the
reset is skipped.

As the same may happen when global reset is skipped, e.g. due to being
disabled or not supported, do the same for each engine on full reset as
well.

Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
---
 drivers/gpu/drm/i915/gt/intel_reset.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/i915/gt/intel_reset.c b/drivers/gpu/drm/i915/gt/intel_reset.c
index f03e000051c1..90f8a0b44410 100644
--- a/drivers/gpu/drm/i915/gt/intel_reset.c
+++ b/drivers/gpu/drm/i915/gt/intel_reset.c
@@ -722,6 +722,8 @@ static int gt_reset(struct intel_gt *gt, intel_engine_mask_t stalled_mask)
 
 static void reset_finish_engine(struct intel_engine_cs *engine)
 {
+	intel_engine_cancel_stop_cs(engine);
+
 	engine->reset.finish(engine);
 	intel_uncore_forcewake_put(engine->uncore, FORCEWAKE_ALL);
 
@@ -1112,7 +1114,6 @@ int intel_engine_reset(struct intel_engine_cs *engine, const char *msg)
 	ret = engine->resume(engine);
 
 out:
-	intel_engine_cancel_stop_cs(engine);
 	reset_finish_engine(engine);
 	intel_engine_pm_put(engine);
 	return ret;
-- 
2.21.0



More information about the Intel-gfx-trybot mailing list