[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