14 Commits

Author SHA1 Message Date
Chris Wilson
1a722fa6cf igt/gem_exec_whisper: Add simple interruptible pass
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-26 11:22:04 +00:00
Chris Wilson
5dcb026348 igt/gem_exec_whisper: Check for inconsistent reloc offset vs object offset
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-26 10:02:41 +00:00
Chris Wilson
756f3e0cb7 lib: Add a GPU error detector
If we listen to the uevents from the kernel, we can detect when the GPU
hangs. This requires us to fork a helper process to do so and send a
signal back to the parent.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-24 11:25:38 +00:00
Chris Wilson
d5e550f5c6 igt/gem_exec_whisper: Tweak migration logging
reloc.presumed_offset == -1 => implies we hit the fallback path and not
that we strictly needed to patch the relocation.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 12:05:48 +00:00
Chris Wilson
3b22b89dd8 igt/gem_exec_whisper: Prevent MI_STORE_DWORD on gen6/bsd again
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 11:14:27 +00:00
Chris Wilson
83cfed8c39 igt/gem_exec_whisper: Add interruptibles tests
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-19 15:21:28 +00:00
Chris Wilson
5df2de7e14 igt/gem_exec_whisper: Move testing of "default" engine to standalone
Exclude the symbolic "default" engine from the interengine sync testing,
and move it onto the standalone testing.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-17 09:51:02 +00:00
Chris Wilson
488dc3b1ac igt/gem_exec_whisper: Beware PIN_HIGH
Certain kernels/gen like to move execbuf around for relocations,
disrupting our prewritten batches. Be more careful and try and keep the
relocation/execobjects accurate.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-15 09:18:31 +00:00
Chris Wilson
2fdf5ac917 igt/gem_exec_whisper: Exercise rings individually
Not as stressful as testing inter-ring synchronisation, but it does
allow inspecting the simpler testcases if need be.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 14:17:13 +00:00
Chris Wilson
8f6ed9e692 igt/gem_exec_whisper: Persistent relocation support
The goal is to test interengine synchronisation so remove any likelihood
that we introduce synchronisation for performing relocations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-12 17:45:55 +00:00
Chris Wilson
9eacbd2acd igt/gem_exec_whisper: Test submission between fds
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 14:32:36 +00:00
Chris Wilson
6291678f31 igt/gem_exec_whisper: Stop passing NO_RELOC
We don't preserve the execobj.offset nor set the right values into the
batches between iterations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 14:21:46 +00:00
Chris Wilson
d99db0990e igt/gem_exec_whisper: Don't forget that 0 is a valid address on full-ppgtt
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 12:07:20 +00:00
Chris Wilson
5615ab2a9d tests: Add gem_exec_whisper
A more complicated store variant to stress inter-engine dependencies
(i.e. semaphores and sync). We write a control value from one batch into
the next and then execute it. This is repeated a few times with each
execution happening on a different engine (so the kernel has to
serialise operations between engines) until we finally write the value
out into our scratch buffer where we can check the result, just like a
Chinese whisper.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 11:34:48 +00:00