[Intel-gfx] [PATCH 2/2] tests: use lib igt_[get|set]_stop_rings()

Mika Kuoppala mika.kuoppala at linux.intel.com
Tue Mar 25 18:02:22 CET 2014


on gem_reset_stats, kms_flip and pm_rps.

Signed-off-by: Mika Kuoppala <mika.kuoppala at intel.com>
---
 tests/gem_reset_stats.c |   30 +-----------------------------
 tests/kms_flip.c        |   37 +++++--------------------------------
 tests/pm_rps.c          |   35 ++---------------------------------
 3 files changed, 8 insertions(+), 94 deletions(-)

diff --git a/tests/gem_reset_stats.c b/tests/gem_reset_stats.c
index 28679e7..d43e37e 100644
--- a/tests/gem_reset_stats.c
+++ b/tests/gem_reset_stats.c
@@ -236,37 +236,9 @@ static int exec_valid(int fd, int ctx)
 	return exec_valid_ring(fd, ctx, current_ring->exec);
 }
 
-static void stop_rings(const int mask)
-{
-	int fd;
-	char buf[80];
-
-	igt_assert((mask & ~((1 << NUM_RINGS) - 1)) == 0);
-	igt_assert(snprintf(buf, sizeof(buf), "0x%02x", mask) == 4);
-	fd = igt_debugfs_open("i915_ring_stop", O_WRONLY);
-	igt_assert(fd >= 0);
-
-	igt_assert(write(fd, buf, 4) == 4);
-	close(fd);
-}
-
 #define BUFSIZE (4 * 1024)
 #define ITEMS   (BUFSIZE >> 2)
 
-static int ring_to_mask(int ring)
-{
-	for (unsigned i = 0; i < NUM_RINGS; i++) {
-		const struct target_ring *r = &rings[i];
-
-		if (r->exec == ring)
-			return (1 << i);
-	}
-
-	igt_assert(0);
-
-	return -1;
-}
-
 static int inject_hang_ring(int fd, int ctx, int ring)
 {
 	struct drm_i915_gem_execbuffer2 execbuf;
@@ -356,7 +328,7 @@ static int inject_hang_ring(int fd, int ctx, int ring)
 
 	free(buf);
 
-	stop_rings(ring_to_mask(ring));
+	igt_set_stop_rings(igt_to_stop_ring_flag(ring));
 
 	return exec.handle;
 }
diff --git a/tests/kms_flip.c b/tests/kms_flip.c
index 7ba1656..24ef527 100644
--- a/tests/kms_flip.c
+++ b/tests/kms_flip.c
@@ -44,6 +44,7 @@
 #include "intel_batchbuffer.h"
 #include "igt_kms.h"
 #include "igt_aux.h"
+#include "igt_debugfs.h"
 
 #define TEST_DPMS		(1 << 0)
 #define TEST_WITH_DUMMY_BCS	(1 << 1)
@@ -692,35 +693,14 @@ static void set_y_tiling(struct test_output *o, int fb_idx)
 
 static void stop_rings(bool stop)
 {
-	static const char dfs_base[] = "/sys/kernel/debug/dri";
-	static const char dfs_entry[] = "i915_ring_stop";
-	static const char stop_data[] = "0xf";
-	static const char run_data[] = "0x0";
-	char fname[FILENAME_MAX];
-	int card_index = drm_get_card();
-	int fd;
-
-	snprintf(fname, FILENAME_MAX, "%s/%i/%s",
-		 dfs_base, card_index, dfs_entry);
-
-	fd = open(fname, O_WRONLY);
-	igt_assert(fd >= 0);
-
-	if (stop)
-		igt_assert(write(fd, stop_data, sizeof(stop_data)) == sizeof(stop_data));
-	else
-		igt_assert(write(fd, run_data, sizeof(run_data)) == sizeof(run_data));
-
-	close(fd);
+	igt_set_stop_rings(stop ? STOP_RING_ALL : STOP_RING_NONE);
 }
 
 static void eat_error_state(void)
 {
 	static const char dfs_base[] = "/sys/kernel/debug/dri";
 	static const char dfs_entry_error[] = "i915_error_state";
-	static const char dfs_entry_stop[] = "i915_ring_stop";
 	static const char data[] = "";
-	static char tmp[128];
 	char fname[FILENAME_MAX];
 	int card_index = drm_get_card();
 	int fd;
@@ -739,16 +719,9 @@ static void eat_error_state(void)
 
 	/* and check whether stop_rings is not reset, i.e. the hang has indeed
 	 * happened */
-	snprintf(fname, FILENAME_MAX, "%s/%i/%s",
-		 dfs_base, card_index, dfs_entry_stop);
-
-	fd = open(fname, O_RDONLY);
-	igt_assert(fd >= 0);
-
-	igt_assert(read(fd, tmp, sizeof tmp) > 0);
-
-	igt_assert_f(atoi(tmp) == 0,
-		     "no gpu hang detected, stop_rings is still %s\n", tmp);
+	igt_assert_f(igt_get_stop_rings() == STOP_RING_NONE,
+		     "no gpu hang detected, stop_rings is still 0x%x\n",
+		     igt_get_stop_rings());
 
 	close(fd);
 }
diff --git a/tests/pm_rps.c b/tests/pm_rps.c
index 157f9e3..66ed5e0 100644
--- a/tests/pm_rps.c
+++ b/tests/pm_rps.c
@@ -306,37 +306,6 @@ static void load_helper_deinit(void)
 		drm_intel_bufmgr_destroy(lh.bufmgr);
 }
 
-static void stop_rings(void)
-{
-	int fd;
-	static const char data[] = "0xf";
-
-	fd = igt_debugfs_open("i915_ring_stop", O_WRONLY);
-	igt_assert(fd >= 0);
-
-	igt_debug("injecting ring stop\n");
-	igt_assert(write(fd, data, sizeof(data)) == sizeof(data));
-
-	close(fd);
-}
-
-static bool rings_stopped(void)
-{
-	int fd;
-	static char buf[128];
-	unsigned long long val;
-
-	fd = igt_debugfs_open("i915_ring_stop", O_RDONLY);
-	igt_assert(fd >= 0);
-
-	igt_assert(read(fd, buf, sizeof(buf)) > 0);
-	close(fd);
-
-	sscanf(buf, "%llx", &val);
-
-	return (bool)val;
-}
-
 static void min_max_config(void (*check)(void))
 {
 	int fmid = (origfreqs[RPn] + origfreqs[RP0]) / 2;
@@ -493,8 +462,8 @@ static void reset(void)
 	stabilize_check(pre_freqs);
 
 	igt_debug("Stop rings...\n");
-	stop_rings();
-	while (rings_stopped())
+	igt_set_stop_rings(STOP_RING_ALL);
+	while (igt_get_stop_rings())
 		usleep(1000 * 100);
 	igt_debug("Ring stop cleared\n");
 
-- 
1.7.9.5




More information about the Intel-gfx mailing list