[Intel-gfx] [PATCH 08/39] drm/i915/gt: Show engine properties in the pretty printer
Mika Kuoppala
mika.kuoppala at linux.intel.com
Thu Aug 27 12:25:30 UTC 2020
Chris Wilson <chris at chris-wilson.co.uk> 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 <joonas.lahtinen at linux.intel.com>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Joonas Lahtinen <joonas.lahtinen at linux.intel.com>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> 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
More information about the Intel-gfx
mailing list