Re: [PATCH 06/71] drm/i915: Detect if we missed kicking the execlists tasklet

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Chris Wilson (2018-05-03 07:36:52)
> If inside hangcheck we see that the engine has paused, but there is an
> execlists interrupt still pending, we know that the tasklet did not
> fire. Dump the GEM trace along with the current engine state, and kick
> the tasklet to recovery without having to go through a GPU reset.
> 
> Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx>
> Cc: Mika Kuoppala <mika.kuoppala@xxxxxxxxxxxxxxx>

Oh I thought I sent this earlier, but I appear not to have.
Please review as it can go in all by itself...

>  drivers/gpu/drm/i915/intel_hangcheck.c | 23 +++++++++++++++++++++++
>  1 file changed, 23 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/intel_hangcheck.c b/drivers/gpu/drm/i915/intel_hangcheck.c
> index 309e38b00e95..2d7f10492e35 100644
> --- a/drivers/gpu/drm/i915/intel_hangcheck.c
> +++ b/drivers/gpu/drm/i915/intel_hangcheck.c
> @@ -267,6 +267,29 @@ engine_stuck(struct intel_engine_cs *engine, u64 acthd)
>                 }
>         }
>  
> +       if (test_bit(ENGINE_IRQ_EXECLIST, &engine->irq_posted)) {
> +               struct intel_engine_execlists *execlists = &engine->execlists;
> +               enum intel_engine_hangcheck_action ret = ENGINE_WAIT;
> +
> +               if (GEM_SHOW_DEBUG()) {
> +                       struct drm_printer p = drm_debug_printer("hangcheck");
> +
> +                       GEM_TRACE_DUMP();
> +                       intel_engine_dump(engine, &p,
> +                                         "%s stuck\n", engine->name);
> +               }
> +
> +               if (tasklet_trylock(&execlists->tasklet)) {
> +                       execlists->tasklet.func(execlists->tasklet.data);
> +                       tasklet_unlock(&execlists->tasklet);
> +
> +                       ret = ENGINE_WAIT_KICK;
> +               }
> +
> +               tasklet_hi_schedule(&execlists->tasklet);
> +               return ret;
> +       }
> +
>         return ENGINE_DEAD;
>  }
>  
> -- 
> 2.17.0
> 
_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux