All of lore.kernel.org
 help / color / mirror / Atom feed
* [Intel-gfx] [PATCH] drm/i915/selftests: Disable C-states when measuring RPS frequency response
@ 2020-04-21 14:22 Chris Wilson
  2020-04-21 14:45 ` Mika Kuoppala
  2020-04-21 15:21 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork
  0 siblings, 2 replies; 3+ messages in thread
From: Chris Wilson @ 2020-04-21 14:22 UTC (permalink / raw)
  To: intel-gfx; +Cc: Chris Wilson

Let's isolate the impact of cpu frequency selection on determing the GPU
throughput in response to selection of RPS frequencies.

For real systems, we do have to be concerned with the impact of
integrating c-states, p-states and rp-states, but for the sake of
proving whether or not RPS works, one baby step at a time.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
---
 drivers/gpu/drm/i915/gt/selftest_rps.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

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 @@ int live_rps_frequency_cs(void *arg)
 	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 @@ int live_rps_frequency_srm(void *arg)
 	intel_gt_pm_wait_for_idle(gt);
 	rps->work.func = saved_work;
 
+	if (CPU_LATENCY >= 0)
+		cpu_latency_qos_remove_request(&qos);
+
 	return err;
 }
 
-- 
2.20.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-04-21 15:21 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-21 14:22 [Intel-gfx] [PATCH] drm/i915/selftests: Disable C-states when measuring RPS frequency response Chris Wilson
2020-04-21 14:45 ` Mika Kuoppala
2020-04-21 15:21 ` [Intel-gfx] ✗ Fi.CI.BAT: failure for " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.