Chris Wilson <[email protected]> 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 <[email protected]>
> Cc: Mika Kuoppala <[email protected]>
> ---
>  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 <[email protected]>

> +                             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
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to