summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_exec_suspend.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/gem_exec_suspend.c b/tests/gem_exec_suspend.c
index 22e18f57..f468ff4a 100644
--- a/tests/gem_exec_suspend.c
+++ b/tests/gem_exec_suspend.c
@@ -36,6 +36,8 @@ enum mode {
HIBERNATE,
};
+static void run_test(int fd, unsigned ring, enum mode mode);
+
static void check_bo(int fd, uint32_t handle)
{
uint32_t *map;
@@ -49,6 +51,14 @@ static void check_bo(int fd, uint32_t handle)
munmap(map, 4096);
}
+static void test_all(int fd)
+{
+ const struct intel_execution_engine *e;
+ for (e = intel_execution_engines; e->name; e++)
+ if (gem_has_ring(fd, e->exec_id | e->flags))
+ run_test(fd, e->exec_id | e->flags, NOSLEEP);
+}
+
static void run_test(int fd, unsigned ring, enum mode mode)
{
const int gen = intel_gen(intel_get_drm_devid(fd));
@@ -61,6 +71,10 @@ static void run_test(int fd, unsigned ring, enum mode mode)
igt_skip_on_f(gen == 6 && (ring & ~(3<<13)) == I915_EXEC_BSD,
"MI_STORE_DATA broken on gen6 bsd\n");
+ /* Before suspending, check normal operation */
+ if (mode != NOSLEEP)
+ test_all(fd);
+
gem_quiescent_gpu(fd);
memset(&execbuf, 0, sizeof(execbuf));
@@ -135,6 +149,12 @@ static void run_test(int fd, unsigned ring, enum mode mode)
check_bo(fd, obj[0].handle);
gem_close(fd, obj[0].handle);
+
+ gem_quiescent_gpu(fd);
+
+ /* After resume, make sure it still works */
+ if (mode != NOSLEEP)
+ test_all(fd);
}
igt_main