From 0a8bfbf7476d845b2136b6e7f9360cd3fbe6d426 Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Mon, 8 Apr 2013 09:19:05 +0200 Subject: [PATCH] tests/gem_fence_trash: make threaded tests more through-rough With this at least the y-tiled test reliably fails on my machines, but x-tiled still passes on some. More ideas to tune this highly welcome. v2: Fill cpu caches with data for each newly allocated bo. This seems to do the trick on my snb here _really_ reliably. So apparently the backsnoop for llc gtt writes is the crucial ingredient here to make the test fail. While at it, also stop leaking mmap space. v3: Fixup commit message. Cc: Mika Kuoppala Cc: Chris Wilson Signed-off-by: Daniel Vetter --- tests/gem_fence_thrash.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tests/gem_fence_thrash.c b/tests/gem_fence_thrash.c index 3fc72a1..01fd0f6 100644 --- a/tests/gem_fence_thrash.c +++ b/tests/gem_fence_thrash.c @@ -69,6 +69,12 @@ bo_create (int fd, int tiling) handle = gem_create(fd, OBJECT_SIZE); + /* dirty cpu caches a bit ... */ + ptr = gem_mmap__cpu(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); + assert(ptr); + memset(ptr, 0, OBJECT_SIZE); + munmap(ptr, OBJECT_SIZE); + gem_set_tiling(fd, handle, tiling, 1024); ptr = gem_mmap(fd, handle, OBJECT_SIZE, PROT_READ | PROT_WRITE); @@ -104,7 +110,7 @@ _bo_write_verify(struct test *t) { int fd = t->fd; int i, k; - volatile uint32_t **s; + uint32_t **s; uint32_t v; unsigned int dwords = OBJECT_SIZE >> 2; const char *tile_str[] = { "none", "x", "y" }; @@ -141,6 +147,9 @@ _bo_write_verify(struct test *t) } } + for (k = 0; k < t->num_surfaces; k++) + munmap(s[k], OBJECT_SIZE); + free(s); } @@ -216,11 +225,19 @@ main(int argc, char **argv) if (drmtest_run_subtest("bo-write-verify-threaded-none")) assert (run_test(5, bo_write_verify, I915_TILING_NONE, 2) == 0); - if (drmtest_run_subtest("bo-write-verify-threaded-x")) + if (drmtest_run_subtest("bo-write-verify-threaded-x")) { + assert (run_test(2, bo_write_verify, I915_TILING_X, 2) == 0); assert (run_test(5, bo_write_verify, I915_TILING_X, 2) == 0); + assert (run_test(10, bo_write_verify, I915_TILING_X, 2) == 0); + assert (run_test(20, bo_write_verify, I915_TILING_X, 2) == 0); + } - if (drmtest_run_subtest("bo-write-verify-threaded-y")) + if (drmtest_run_subtest("bo-write-verify-threaded-y")) { + assert (run_test(2, bo_write_verify, I915_TILING_Y, 2) == 0); assert (run_test(5, bo_write_verify, I915_TILING_Y, 2) == 0); + assert (run_test(10, bo_write_verify, I915_TILING_Y, 2) == 0); + assert (run_test(20, bo_write_verify, I915_TILING_Y, 2) == 0); + } if (drmtest_run_subtest("bo-copy")) assert(run_test(1, bo_copy, I915_TILING_X, 1) == 0); -- 2.7.4