summaryrefslogtreecommitdiff
path: root/lib/drmtest.c
AgeCommit message (Collapse)Author
2015-02-18lib: Cache DRM device id to reduce number of ioctlsChris Wilson
The DRM device id for the igfx is fixed, since there can only be one in the system. So once we query it for the first time we can safely report that value on every subsequent request, cutting out a lot of noisy ioctls from inside tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-02-13lib/igt_gt: Document and consolidateDaniel Vetter
Also move forcewake and stop_rings code from igt_debugfs to igt_gt since it fits better. And move the hang injection fork helpers from igt_aux to igt_gt, too. Also push the intel_gen call into igt_hang_ring while at it. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-01-19igt/drv_module_reload: Check more carefully for a live driverChris Wilson
As drm_open_any() now quietly fails if there is no driver, this nullifies the effectiviness of using gem_exec_nop as the test for a good reload. Combine with gem_alive (and guarantee that gem_alive can detect a dead driver, putting lie to commit 032f30cb38bb03562ee7fde19cd278b1d8ac31a9 Author: Thomas Wood <thomas.wood@intel.com> Date: Tue Jan 13 13:33:57 2015 +0000 lib: remove unnecessary checks on the drm_open_any return value ) first. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=88573 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-01-15lib: remove unnecessary checks on the drm_open_any return valueThomas Wood
drm_open_any always returns a valid file descriptor, so there is no need to check the return value. Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-11-25lib: fix symbol names in documentation commentsThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-09-30tests/pm_rpm: factor out drm_open_any_masterImre Deak
Signed-off-by: Imre Deak <imre.deak@intel.com>
2014-07-25drmtest: First check that driver is i915Chris Wilson
Before issuing any i915 specific ioctls, check the driver is i915 otherwise we make other drivers emit nasty errors at the start of every test. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-23tests: remove unused getopt header includesThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-21Quieten valgrindChris Wilson
Clear all the ioctl structs to zero before use as valgrind does not our ioctls and so complains about undefined bytes being passed to syscalls. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-06-09Fix make distclean by fixing includes of version.hRodrigo Vivi
Actually only the igt_core was breaking the make distcheck, but let's make it consistent and let the code cleaner. Credits-to: Reviewed-by: Ben Widawsky <ben@bwidawsk.net> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@gmail.com>
2014-04-10lib/drmtest: don't dup quiescent fdMika Kuoppala
If we dup the fd, we are in mercy of the context banning of the test application. Better to have our own to guarantee that gem_quiescent_gpu won't find itself banned on exit. Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2014-04-10lib: add igt_get_stop_rings and igt_set_stop_ringsMika Kuoppala
Multiple tests are introducing hangs by fidding with i915_ring_stop debugfs entry. Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2014-03-26lib/igt_kms/bf: doc skeletonDaniel Vetter
igt_kms docs are just skeleton and also added igt_fb to make sure the linking works correctly. Next up: Actually documenting igt_fb. Also fix that depency spelling fumble I've copied around to a few too many places. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-23lib/drmtest: api documentationDaniel Vetter
Also rename the arguments of do_ioctl a bit for better clarity. I haven't figured out a way to reference other section headers, hence the links to igt_core and intel_batchbuffer are a bit fragile unfortunately. It gets the job done though. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-23lib: extract igt_aux.[hc]Daniel Vetter
And shovel all the various helpers in there. Also move igt_set_vt_graphics_mode to igt_kms.h since the function is implemented in igt_kms.c. And it fits better. I kinda missed this in the prep work. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: s/drmtest_dumb_aub/igt_aub_dump_enabled/Daniel Vetter
This is prep work to extract a new igt aux library with all kinds of random stuff. Also give it a bit a more suitable name to indicate that this is just a flag and doesn't do the aub dumping itself. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: rename intel_gpu_tools.h to intel_io.hDaniel Vetter
With the header cleanup we can now give this header a suitable name, since it now really only contains register access and other I/O functions and assorted definitions. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: unnecessary header removal for drmtest.h, part 1Daniel Vetter
Brought a few missing headers to light in ioctl_wrappers.h, too. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22lib: remove uncessary #includes from headersDaniel Vetter
Only include what the header itself needs. The big fish here is intel-gpu-tools.h. More will follow. One ugly thing removed here is the duplicated GEN6_TD_CTL #define, one of which was broken. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-22tests|lib: remove assert.h includesDaniel Vetter
Only the igt core and non-test tools should have asserts to catch internal errors, tests and helper libraries should all user igt_asert instead. Fix things up where assert instead of igt_assert was used. One tiny step towards header sanity. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-12lib: move prefault helpers to igt_debugfs.cDaniel Vetter
This way all debugfs library code is in one place, ready for some api documentation care. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-12lib: extract igt_core.cDaniel Vetter
Same game as with ioctl_wrappers.c. To split was rather clean except for the static function oom_adjust_for_doom. But that was a bug, the calls to it in the various open helpers should simply be done at init and fork time. Which was already the case, except for simple testcase. So fix it up. While at it also start with a small section header for the documentation. v2: Don't forget to update the xml template ... Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-12lib/ioctl_wrappers: api docDaniel Vetter
Also some tiny polish to function interface: - @caching in gem_set_tiling should be uint32_t to match the ioctl struct. - s/size/length/ for gem_write/read. - move gem_get_num_rings to the other ring feature helpers. v2: Also demote gem_require_ring from static inline and move it, too. v3: Also move gem_handle_to_libdrm_bo. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-11lib: extract ioctl_wrappers.cDaniel Vetter
I want to group the ioctl wrappers and related functions into their own documentation section. Apparently gtkdoc refuses to obey this wish without a corespdonding header. So appease it. Also gtkdoc seems to struggle with rebuilding a bit ... Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-03-11drmtest: reformat the API documentationThomas Wood
Make the existing documentation compatible with gtk-doc. Signed-off-by: Thomas Wood <thomas.wood@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-02-13lib: (somewhat) structured logging supportDaniel Vetter
Apparently there's a bit a need for more verbose output in testcases, mostly for debugging purposes. At least gem_reset_stats and pm_rps have a verbose mode. On top of that we're currently not taking advantage of piglit's "warn" state all that much. But I think it might be useful for testcases which are notorious for some kinds of spurious failures, like e.g. the really nasty timing checks in kms_flip. If we demote some of them to just warnings we could run the overall tests more often. Hence this patchs adds a new igt_log function with the three levels DEBUG, INFO and WARN. Plus a bunch of convenience helpers to keep the test code tidy. The level can be set through an enviroment vairable IGT_LOG_LEVEL with info being the default. Also tests can look at the selected log level in case they want to run costly debug functions only when needed. Comments highly welcome, I plan to roll this out over tests which can use it (not all, imo that's too much churn) once we've settled on the interfaces/semantics. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-02-12lib: Make igt_skip noreturnDaniel Vetter
This is a remnant from the subtest code before we had proper fixture blocks. With those there's no no reason to have igt_skip calls outside of fixtures or subtests, so we can assert this and hence always jump out. Suggested by Thomas Wood since static analyzers got confused about this. To check for fallout I've run all tests as non-root so that they'll all skip. Only very little fallout resulted. Cc: Thomas Wood <thomas.wood@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-02-12lib: install exit handler only on success for prefault controlDaniel Vetter
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>
2014-02-11lib: Don't wait in igt_wait_for_keypress() if stdin is not a ttyDamien Lespiau
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>
2014-02-11lib: Add a helper to wait for a keypressDamien Lespiau
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-02-11lib/drmtest: Fix up skip_henceforth checksDaniel Vetter
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>
2014-02-06lib/drmtest: Add igt_wait_helperJeff McGee
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>
2014-02-05lib/drmtest: fix hang in quiescent_gpu_at_exit due to signal-unsafe asprintfImre Deak
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>
2014-01-31lib: Capture errno on entryChris Wilson
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>
2014-01-19lib: add __gem_createDaniel Vetter
Useful for when a gem_create ioctl is expected to fail. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-01-19lib: extract igt_drop_rootDaniel Vetter
Useful in other tests. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-01-07drmtest: don't leak memory when parsing the argumentsPaulo Zanoni
Found this while investigating memory leaks on kms_flip. Detected by Valgrind. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2013-12-10lib: igt_simple_main/init for subtest-less testsDaniel Vetter
Atm only used to print the version information. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-10lib: print uname information in the version stringDaniel Vetter
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-10lib: Add host platform to version stringDaniel Vetter
This is import on systems where we compile 32bit tests that run on 64bit platforms. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-10intel-gpu-tools: Version informationBen Widawsky
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>
2013-12-10lib: Always print errno in igt assert/require macrosDaniel Vetter
Useful to figure out why things have failed. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-05lib: add gem_available_aperture_size helperDaniel Vetter
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-04lib/drmtest: Fix filedesc leak on gem_quiescent_gpuMika Kuoppala
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>
2013-12-03Revert "lib/drmtest: ducttape over fork race"Tvrtko Ursulin
This reverts commit a031a1bf93b828585e7147f06145fc5030814547. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Conflicts: lib/drmtest.c Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-03Revert "test/gem_concurrent_blt"Daniel Vetter
This reverts commit aee0dcb1ec2075991d310dd6f3fb5e50160847d1. Oops, accidentally commit a bit of wip changes.
2013-12-03drmtest: Avoid wrong PID/TID after clone racesTvrtko Ursulin
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>
2013-12-03test/gem_concurrent_bltDaniel Vetter
Limit working set size also with available ram. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=72255 Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2013-12-03lib: Don't put functional code into assertsDaniel Vetter
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>
2013-12-03drmtest: Fix weird signage on errnoChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>