767 Commits

Author SHA1 Message Date
Thomas Wood
c3ba7740c1 lib: check test options for conflicts
Check any test specific options for conflicts with the standard set of
options.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-30 11:13:13 +01:00
Thomas Wood
fc5e25750f lib: avoid getopt value conflicts with tests
Most tests use a printable character as the value for getopt to return,
so avoid conflicts by using non-printing values for the standard options.

v2: fix "-h" short option

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-30 11:13:13 +01:00
Ben Widawsky
2fae99bf2c lib: Add ndebug to the headers
If you don't do this, it is excluded from the tarball generated by make
distcheck.

1.6 and 1.7 both are not buildable as a result.

Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
2014-07-29 17:00:28 -07:00
Damien Lespiau
0db75bb3f9 lib: Don't take a reference to the surface in get_cairo_surface()
We don't need to keep a reference to the surface, the cairo context will
keep a reference to it until we destroy it.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-29 12:13:41 +01:00
Damien Lespiau
72357f3de0 lib: NULLify ->cairo_surface once unmapped
Just a matter of not leaving dangling pointers around.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-29 12:13:41 +01:00
Damien Lespiau
4aadbc817b lib: Split the GTT mapping out of get_cairo_surface()
This is preparation work for when we need a different way to get a
linear buffer we can use with cairo.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-29 12:13:41 +01:00
Damien Lespiau
f5959af8a5 lib: Remove unused field from struct igt_fb
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-29 12:13:41 +01:00
Chris Wilson
a6e6c5bdcf drmtest: First check that driver is i915
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-25 17:38:19 +01:00
Tim Gore
57bd86068a intel-gpu-tools: fix version.h creation in android
commit 743dc7997aa9f5210055896940d87c88983dcda6
breaks the build under Android because version.h
is not created. This happens because the android
make executes from the ANDROID_BUILD_TOP directory
rather than from the directory containing the source
files, so we need to differentiate between Android
and linux builds. This is V2 of this patch based on
Thomas Wood's suggestion.

Signed-off-by: Tim Gore <tim.gore@intel.com>
[Thomas: Fix distcheck issues]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-25 14:46:51 +01:00
Chris Wilson
b9e7637542 core: Inject program name into dmesg
Write the program name if !list_only so that we associate oops with
simple tests.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-25 14:39:18 +01:00
Chris Wilson
e0dffbdeda core: Improve phrasing for test requirements
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-25 14:39:18 +01:00
Chris Wilson
52915fc88a core: Inject subtest message into dmesg
One of the side-effects we test for are kernel oops and knowing the
guilty subtest can help speed up debugging. We can write to /dev/kmsg to
inject messages into dmesg, so let's do so before the start of every
test.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-24 14:54:30 +01:00
Chris Wilson
66e46630f8 igt_core: Read manpages more carefully for WNOHANG
/me hides

I thought it said it would not return for a signal and stopped thinking.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-24 12:02:36 +01:00
Chris Wilson
745945546f igt_core: Refactor igt_stop_helper() to use igt_wait_helper()
Reduce code duplication as the igt_stop_helper can reuse
igt_wait_helper() to replace its own waiting routine.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-24 11:52:37 +01:00
Chris Wilson
bd3cf81e98 core: Only use signalsafe functions inside signal handlers
The atexit() and signal() callbacks both need to only use signalsafe
functions - that excludes the use of assert. So simplify
fork_helper_exit_handler() and children_exit_handler().

