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:67d97da349
("drm/i915: Only start retire worker when idle") Testcase: igt/pm_rps/reset Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1468397438-21226-1-git-send-email-chris@chris-wilson.co.uk Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> (cherry picked from commitb913b33c43
) Signed-off-by: Jani Nikula <jani.nikula@intel.com>
This commit is contained in:
parent
29b4817d40
commit
b06bc7ec4d
|
@ -3169,6 +3169,8 @@ static void i915_gem_reset_engine_cleanup(struct intel_engine_cs *engine)
|
|||
}
|
||||
|
||||
intel_ring_init_seqno(engine, engine->last_submitted_seqno);
|
||||
|
||||
engine->i915->gt.active_engines &= ~intel_engine_flag(engine);
|
||||
}
|
||||
|
||||
void i915_gem_reset(struct drm_device *dev)
|
||||
|
@ -3186,6 +3188,7 @@ void i915_gem_reset(struct drm_device *dev)
|
|||
|
||||
for_each_engine(engine, dev_priv)
|
||||
i915_gem_reset_engine_cleanup(engine);
|
||||
mod_delayed_work(dev_priv->wq, &dev_priv->gt.idle_work, 0);
|
||||
|
||||
i915_gem_context_reset(dev);
|
||||
|
||||
|
|
Loading…
Reference in New Issue