All of lore.kernel.org
 help / color / mirror / Atom feed
From: Katarzyna Dec <katarzyna.dec@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH i-g-t v2] pm_rps: Changes in waitboost scenario
Date: Fri, 18 Aug 2017 13:08:44 +0200	[thread overview]
Message-ID: <20170818110844.15792-1-katarzyna.dec@intel.com> (raw)
In-Reply-To: <20170818073311.8924-1-katarzyna.dec@intel.com>

CI is observing sporadical failures in pm_rps subtests.
There are a couple of reasons. One of them is the fact that
on gen6, gen7 and gen7.5, max frequency (as in the HW limit)
is not set to RP0, but the value obtaind from PCODE (which
may be different from RP0). Thus the test is operating under
wrong assumptions (SOFTMAX == RP0 == BOOST which is simply
not the case). Let's compare current frequency with BOOST
frequency rather than SOFTMAX to get the test behaviour under control.
We're also seeing failures with boost frequency failing to drop
down before we start measuring on low.
While I'm here let's also make sure that we're running as DRM
master to catch the common case, where the test is being ran
along with Xorg.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jeff Mcgee <jeff.mcgee@intel.com>
Cc: Radoslaw Szwichtenberg <radoslaw.szwichtenberg@intel.com>
Signed-off-by: Katarzyna Dec <katarzyna.dec@intel.com>
---
 tests/pm_rps.c | 39 ++++++++++++++++++++++++++++++---------
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/tests/pm_rps.c b/tests/pm_rps.c
index f0455e78..efe938e0 100644
--- a/tests/pm_rps.c
+++ b/tests/pm_rps.c
@@ -50,6 +50,7 @@ enum {
 	RP0,
 	RP1,
 	RPn,
+	BOOST,
 	NUMFREQ
 };
 
@@ -60,7 +61,7 @@ struct junk {
 	const char *mode;
 	FILE *filp;
 } stuff[] = {
-	{ "cur", "r", NULL }, { "min", "rb+", NULL }, { "max", "rb+", NULL }, { "RP0", "r", NULL }, { "RP1", "r", NULL }, { "RPn", "r", NULL }, { NULL, NULL, NULL }
+	{ "cur", "r", NULL }, { "min", "rb+", NULL }, { "max", "rb+", NULL }, { "RP0", "r", NULL }, { "RP1", "r", NULL }, { "RPn", "r", NULL }, { "boost", "rb+", NULL }, { NULL, NULL, NULL }
 };
 
 static int readval(FILE *filp)
@@ -560,29 +561,46 @@ static void reset_gpu(void)
 	close(fd);
 }
 
+static bool boost_finished(void)
+{
+	char buf[1024];
+
+	igt_debugfs_read(drm_fd, "i915_rps_boost_info", buf);
+	return strstr(buf, "Boosts outstanding? 0");
+}
+
 static void boost_freq(int fd, int *boost_freqs)
 {
 	int64_t timeout = 1;
-	int ring = -1;
 	igt_spin_t *load;
+	unsigned int engine;
 
-	load = igt_spin_batch_new(fd, ring, 0);
-
+	/* put boost on the same engine as low load */
+	engine = I915_EXEC_RENDER;
+	if (intel_gen(lh.devid) >= 6)
+		engine = I915_EXEC_BLT;
+	load = igt_spin_batch_new(fd, engine, 0);
 	/* Waiting will grant us a boost to maximum */
 	gem_wait(fd, load->handle, &timeout);
 
 	read_freqs(boost_freqs);
 	dump(boost_freqs);
+	igt_assert(!boost_finished());
 
+	/* Avoid downlocking till boost request is pending */
+	igt_spin_batch_end(load);
+	gem_sync(fd, load->handle);
 	igt_spin_batch_free(fd, load);
+
 }
 
