[igt-dev] [PATCH i-g-t] i915/i915_pm_rc6_residency: Make ringbuffer rc6 fast

Chris Wilson chris at chris-wilson.co.uk
Tue Mar 24 12:52:33 UTC 2020


The legacy ringbuffer submission lacks a fast soft-rc6
mechanism as we have no interrupt for an idle ring. As such
we are at the mercy of HW RC6... which is not quite as
precise as we need to pass this test. Oh well.

Since HW is not fast enough to minimise power draw, tell the driver to
park as soon as we know we are idle. One day, we hope for the driver to
discover a mechanism to do this for itself, for as this test shows that
can save us Watts!

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1516
Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 tests/i915/i915_pm_rc6_residency.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/tests/i915/i915_pm_rc6_residency.c b/tests/i915/i915_pm_rc6_residency.c
index f507f76bc..d2dc37a16 100644
--- a/tests/i915/i915_pm_rc6_residency.c
+++ b/tests/i915/i915_pm_rc6_residency.c
@@ -310,6 +310,17 @@ static void bg_load(int i915, unsigned int flags, unsigned long *ctl)
 		}
 		ctl[1]++;
 
+		/*
+		 * The legacy ringbuffer submission lacks a fast soft-rc6
+		 * mechanism as we have no interrupt for an idle ring. As such
+		 * we are at the mercy of HW RC6... which is not quite as
+		 * precise as we need to pass this test. Oh well.
+		 *
+		 * Fake it until we make it.
+		 */
+		if (!gem_has_execlists(i915))
+			igt_drop_caches_set(i915, DROP_IDLE);
+
 		usleep(igt_nsec_elapsed(&tv) / 10); /* => 1% busy */
 	} while (!READ_ONCE(*ctl));
 }
-- 
2.26.0.rc2



More information about the igt-dev mailing list