Otherwise we'll hit an igt_skip in the exit handler, which upsets
the new in_fixture||in_subtests checks.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
When running in a non interactive terminal, there's little point in
trying to wait for some input on stdin.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
We need to first check whether we'll even run the testcase before
deciding to print a premature SKIP/FAIL. Without this and global
skipped resulted in superflous output when running only one testcase.
References: https://bugs.freedesktop.org/show_bug.cgi?id=74100
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
igt_wait_helper compliments igt_stop_helper and is used when helper
processes are expected to exit naturally.
Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
I got kms_flip in hung state with the backtrace below, while the parent process
waiting for the signal helper to exit. It was quite easy to reproduce the bug
by running
kms_flip --run-subtest=flip-vs-dpms-off-vs-modeset
With the change I couldn't reproduce it.
TODO: audit/fix other signal handlers with signal-unsafe functions
0 0x00007f9a1362018b in ?? () from /lib/x86_64-linux-gnu/libc.so.6
1 0x00007f9a1359df81 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
2 0x00007f9a1359b6cf in ?? () from /lib/x86_64-linux-gnu/libc.so.6
3 0x00007f9a13628eb6 in __vasprintf_chk () from /lib/x86_64-linux-gnu/libc.so.6
4 0x00007f9a13628e72 in __asprintf_chk () from /lib/x86_64-linux-gnu/libc.so.6
5 0x000000000040a4a2 in asprintf (__fmt=0x417441 "/dev/dri/card%u", __ptr=0x7fff1a972c08)
at /usr/include/x86_64-linux-gnu/bits/stdio2.h:178
6 drm_get_card () at drmtest.c:190
7 0x000000000040a54a in __drm_open_any () at drmtest.c:229
8 0x000000000040a846 in quiescent_gpu_at_exit (sig=<optimized out>) at drmtest.c:281
9 0x0000000000408759 in call_exit_handlers (sig=3) at drmtest.c:1519
10 fatal_sig_handler (sig=3) at drmtest.c:1543
11 <signal handler called>
12 0x00007f9a13596770 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
13 0x00007f9a135d8f3f in fork () from /lib/x86_64-linux-gnu/libc.so.6
14 0x000000000040b3af in __igt_fork_helper (proc=0x61d8cc <signal_helper>) at drmtest.c:1199
15 0x000000000040b4ce in igt_fork_signal_helper () at drmtest.c:751
16 0x0000000000404167 in main (argc=<optimized out>, argv=<optimized out>) at kms_flip.c:1533
v2:
- can't use snprintf as that's also signal-unsafe, so just use a dup'ed fd (Chris,Daniel)
Signed-off-by: Imre Deak <imre.deak@intel.com>
When printing the errno, it is important that we capture the user errno
before we make any library calls - as they may alter the value.
References: https://bugs.freedesktop.org/show_bug.cgi?id=74007
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Provide two arguments version, and verbose, which allow printing from an
arbitrary igt test. It will show system information (from build time,
not runtime), as well as the git SHA being used.
This will help reduce errors when people try to reproduce problems.
As an example if I want to verify someone is running the correct version
of a test, I could ask them to do:
bwidawsk@ironside ~/intel-gfx/intel-gpu-tools (master)$ sudo ./tests/gem_exec_nop --verbose
gem_exec_nop-git-3c5423b (Linux ironside 3.12.0-1-ARCH #1 SMP PREEMPT
Wed Nov 6 09:06:27 CET 2013 x86_64 GNU/Linux)
Time to exec x 1: 35.000µs (ring=render)
Time to exec x 2: 28.000µs (ring=render)
Time to exec x 4: 20.000µs (ring=render)
Time to exec x 8: 14.625µs (ring=render)
Time to exec x 16: 11.188µs (ring=render)
Time to exec x 32: 11.125µs (ring=render)
Time to exec x 64: 10.328µs (ring=render)
Time to exec x 128: 10.172µs (ring=render)
Time to exec x 256: 10.234µs (ring=render)
Time to exec x 512: 10.232µs (ring=render)
Time to exec x 1024: 10.121µs (ring=render)
Time to exec x 2048: 10.151µs (ring=render)
Time to exec x 4096: 11.474µs (ring=render)
Time to exec x 8192: 9.432µs (ring=render)
Time to exec x 16384: 6.003µs (ring=render)
Time to exec x 32768: 5.029µs (ring=render)
Time to exec x 65536: 4.206µs (ring=render)
Time to exec x 131072: 3.630µs (ring=render)
Subtest render: SUCCESS
--verbose is provided for completeness, but doesn't seem too useful at
the moement.
bwidawsk@ironside ~/intel-gfx/intel-gpu-tools (master)$ sudo ./tests/gem_exec_nop --version
gem_exec_nop-git-3c5423b (Linux ironside 3.12.0-1-ARCH #1 SMP PREEMPT
Wed Nov 6 09:06:27 CET 2013 x86_64 GNU/Linux)
I've put version.h in the root directory so that any subdir can access
it. I've added the tests usage since it's immediately useful, and done
easily via Daniels igt infrastructure work.
v2:
- Always print the version number.
- We want to print uname at runtime.
- Also prefix the i-g-t release version.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net> (v1)
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
to not run out of filedescs as some tests call gem_quiescent_gpu
directly.
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Various C library implementations have various races with regards
to caching getpid() or TID inside pthread_kill() implementations.
For example see clone(2) glibc man page and pthread_kill
Bionic C library source.
Work around that by making sure correct PID/TGID and TID values
are retrieved from the kernel when re-raising the signal. It
can be delivered immediately after the clone system call while C
library cached copies have not yet been updated.
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Android apparently compiles with NDEBUG. Which is strongly advised
against, since the big pile of asserts mostly check correct usage of
the helper code in testcases.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This way the igt test will always be killed first (hopefully),
preventing mayhem when one of the memory thrashing tests treatens to
take down the entire system.
To avoid any burden on test writers we adjust the oom score on
drm_open, any of the fork helpers and subtest init. That should cover
everything.
v2: Fix it up.
Cc: Ben Widawsky <ben@bwidawsk.net>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
As these files are compiled for every test, the warnings cluttered
the Android build completely.
v2: As suggested by Daniel Vetter, drop some of the fixes and fix
the compilation flags instead.
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This makes cairo dependencies easier to handle. Otherwise, we
would have to litter drmtest all over with "#ifndef ANDROID"
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
[danvet: Add missing _GNU_SOURCE to igt_kms.c and missing include to
intel_sprite_on.c]
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This helps make sure that the GPU is really quiescent by getting
rid of any residual stuff.
Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
All tests agree that this is a letal failure, so no point
to pass it back to callers.
Also add some igt_require calls for the drm_fd where I've
noticed that it's missing.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Ooops. Reported by Paulo. Also add a new testcase for make check to
make sure this actually works.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
We really need this since otherwise the magic return value handling
for running testcases with piglit (or on QA's validation
infrastructure) doesn't work properly.
We need to be careful though to only install this check on success.
See also the previous commits to sprinkle igt_exit() calls over all
the tests that missed it.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
I was fedup with having to run my tests as root and not being able to
use my usual setup for tests that only exercise the GT part of the GPU.
Render nodes to the rescue!
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
When going through card%u devices, close the ones that we were able to
open but weren't intel devices.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
kmstest_paint_color_alpha() just like kmstest_paint_color() except you
also get to specify the alpha channel.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Otherwise on machines where the only output available is restricted to
one pipe we'll have tons of "warn" results for no gain in the piglit
runner. All tests that use the kmstest helpers already check the
return value and do something sensible (like skip the tests if there's
really no config available).
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
So much for developing different patches on different machines and
then not retesting after rebasing. Reported by Ben on irc.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
If the test gets stopped sometimes a helper process falls over.
We need to report this. Since we currently don't track helper
process to precisely we can't shut up the 2nd test failure messge.
This shouldn't happen anyway.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Just a very quick hack cobbled together with /bin/sh and exec. We
can't use system since that does stupid things with singals ... Still
we need to whack the child process pretty hard to get rid of it.
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>