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>
This commit is contained in:
Mika Kuoppala 2013-11-20 16:58:16 +02:00 committed by Daniel Vetter
parent 0afe006eac
commit 2dd312cbb8

View File

@ -42,6 +42,7 @@
#include "intel_batchbuffer.h" #include "intel_batchbuffer.h"
#include "intel_gpu_tools.h" #include "intel_gpu_tools.h"
#include "rendercopy.h" #include "rendercopy.h"
#include "igt_debugfs.h"
#define RS_NO_ERROR 0 #define RS_NO_ERROR 0
#define RS_BATCH_ACTIVE (1 << 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 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) #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) static uint32_t context_create(int fd)
{ {
struct local_drm_i915_gem_context_create create; struct local_drm_i915_gem_context_create create;
@ -192,6 +195,17 @@ static int exec_valid(int fd, int ctx)
return exec.handle; 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 BUFSIZE (4 * 1024)
#define ITEMS (BUFSIZE >> 2) #define ITEMS (BUFSIZE >> 2)
@ -284,6 +298,8 @@ static int inject_hang(int fd, int ctx)
free(buf); free(buf);
stop_rings();
return exec.handle; return exec.handle;
} }
@ -743,6 +759,8 @@ igt_main
"Kernel is too old, or contexts not supported: %s\n", "Kernel is too old, or contexts not supported: %s\n",
strerror(errno)); strerror(errno));
assert(igt_debugfs_init(&dfs) == 0);
close(fd); close(fd);
} }