]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/i915/selftest: Change throttle criteria for rps
authorRaag Jadav <raag.jadav@intel.com>
Thu, 2 Jan 2025 11:06:18 +0000 (16:36 +0530)
committerAndi Shyti <andi.shyti@kernel.org>
Sat, 11 Jan 2025 12:44:40 +0000 (13:44 +0100)
Current live_rps_control() implementation errors out on throttling.
This was done with the assumption that throttling to minimum frequency
is a catastrophic failure, which is incorrect. Throttling can happen
due to variety of reasons and often times out of our control. Also,
the resulting frequency can be at any given point below the maximum
allowed. Change throttle criteria to reflect this logic and drop the
error, as it doesn't necessarily mean selftest failure.

Signed-off-by: Raag Jadav <raag.jadav@intel.com>
Reviewed-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Acked-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20250102110618.174415-1-raag.jadav@intel.com
drivers/gpu/drm/i915/gt/selftest_rps.c

index c207a4fb03bf4f6153a35c3ae0632526f6e92920..2d342bd61a3164cb52986682b89bb861e87c6597 100644 (file)
@@ -477,12 +477,13 @@ int live_rps_control(void *arg)
                        limit, intel_gpu_freq(rps, limit),
                        min, max, ktime_to_ns(min_dt), ktime_to_ns(max_dt));
 
-               if (limit == rps->min_freq) {
-                       pr_err("%s: GPU throttled to minimum!\n",
-                              engine->name);
+               if (limit != rps->max_freq) {
+                       u32 throttle = intel_uncore_read(gt->uncore,
+                                                        intel_gt_perf_limit_reasons_reg(gt));
+
+                       pr_warn("%s: GPU throttled with reasons 0x%08x\n",
+                               engine->name, throttle & GT0_PERF_LIMIT_REASONS_MASK);
                        show_pstate_limits(rps);
-                       err = -ENODEV;
-                       break;
                }
 
                if (igt_flush_test(gt->i915)) {