Chris Wilson <[email protected]> writes:

> When debugging the engine state, include the user properties that may,
> or may not, have been adjusted by the user/test.
>
> For example,
> vecs0
>       ...
>       Properties:
>               heartbeat_interval_ms: 2500 [default 2500]
>               max_busywait_duration_ns: 8000 [default 8000]
>               preempt_timeout_ms: 640 [default 640]
>               stop_timeout_ms: 100 [default 100]
>               timeslice_duration_ms: 1 [default 1]
>
> Suggested-by: Joonas Lahtinen <[email protected]>
> Signed-off-by: Chris Wilson <[email protected]>
> Cc: Joonas Lahtinen <[email protected]>
> Cc: Mika Kuoppala <[email protected]>

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

> ---
>  drivers/gpu/drm/i915/gt/intel_engine_cs.c | 36 +++++++++++++++++++++++
>  1 file changed, 36 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_engine_cs.c 
> b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> index f231edd3fa3a..1579a80bc8cb 100644
> --- a/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> +++ b/drivers/gpu/drm/i915/gt/intel_engine_cs.c
> @@ -1599,6 +1599,41 @@ static unsigned long list_count(struct list_head *list)
>       return count;
>  }
>  
> +static unsigned long read_ul(void *p, size_t x)
> +{
> +     return *(unsigned long *)(p + x);
> +}
> +
> +static void print_properties(struct intel_engine_cs *engine,
> +                          struct drm_printer *m)
> +{
> +     static const struct pmap {
> +             size_t offset;
> +             const char *name;
> +     } props[] = {
> +#define P(x) { \
> +     .offset = offsetof(typeof(engine->props), x), \
> +     .name = #x \
> +}
> +             P(heartbeat_interval_ms),
> +             P(max_busywait_duration_ns),
> +             P(preempt_timeout_ms),
> +             P(stop_timeout_ms),
> +             P(timeslice_duration_ms),
> +
> +             {},
> +#undef P
> +     };
> +     const struct pmap *p;
> +
> +     drm_printf(m, "\tProperties:\n");
> +     for (p = props; p->name; p++)
> +             drm_printf(m, "\t\t%s: %lu [default %lu]\n",
> +                        p->name,
> +                        read_ul(&engine->props, p->offset),
> +                        read_ul(&engine->defaults, p->offset));
> +}
> +
>  void intel_engine_dump(struct intel_engine_cs *engine,
>                      struct drm_printer *m,
>                      const char *header, ...)
> @@ -1641,6 +1676,7 @@ void intel_engine_dump(struct intel_engine_cs *engine,
>       drm_printf(m, "\tReset count: %d (global %d)\n",
>                  i915_reset_engine_count(error, engine),
>                  i915_reset_count(error));
> +     print_properties(engine, m);
>  
>       drm_printf(m, "\tRequests:\n");
>  
> -- 
> 2.20.1
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to