diff options
Diffstat (limited to 'drivers/gpu/drm/i915/gt/selftest_rps.c')
-rw-r--r-- | drivers/gpu/drm/i915/gt/selftest_rps.c | 18 |
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 = >->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 = >->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; } |