__lll_lock_wait_private () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
0x00007fd630883d2b in _L_lock_13840 () from /lib/x86_64-linux-gnu/libc.so.6
0x00007fd630881df8 in __GI___libc_realloc (oldmem=0xfcb010, bytes=88) at malloc.c:3025
0x00007fd63087111b in _IO_vasprintf (result_ptr=0x7fff35dc4780, format=<optimised out>, args=args@entry=0x7fff35dc4658) at vasprintf.c:84
0x00007fd630852907 in ___asprintf (string_ptr=string_ptr@entry=0x7fff35dc4780, format=format@entry=0x7fd63097f718 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n") at asprintf.c:35
0x00007fd63082dd92 in __assert_fail_base (fmt=0x7fd63097f718 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x40cff5 "ret == 0", file=file@entry=0x4108d1 "igt_core.c", line=line@entry=872, function=function@entry=0x410ea0 <__PRETTY_FUNCTION__.8052> "children_exit_handler") at assert.c:57
0x00007fd63082dee2 in __GI___assert_fail (assertion=assertion@entry=0x40cff5 "ret == 0", file=file@entry=0x4108d1 "igt_core.c", line=line@entry=872, function=function@entry=0x410ea0 <__PRETTY_FUNCTION__.8052> "children_exit_handler") at assert.c:101
0x000000000040b03f in children_exit_handler (sig=<optimised out>) at igt_core.c:872
0x000000000040b089 in call_exit_handlers (sig=2) at igt_core.c:1029 fatal_sig_handler (sig=2) at igt_core.c:1053 <signal handler called>
0x00007fd6308bfe63 in __libc_fork () at ../nptl/sysdeps/unix/sysv/linux/x86_64/../fork.c:130
0x00007fd630bd6045 in __fork () at ../nptl/sysdeps/unix/sysv/linux/pt-fork.c:25
0x000000000040c51a in __igt_fork () at igt_core.c:900
0x00000000004036c2 in forking_evictions (ops=0x614360 <fault_ops>, surface_size=1048576, flags=5, trash_surfaces=<optimised out>, working_surfaces=338, fd=4) at eviction_common.c:203
test_forking_evictions (size=1048576, flags=5, count=338, fd=4) at gem_userptr_blits.c:1086
main (argc=1, argv=0x7fff35dc5328) at gem_userptr_blits.c:1478

Reported-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-24 11:50:00 +01:00
Chris Wilson
8cb89f7c4c linux: placate drop_caches and pass it a '\n'
Apparently it doesn't have much effect without the newline.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-23 18:36:10 +01:00
Thomas Wood
743dc7997a build: improve version.h generation
Move version.h generation into lib/Makefile.sources so that it can be
shared between the Autotools and Android build systems. Also make sure the
"updating version.h" message is only displayed when version.h actually
changes and remove unnecessary includes of version.h.

This also includes changes from Tvrtko Ursulin to prevent a build from
within the git repository failing when git is not available.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
2014-07-23 16:43:05 +01:00
Thomas Wood
784344ef88 lib: add an exit code to use when invalid options are specified
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 16:43:05 +01:00
Thomas Wood
561d519e67 lib: add a command line option to enable debug output in tests
Add --debug as a common command line option for all tests to enable
debug output.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:54 +01:00
Thomas Wood
c584d5c671 lib: always warn about unknown options
All tests can now register extra options, so there should not be any
unknown options.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:54 +01:00
Thomas Wood
80d2c9bf82 tests: convert simple tests to use igt_simple_init_parse_opts
Convert simple tests to use igt_simple_init_parse_opts if they require
extra options.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:54 +01:00
Thomas Wood
82b424a419 lib: don't ignore unknown options in multi-tests
None of the current tests have additional options that might make use of
any unknown options and igt_subtest_init_parse_opts is available that
integrates additional option parsing.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:54 +01:00
Thomas Wood
e2cef00896 lib: add igt_simple_init_parse_opts
This function allows simple tests to register additional command line
options.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:53 +01:00
Thomas Wood
94ac74ebb8 lib: move option parsing into common_init
Move option parsing into common_init so it can be shared between simple
tests and tests with subtests. This allows for more common command line
behaviour across all tests.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:53 +01:00
Thomas Wood
e73008bae3 tests: remove unused getopt header includes
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:53 +01:00
Thomas Wood
e057b86109 lib: warn when attempting to run an unknown subtest
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-23 15:23:53 +01:00
Chris Wilson
70e6ed92ab linux: Flush page/buffer cache before querying available memory
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-21 16:32:42 +01:00
Chris Wilson
acca724b42 Quieten valgrind
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-07-21 16:32:42 +01:00
Chris Wilson
4f7d4dcae5 Use SIGTERM in replace of SIGQUIT
SIGTERM is the normal signal to use when instructing a process to exit.
The only difference is that an unhandled SIGQUIT is meant to generate a
coredump, which is not what we want, but in practice I encountered an
issue where SIGTERM seemed to be deliverable more reliably than SIGQUIT
(in tests using multiple signal helpers).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-21 16:32:42 +01:00
Thomas Wood
8a3853c812 core: increase the exit handler limit
Increase the maximum number of exit handlers since some tests now
require more that the previous limit.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81320
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-17 11:25:19 +01:00
Daniel Vetter
428060c555 lib/igt.cocci: Add s/assert/igt_assert/
People use it way too often, and it upsets the test library. The only
valid places to use this is of igt infrastructure self-tests where you
need to check something _without_ all the other abi use checks
igt_fail and friends do. For those tests just #define an internal
assert to hide it.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-15 10:23:20 +02:00
Daniel Vetter
3f50598fb7 lib/igt_core: Fixup gtkdoc for logging functions
Without the () gtkdoc won't recognize them as function references.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-14 23:21:04 +02:00
Daniel Vetter
5a98fe9d4a lib: Add argc/argv to igt_simple_init
There's a pile of ideas around to add generally useful options like
--debug to all igt tests. Or unify the runtime behaviour between
simple and subtest tests a bit more.

The first step to get there is to add argc/argv to igt_simple_init so
that we can get at the argument list.

Cc: Tim Gore <tim.gore@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-14 15:03:59 +02:00
Daniel Vetter
8bf115ed99 lib/igt.cocci: Add stanza for for_each_pipe
Damien dodged this ...

Also run the script while at it.

v2: Don't just capture identifiers for pipe, but also expressions.

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-11 17:43:22 +02:00
Damien Lespiau
7bf0f7fc58 lib: Extract gem_get_tiling() from a couple of tests.
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:23 +01:00
Damien Lespiau
753352cb3c igt_kms: Introduce a for_each_pipe() macro
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau
068efd8d9f igt_kms: Add support for setting plane rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau
b2eb48576f igt_kms: Add a way to query of the plane supports rotation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau
143c3a7575 igt_kms: Provide a get_plane_property() shorthand
So one doesn't have to write the plane type all the time.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Damien Lespiau
33842d5940 igt_kms: Factor out a generic get_property() out of get_drm_plane_type()
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-11 15:12:21 +01:00
Daniel Vetter
bebcb582fc lib/igt_core: Don't log when listing subtests
I've noticed some spam in the userptr list ...

Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2014-07-11 15:23:54 +02:00
Thomas Wood
b81020526f lib: allow the edid to be reset
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Thomas Wood
b6ed9fb0d9 lib: add igt_enable_connectors and igt_reset_connectors
igt_enable_connectors forces connectors to be enabled where doing so is
known to work well. igt_reset_connectors resets the force state on all
connectors.
2014-07-11 11:47:46 +01:00
Thomas Wood
13cd79c128 lib: add the ability to set an EDID data block on a connector
Add a function to set an EDID data block on a connector and include a
set of generic EDID blocks for testing.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Thomas Wood
37ffb22d3c lib: add function to change connector states
Add an API function and a test program to force a particular state on a
connector.

v2: mask the correct part of the minor number to get the card number (Chris
    Wilson)

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2014-07-11 11:47:46 +01:00
Chris Wilson
f47ee31dd5 Wait for any pid in order to reap failure quicker
When waiting for the forked tests, we can respond quicker to a failure
(such as oom) by waiting for any child to exit rather than waiting for
each child in order. Then when we see that a test failed, we can kill
all other children before aborting.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2014-07-11 10:41:28 +01:00
Damien Lespiau
e16d4a2d68 core: Apply the same treatment to the in errno message in __igt_fail_assert()
Just like the it was done for the requirement message, display the errno
message only if errno is set, and display it at the end of the assert
message.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:05:33 +01:00
Damien Lespiau
4145462250 core: Only display the errno message if errno is set
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:05:25 +01:00
Damien Lespiau
b2d1a598ab core: Put the requirement failure messages together
The errno message was a bit in the middle here, it makes more sense to
group the messages about why the test requirement wasn't met together.

Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2014-07-10 18:04:47 +01:00
Mika Kuoppala
1e5570e28a lib/gen6_render: removed duplicate defines
Textually the same so no harm was done and no warnings
from compiler either.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2014-07-10 17:49:44 +03:00