Chris Wilson <[email protected]> writes:

> intel_engine_init_globa_seqno() may be called from an uncontrolled
> set-wedged path where we have given up waiting for broken hw and declare
> it defunct. Along that path, any sanity checks that the hw is idle
> before we adjust its state will expectedly fail, so we simply cannot.
> Instead of asserting inside init_global_seqno, we move them to the
> normal caller reset_all_global_seqno() as it handles runtime seqno
> wraparound.
>
> Signed-off-by: Chris Wilson <[email protected]>

Reviewed-by: Mika Kuoppala <[email protected]>

> ---
>  drivers/gpu/drm/i915/i915_gem_request.c | 4 ++++
>  drivers/gpu/drm/i915/intel_engine_cs.c  | 3 ---
>  2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_gem_request.c 
> b/drivers/gpu/drm/i915/i915_gem_request.c
> index 483af8921060..d93a185c0f0a 100644
> --- a/drivers/gpu/drm/i915/i915_gem_request.c
> +++ b/drivers/gpu/drm/i915/i915_gem_request.c
> @@ -213,6 +213,10 @@ static int reset_all_global_seqno(struct 
> drm_i915_private *i915, u32 seqno)
>                               cond_resched();
>               }
>  
> +             /* Check we are idle before we fiddle with hw state! */
> +             GEM_BUG_ON(!intel_engine_is_idle(engine));
> +             
> GEM_BUG_ON(i915_gem_active_isset(&engine->timeline->last_request));
> +
>               /* Finally reset hw state */
>               intel_engine_init_global_seqno(engine, seqno);
>               tl->seqno = seqno;
> diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c 
> b/drivers/gpu/drm/i915/intel_engine_cs.c
> index fbac94557ffa..19297e6aab41 100644
> --- a/drivers/gpu/drm/i915/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/intel_engine_cs.c
> @@ -337,9 +337,6 @@ void intel_engine_init_global_seqno(struct 
> intel_engine_cs *engine, u32 seqno)
>  {
>       struct drm_i915_private *dev_priv = engine->i915;
>  
> -     GEM_BUG_ON(!intel_engine_is_idle(engine));
> -     GEM_BUG_ON(i915_gem_active_isset(&engine->timeline->last_request));
> -
>       /* Our semaphore implementation is strictly monotonic (i.e. we proceed
>        * so long as the semaphore value in the register/page is greater
>        * than the sync value), so whenever we reset the seqno,
> -- 
> 2.13.2
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to