summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-03-09 22:39:55 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2017-03-09 22:40:36 +0000
commit6f50d73ed902bedd74b3f46c0f0509de8298b6b7 (patch)
treec12af2660b1e98384353f4bc0bcfacb0eea1c311 /tests
parent9759df989f18697a817d5de27021bae09bcf344e (diff)
igt/gem_exec_parse: add hang detection
Because byt needs it... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_exec_parse.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/tests/gem_exec_parse.c b/tests/gem_exec_parse.c
index ff438b25..4631746b 100644
--- a/tests/gem_exec_parse.c
+++ b/tests/gem_exec_parse.c
@@ -312,9 +312,12 @@ static void test_allocations(int fd)
memset(obj, 0, sizeof(obj));
for (i = 0; i < ARRAY_SIZE(obj); i++) {
- obj[i].handle = gem_create(fd, 1ull<<(12 + i));
- gem_write(fd, obj[i].handle, (1ull<<(12+i)) - 8 - sizeof(bbe),
- &bbe, sizeof(bbe));
+ uint64_t size = 1ull << (12 + i);
+
+ obj[i].handle = gem_create(fd, size);
+ for (uint64_t page = 4096; page <= size; page += 4096)
+ gem_write(fd, obj[i].handle,
+ page - sizeof(bbe), &bbe, sizeof(bbe));
}
memset(&execbuf, 0, sizeof(execbuf));
@@ -324,7 +327,8 @@ static void test_allocations(int fd)
i = rand() % ARRAY_SIZE(obj);
execbuf.buffers_ptr = to_user_pointer(&obj[i]);
execbuf.batch_start_offset = (rand() % (1ull<<i)) << 12;
- execbuf.batch_len = (1ull<<(12+i)) - 8 - execbuf.batch_start_offset;
+ execbuf.batch_start_offset += 64 * (rand() % 64);
+ execbuf.batch_len = (1ull<<(12+i)) - execbuf.batch_start_offset;
gem_execbuf(fd, &execbuf);
}
@@ -435,6 +439,7 @@ igt_main
/* ATM cmd parser only exists on gen7. */
igt_require(intel_gen(intel_get_drm_devid(fd)) == 7);
+ igt_fork_hang_detector(fd);
}
igt_subtest("basic-allowed") {
@@ -661,6 +666,7 @@ igt_main
hsw_load_register_reg();
igt_fixture {
+ igt_stop_hang_detector();
gem_close(fd, handle);
close(fd);