+#define BOOST_WAIT_TIMESTEP_MSEC 250
+#define BOOST_WAIT_TIMEOUT_MSEC 15000
 static void waitboost(bool reset)
 {
 	int pre_freqs[NUMFREQ];
 	int boost_freqs[NUMFREQ];
 	int post_freqs[NUMFREQ];
-
 	int fd = drm_open_driver(DRIVER_INTEL);
 
 	load_helper_run(LOW);
@@ -602,6 +620,9 @@ static void waitboost(bool reset)
 	 */
 	boost_freq(fd, boost_freqs);
 
+	/* Wait till boost ends */
+	igt_assert(igt_wait(boost_finished(), BOOST_WAIT_TIMEOUT_MSEC, BOOST_WAIT_TIMESTEP_MSEC));
+
 	igt_debug("Apply low load again...\n");
 	sleep(1);
 	stabilize_check(post_freqs);
@@ -611,7 +632,7 @@ static void waitboost(bool reset)
 	idle_check();
 
 	igt_assert_lt(pre_freqs[CUR], pre_freqs[MAX]);
-	igt_assert_eq(boost_freqs[CUR], boost_freqs[MAX]);
+	igt_assert_eq(boost_freqs[CUR], boost_freqs[BOOST]);
 	igt_assert_lt(post_freqs[CUR], post_freqs[MAX]);
 
 	close(fd);
@@ -640,8 +661,8 @@ igt_main
 		struct junk *junk = stuff;
 		int ret;
 
-		/* Use drm_open_driver to verify device existence */
-		drm_fd = drm_open_driver(DRIVER_INTEL);
+		/* Use drm_open_driver to to force running tests as drm master */
+		drm_fd = drm_open_driver_master(DRIVER_INTEL);
 		igt_require_gem(drm_fd);
 		igt_require(gem_can_store_dword(drm_fd, 0));
 
@@ -657,7 +678,7 @@ igt_main
 			val = readval(junk->filp);
 			igt_assert(val >= 0);
 			junk++;
-		} while(junk->name != NULL);
+		} while (junk->name != NULL);
 
 		read_freqs(origfreqs);
 
-- 
2.13.4

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

  parent reply	other threads:[~2017-08-18 11:08 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-18  7:33 [PATCH i-g-t] pm_rps: Changes in waitboost scenario Katarzyna Dec
2017-08-18  7:57 ` ✓ Fi.CI.BAT: success for " Patchwork
2017-08-18 11:08 ` Katarzyna Dec [this message]
2017-08-18 13:45   ` [PATCH i-g-t v2] " Chris Wilson
2017-08-18 20:28     ` Daniel Vetter
2017-08-18 20:42       ` Chris Wilson
2017-08-21  8:29         ` Dec, Katarzyna
2017-08-21  8:53           ` Chris Wilson
2017-08-21 10:43             ` Dec, Katarzyna
2017-08-21 11:29               ` Chris Wilson
2017-08-18 13:47   ` Chris Wilson
2017-08-21 13:50   ` [PATCH i-g-t v3] " Katarzyna Dec
2017-08-22 12:40     ` Katarzyna Dec
2017-08-24  9:44       ` Chris Wilson
2017-08-28  8:50       ` [PATCH i-g-t v4] " Katarzyna Dec
2017-08-29  7:43         ` Szwichtenberg, Radoslaw
2017-08-29  8:30           ` Daniel Vetter
2017-08-29  8:57         ` [PATCH i-g-t v5] " Katarzyna Dec
2017-08-30 13:05           ` [PATCH i-g-t v6] " Katarzyna Dec
2017-08-30 13:21             ` [PATCH i-g-t v7] " Katarzyna Dec
2017-08-31  7:40               ` [PATCH i-g-t v8] " Katarzyna Dec
2017-08-18 13:22 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev2) Patchwork
2017-08-18 13:38 ` [PATCH i-g-t] pm_rps: Changes in waitboost scenario Chris Wilson
2017-08-21 14:22 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev3) Patchwork
2017-08-22 13:00 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev4) Patchwork
2017-08-28  9:09 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev6) Patchwork
2017-08-28 10:20 ` ✗ Fi.CI.IGT: warning " Patchwork
2017-08-29  9:16 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev7) Patchwork
2017-08-29 10:27 ` ✗ Fi.CI.IGT: warning " Patchwork
2017-08-30 13:28 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev8) Patchwork
2017-08-30 13:45 ` ✓ Fi.CI.BAT: success for pm_rps: Changes in waitboost scenario (rev9) Patchwork
2017-08-30 14:53 ` ✗ Fi.CI.IGT: warning " Patchwork
2017-08-31 13:03 ` ✗ Fi.CI.BAT: failure for pm_rps: Changes in waitboost scenario (rev10) Patchwork
2017-08-31 14:31   ` Arkadiusz Hiler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170818110844.15792-1-katarzyna.dec@intel.com \
    --to=katarzyna.dec@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.