summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2013-11-20 16:58:16 +0200
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-11-20 21:29:04 +0100
commit2dd312cbb80be1d8c8a199248095db85eb85155d (patch)
tree7dc221a7ba6c9ef4a0a581cb47c0d63317d08cf3 /tests
parent0afe006eace7042e41689215ef27c82ac39cfb51 (diff)
tests/gem_reset_stats: stop rings after injecting hang
To make driver report a simulated hang in dmesg. Suggested-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_reset_stats.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/gem_reset_stats.c b/tests/gem_reset_stats.c
index 84841c3d..8dfef722 100644
--- a/tests/gem_reset_stats.c
+++ b/tests/gem_reset_stats.c
@@ -42,6 +42,7 @@
#include "intel_batchbuffer.h"
#include "intel_gpu_tools.h"
#include "rendercopy.h"
+#include "igt_debugfs.h"
#define RS_NO_ERROR 0
#define RS_BATCH_ACTIVE (1 << 0)
@@ -73,6 +74,8 @@ struct local_drm_i915_gem_context_destroy {
#define CONTEXT_DESTROY_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x2e, struct local_drm_i915_gem_context_destroy)
#define GET_RESET_STATS_IOCTL DRM_IOWR(DRM_COMMAND_BASE + 0x32, struct local_drm_i915_reset_stats)
+static igt_debugfs_t dfs;
+
static uint32_t context_create(int fd)
{
struct local_drm_i915_gem_context_create create;
@@ -192,6 +195,17 @@ static int exec_valid(int fd, int ctx)
return exec.handle;
}
+static void stop_rings(void)
+{
+ int fd;
+
+ fd = igt_debugfs_open(&dfs, "i915_ring_stop", O_WRONLY);
+ igt_assert(fd >= 0);
+
+ igt_assert(write(fd, "0xff", 4) == 4);
+ close(fd);
+}
+
#define BUFSIZE (4 * 1024)
#define ITEMS (BUFSIZE >> 2)
@@ -284,6 +298,8 @@ static int inject_hang(int fd, int ctx)
free(buf);
+ stop_rings();
+
return exec.handle;
}
@@ -743,6 +759,8 @@ igt_main
"Kernel is too old, or contexts not supported: %s\n",
strerror(errno));
+ assert(igt_debugfs_init(&dfs) == 0);
+
close(fd);
}