[Intel-gfx] [PATCH] drm/i915/selftests: Show the full scaling curve on failure
Mika Kuoppala
mika.kuoppala at linux.intel.com
Tue Apr 21 14:00:08 UTC 2020
Chris Wilson <chris at chris-wilson.co.uk> writes:
> If we detect that the RPS end points do not scale perfectly, take the
> time to measure all the in between values as well. We are aborting the
> test, so we might as well spend the available time gathering critical
> debug information instead.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> ---
> drivers/gpu/drm/i915/gt/selftest_rps.c | 36 ++++++++++++++++++++++++++
> 1 file changed, 36 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c b/drivers/gpu/drm/i915/gt/selftest_rps.c
> index e0a791eac752..f8c416ab8539 100644
> --- a/drivers/gpu/drm/i915/gt/selftest_rps.c
> +++ b/drivers/gpu/drm/i915/gt/selftest_rps.c
> @@ -484,11 +484,29 @@ int live_rps_frequency_cs(void *arg)
> if (!scaled_within(max.freq * min.count,
> min.freq * max.count,
> 2, 3)) {
> + int f;
> +
> pr_err("%s: CS did not scale with frequency! scaled min:%llu, max:%llu\n",
> engine->name,
> max.freq * min.count,
> min.freq * max.count);
> show_pcu_config(rps);
> +
> + for (f = min.freq + 1; f <= rps->max_freq; f++) {
> + int act = f;
> + u64 count;
> +
> + count = measure_cs_frequency_at(rps, engine, &act);
> + if (act < f)
> + break;
> +
No gripes but in here I ponder would you like to break after the info.
Reviewed-by: Mika Kuoppala <mika.kuoppala at linux.intel.com>
> + pr_info("%s: %x:%uMHz: %lluKHz [%d%%]\n",
> + engine->name,
> + act, intel_gpu_freq(rps, act), count,
> + (int)DIV64_U64_ROUND_CLOSEST(100 * min.freq * count,
> + act * min.count));
> + }
> +
> err = -EINVAL;
> }
>
> @@ -593,11 +611,29 @@ int live_rps_frequency_srm(void *arg)
> if (!scaled_within(max.freq * min.count,
> min.freq * max.count,
> 1, 2)) {
> + int f;
> +
> pr_err("%s: CS did not scale with frequency! scaled min:%llu, max:%llu\n",
> engine->name,
> max.freq * min.count,
> min.freq * max.count);
> show_pcu_config(rps);
> +
> + for (f = min.freq + 1; f <= rps->max_freq; f++) {
> + int act = f;
> + u64 count;
> +
> + count = measure_frequency_at(rps, cntr, &act);
> + if (act < f)
> + break;
> +
> + pr_info("%s: %x:%uMHz: %lluKHz [%d%%]\n",
> + engine->name,
> + act, intel_gpu_freq(rps, act), count,
> + (int)DIV64_U64_ROUND_CLOSEST(100 * min.freq * count,
> + act * min.count));
> + }
> +
> err = -EINVAL;
> }
>
> --
> 2.20.1
More information about the Intel-gfx
mailing list