summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/gt/selftest_rps.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/i915/gt/selftest_rps.c')
-rw-r--r--drivers/gpu/drm/i915/gt/selftest_rps.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/gt/selftest_rps.c b/drivers/gpu/drm/i915/gt/selftest_rps.c
index 395265121e43..e2afc2003caa 100644
--- a/drivers/gpu/drm/i915/gt/selftest_rps.c
+++ b/drivers/gpu/drm/i915/gt/selftest_rps.c
@@ -3,6 +3,7 @@
* Copyright © 2020 Intel Corporation
*/
+#include <linux/pm_qos.h>
#include <linux/sort.h>
#include "intel_engine_pm.h"
@@ -14,6 +15,9 @@
#include "selftests/igt_spinner.h"
#include "selftests/librapl.h"
+/* Try to isolate the impact of cstates from determing frequency response */
+#define CPU_LATENCY 0 /* -1 to disable pm_qos, 0 to disable cstates */
+
static void dummy_rps_work(struct work_struct *wrk)
{
}
@@ -406,6 +410,7 @@ int live_rps_frequency_cs(void *arg)
struct intel_gt *gt = arg;
struct intel_rps *rps = &gt->rps;
struct intel_engine_cs *engine;
+ struct pm_qos_request qos;
enum intel_engine_id id;
int err = 0;
@@ -421,6 +426,9 @@ int live_rps_frequency_cs(void *arg)
if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */
return 0;
+ if (CPU_LATENCY >= 0)
+ cpu_latency_qos_add_request(&qos, CPU_LATENCY);
+
intel_gt_pm_wait_for_idle(gt);
saved_work = rps->work.func;
rps->work.func = dummy_rps_work;
@@ -527,6 +535,9 @@ err_vma:
intel_gt_pm_wait_for_idle(gt);
rps->work.func = saved_work;
+ if (CPU_LATENCY >= 0)
+ cpu_latency_qos_remove_request(&qos);
+
return err;
}
@@ -536,6 +547,7 @@ int live_rps_frequency_srm(void *arg)
struct intel_gt *gt = arg;
struct intel_rps *rps = &gt->rps;
struct intel_engine_cs *engine;
+ struct pm_qos_request qos;
enum intel_engine_id id;
int err = 0;
@@ -551,6 +563,9 @@ int live_rps_frequency_srm(void *arg)
if (INTEL_GEN(gt->i915) < 8) /* for CS simplicity */
return 0;
+ if (CPU_LATENCY >= 0)
+ cpu_latency_qos_add_request(&qos, CPU_LATENCY);
+
intel_gt_pm_wait_for_idle(gt);
saved_work = rps->work.func;
rps->work.func = dummy_rps_work;
@@ -656,6 +671,9 @@ err_vma:
intel_gt_pm_wait_for_idle(gt);
rps->work.func = saved_work;
+ if (CPU_LATENCY >= 0)
+ cpu_latency_qos_remove_request(&qos);
+
return err;
}