summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-06-19 11:45:06 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2018-07-06 14:29:49 +0100
commitde609e0ae0a1466000e1d2238e7c1c64e0252074 (patch)
tree0eeaad4827439cd8e7c24c32446690929424b8ad /tests
parent3eda761ea3556982b576f7f173b327aa94c8d96c (diff)
igt/gem_sync: Double the wakeups, twice the pain
To further defeat any contemplated spin-optimisations to avoid the irq latency for synchronous wakeups, increase the queue length. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/gem_sync.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/tests/gem_sync.c b/tests/gem_sync.c
index 747412c5..60d61a02 100644
--- a/tests/gem_sync.c
+++ b/tests/gem_sync.c
@@ -178,7 +178,7 @@ idle_ring(int fd, unsigned ring, int timeout)
}
static void
-wakeup_ring(int fd, unsigned ring, int timeout)
+wakeup_ring(int fd, unsigned ring, int timeout, int wlen)
{
unsigned engines[16];
const char *names[16];
@@ -243,7 +243,8 @@ wakeup_ring(int fd, unsigned ring, int timeout)
while (!READ_ONCE(*spin->running))
;
- gem_execbuf(fd, &execbuf);
+ for (int n = 0; n < wlen; n++)
+ gem_execbuf(fd, &execbuf);
this = gettime();
igt_spin_batch_end(spin);
@@ -851,7 +852,9 @@ igt_main
igt_subtest_f("idle-%s", e->name)
idle_ring(fd, e->exec_id | e->flags, 150);
igt_subtest_f("wakeup-%s", e->name)
- wakeup_ring(fd, e->exec_id | e->flags, 150);
+ wakeup_ring(fd, e->exec_id | e->flags, 150, 1);
+ igt_subtest_f("double-wakeup-%s", e->name)
+ wakeup_ring(fd, e->exec_id | e->flags, 150, 2);
igt_subtest_f("store-%s", e->name)
store_ring(fd, e->exec_id | e->flags, 1, 150);
igt_subtest_f("many-%s", e->name)
@@ -873,7 +876,9 @@ igt_main
igt_subtest("forked-store-each")
store_ring(fd, ALL_ENGINES, ncpus, 150);
igt_subtest("wakeup-each")
- wakeup_ring(fd, ALL_ENGINES, 150);
+ wakeup_ring(fd, ALL_ENGINES, 150, 1);
+ igt_subtest("double-wakeup-each")
+ wakeup_ring(fd, ALL_ENGINES, 150, 2);
igt_subtest("basic-all")
sync_all(fd, 1, 5);