Skip to content

Commit b913b33

Browse files
committed
drm/i915: Flush GT idle status upon reset
Upon resetting the GPU, we force the engines to be idle by clearing their request lists. However, I neglected to clear the GT active status and so the next request following the reset was not marking the device as busy again. (We had to wait until any outstanding retire worker finally ran and cleared the active status.) Fixes: 67d97da ("drm/i915: Only start retire worker when idle") Testcase: igt/pm_rps/reset Signed-off-by: Chris Wilson <[email protected]> Cc: Joonas Lahtinen <[email protected]> Link: http://patchwork.freedesktop.org/patch/msgid/[email protected] Reviewed-by: Joonas Lahtinen <[email protected]>
1 parent 3fef3a5 commit b913b33

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

drivers/gpu/drm/i915/i915_gem.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3169,6 +3169,8 @@ static void i915_gem_reset_engine_cleanup(struct intel_engine_cs *engine)
31693169
}
31703170

31713171
intel_ring_init_seqno(engine, engine->last_submitted_seqno);
3172+
3173+
engine->i915->gt.active_engines &= ~intel_engine_flag(engine);
31723174
}
31733175

31743176
void i915_gem_reset(struct drm_device *dev)
@@ -3186,6 +3188,7 @@ void i915_gem_reset(struct drm_device *dev)
31863188

31873189
for_each_engine(engine, dev_priv)
31883190
i915_gem_reset_engine_cleanup(engine);
3191+
mod_delayed_work(dev_priv->wq, &dev_priv->gt.idle_work, 0);
31893192

31903193
i915_gem_context_reset(dev);
31913194

0 commit comments

Comments
 (0)