978 Commits

Author SHA1 Message Date
Chris Wilson
453792c501 lib: Enable locale dependent output to a terminal
If we are in an interactive session, enable the locale. This allows for
features like setting thousand separators for printing large values. By
only enabling it for interactive terminals, we avoid changing outputs
for the test scripts (leaving them as the "C" locale).

Note this mainly affects the testcases, or binaries built using libigt.
Other binaries need to be localised separately.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michel Thierry <michel.thierry@intel.com>
2015-06-24 17:03:04 +01:00
Chris Wilson
c83299d1fd lib: Use HAS_GPU_RESET rather than opencode our guess
Uses kernel commit 49e4d842f0d0892c3d26c93a81b9f22c1467030e
Author: Chris Wilson <chris@chris-wilson.co.uk>
Date:   Mon Jun 15 12:23:48 2015 +0100

    drm/i915: Report to userspace if we have a (presumed) working GPU reset

to determine whether the kernel has a working GPU reset before injecting
a hang (and so skip tests requring hang recovery if not available).
2015-06-15 16:05:07 +01:00
Derek Morton
a5633c406c lib/tests/igt_segfault Add unit test to test segfault handling
Unit test to check a segfaulting subtest is handled correctly.

v2: Added script to check subtest results
v3: Removed script. Updated test to use fork to monitor return status.
v4: Added igt_segfault to .gitignore

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-06-15 15:45:55 +02:00
Paulo Zanoni
d9ff9b3971 lib/igt_aux: add functions to manipulate i915.ko parameters
Some i915.ko features have very nice IGT tests, which are never
executed because the features are disabled by default. This leads to
unnoticed regressions both in the Kernel and in the IGT tests.  We
have seen this multiple times, for example, on FBC and PSR.

We want to be able to run IGT and actually test these
disabled-by-default features in order to make sure we at least don't
break them even more. Sometimes they may be disabled for some specific
reason, and we don't want to increase the set of reasons without
noticing.

To help solving this problem, this commit adds some helper functions
that should make it easier to change certain i915.ko parameters and
then restore their original values at the end of the test. With this,
I'm hoping QA will be able to detect any regressions and automatically
bisect them - or, with PRTS, reject the patches before they are even
merged.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-11 10:41:51 -03:00
Derek Morton
f49723872b lib/igt_core.c: Flag the test as failing after a segfault
fatal_signal_handler() was trapping fatal errors but not
flagging the test as failing or setting an exit code.
The result was that the test would return Ok or Skipped
depending on what the other subtests did even though one
of the subtests had segfaulted.

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-28 13:37:11 +02:00
Derek Morton
88c9a82318 lib: Enable building unit tests on android
Add a make file for android so the unit tests can be built.
Enabled asserts for the library code so the unit test behaviour
is correct.

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-27 16:17:05 +01:00
Damien Lespiau
5253af92ad lib/bxt: Update the Broxton PCI IDs
Cc: Imre Deak <imre.deak@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-05-18 16:25:25 +01:00
Damien Lespiau
fd6846c99f lib: Add a user data pointer to the argument parsing functions
It can be useful to have one of those to carry state between the handler
parsing the options and the rest of the test. Right now the only thing
we can do is to use global variables for that.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-05-15 12:22:14 +01:00
Thomas Wood
aa6c63463f igt.cocci: don't use igt_assert_neq to compare pointers
igt_assert_neq can only compare integers, not pointers.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-14 17:01:57 +01:00
Thomas Wood
6141aa2dad docs: various documentation fixes
Fix various typos, add missing parameter documentation, include the
igt_draw section and update the list of ignored headers.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-14 17:00:40 +01:00
Paulo Zanoni
641d535a03 lib/debugfs: wait_for_keypress("crc") when collecting CRC
Let's just steal the "crc" namespace and add this by default to
igt_pipe_crc_collect_crc() instead of adding more calls to other
tests. If tests want special waits on just some of their collect_crc()
calls, they can use another name instead of "crc".

This is very useful when developing, especially when the CRC we get is
wrong: we want to look at the screen to see what's going on before we
can think about how to fix the problem. So let's add this to the lib
instead of adding this to every single test I need to debug.

v2: Add some documentation (Daniel).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-14 10:02:07 -03:00
Tvrtko Ursulin
980ccf124a igt_kms: Do not reset plane position on assigning a fb
commit a26f9f9ad0e679c7ce413a25d34f6914e1174151
    Author: chandra konduru <chandra.konduru@intel.com>
    Date:   Mon Mar 30 13:52:04 2015 -0700

        i-g-t: Adding plane scaling test case

Started doing this and broke kms_rotation_crc.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: chandra konduru <chandra.konduru@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 13:45:36 +02:00
Tvrtko Ursulin
c3bd608fc5 igt_kms: Merge condition in igt_plane_set_fb
There were two paths for fb and !fb.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: chandra konduru <chandra.konduru@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 13:45:36 +02:00
Tvrtko Ursulin
759bb7ac98 igt_kms: Avoid NULL ptr deref when commiting disabled planes
I think;

   commit a26f9f9ad0e679c7ce413a25d34f6914e1174151
   Author: chandra konduru <chandra.konduru@intel.com>
   Date:   Mon Mar 30 13:52:04 2015 -0700

       i-g-t: Adding plane scaling test case

introduced a condition where it attempts to update a disabled plane because
of the newly introduced size_changed flag which is set for disabled frame
buffers. Result is a NULL ptr deref in igt_drm_plane_commit (plane->fb->src_x).

Start recognising this case as disabled plane and act accordingly.

v2: Split out igt_plane_set_fb cleanup. (Thomas Wood)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: chandra konduru <chandra.konduru@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-12 13:45:36 +02:00
Damien Lespiau
d9dd33c0d9 lib: Add missing '\n' to error message
Those messages where missing a new line at the end. Take the opportunity
to re-format the messages to fit in the 80 chars limit.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-05-11 15:10:19 +01:00
Chris Wilson
9b0a32dc80 lib/core: Limit fatal signal CRASH reporting to the fatal signals
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-10 09:12:16 +01:00
Chris Wilson
578795ff95 lib: Teach igt to handle signal failures gracefully
If we see a fatal signal in a subtest, fail.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-05-08 14:42:27 +01:00
Paulo Zanoni
cf9f48e704 lib: add igt_draw
For all those IGT tests that need an easy way to draw rectangles on
buffers using different methods. Current planned users: FBC and PSR
CRC tests.

There is also a tests/kms_draw_crc program to check if the library is
sane.

v2: - Move the test from lib/tests to tests/ (Daniel).
    - Add igt_require() to filter out the swizzling/tiling methods we
      don't support (Daniel).
    - Simplify reloc handling on the BLT case (Daniel).
    - Document enum igt_draw_method (Daniel).
    - Document igt_draw_get_method_name() (Paulo).
v3: - Add IGT_DRAW_MMAP_WC (Chris).
    - Implement the other trivial swizzling methods (Chris).
    - Remove the gem_sync() calls (Chris).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-07 15:11:49 -03:00
Daniel Vetter
aa720ffaf5 lib/mmio: One more s/OUTRET/OUTREG/
A those typos ...

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-05-06 11:38:06 +02:00
Daniel Vetter
9bb2ca3a83 lib/batchbuffer: Fix COLOR_BLIT_COPY_BATCH_START
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-05-05 17:29:40 -03:00
Paulo Zanoni
9bb04d3aa6 lib: add igt_wait()
Just a little helper for code that needs to wait for a certain
condition to happen. It has the nice advantage that it can survive the
signal helper.

Despite the callers added in this patch, there is another that will go
in a separate patch, and another in a new IGT test file that I plan to
push later.

v2: Check COND again before returning in case we hit the timeout.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-05-05 17:27:49 -03:00
Jani Nikula
a734ac2058 rename global mmio variable to igt_global_mmio
Global variable names should reflect the fact that they are indeed
global, and at the very least they should not be as short as just
"mmio". Rename mmio to igt_global_mmio.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-05-05 13:13:43 +03:00
Jani Nikula
23b7f08920 lib: add 16 and 8 bit versions of INREG and OUTREG
Add INREG8, INREG16, OUTREG8, and OUTREG16. While at it, cleanup doc
comments of INREG and OUTREG.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-05-05 13:08:34 +03:00
Tvrtko Ursulin
c317b788c0 igt_fb: Close the image file when we are done with it
Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-01 17:26:14 +01:00
Tim Gore
48a27bcaf6 lib/igt_core.c : only disable low mem killer once
The call to low_mem_killer_disable(true) was being done
from within function oom_adjust_for_doom. However,
oom_adjust_for_doom gets called from 3 places. We only
want the call to low_mem_killer_disable(true) to happen
during common_init, so call it from here instead of from
oom_adjust_for_doom.

v2:Thomas Wood pointed out that the initial call to disable
the low_mem_killer does not get made when we are just
listing subtests; so I have qualified the call from the
exit handler, which re-enables the low_mem_killer, with
if (!igt_only_list_subtests()).
For belt and braces I have also made low_mem_killer_disable
idempotent, so multiple calls to disable or re-enable are
safe.

Signed-off-by: Tim Gore <tim.gore@intel.com>
[Thomas: small coding style fix]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-05-01 17:13:56 +01:00
Tvrtko Ursulin
30a1360f6a igt_fb: Transfer existing content to Cairo surface for Y/Yf frame buffers
Rendering into Y and Yf tiled frame buffers with Cairo was losing the
previous content ie. was starting from black. This is different than the
behaviour with linear and X tiled so make it the same by blitting the
initial content when creating the rendering context.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-04-29 15:02:19 +01:00
Chris Wilson
fc69bb0de5 igt/gem_exec_big: Check 64bit relocation values
On gen8, we should check that the full 64bit relocation value is
correct, and we should be sure to poison the relocation offset between
runs.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-27 21:12:20 +01:00
Chris Wilson
019ae907ff lib: Fix types for gem_mmap*
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 12:18:15 +01:00
Chris Wilson
fb950bc17f lib: Cache static queries
We frequently check for device capabilities, for which we can safely
assume that there is but one on a system and so cache the first query
value and return it for all future queries. The benefit is to reduce
dmesg debug spam which helps when either bringing up a test or trying to
track down why a test fails.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 12:18:15 +01:00
Chris Wilson
236bab5cfd lib: Fix types for gem_create()
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-26 11:12:38 +01:00
Sonika Jindal
7ef80c0a98 lib/igt_kms: Let set_property return the result
Return the return value of the set_property ioctl and add check for
the failure.

Signed-off-by: Sonika Jindal <sonika.jindal@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-22 18:00:42 +01:00
Tim Gore
52888df084 lib/drmtest.h : fix mmap64 again
In android mmap64 was redirected to mmap2 because mmap64
was not alway available. But now mmap2 has been removed
from 64 bit android builds (and mmap64 is available), so
update preprocessor conditional to check for __x86_64__.

Signed-off-by: Tim Gore <tim.gore@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-22 18:00:42 +01:00
Thomas Wood
5b7edb9cb0 docs: avoid escaping characters in documentation comments
Avoid having to escape certain characters in documentation comments by
not allowing docbook markup tags. Markdown formatting in documentation
comments is still supported.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-21 10:52:14 +01:00
Rodrigo Vivi
ae9c685133 lib/igt_aux: Introduce igt_interactive_debug_manual_check.
This is an extention of igt_debug_wait_for_keypress that also can have
customized message and return key pressed.

v2: This is actualy a v2. V1 was an extension of original
    igt_debug_wait_for_keypress but it was nacked.

v3: Make [Y/n] check inside aux function as suggested by Daniel.
    Also renaming and adding first use case along with the axu function.

v4: Simplify function name and make it assert pressed key
    is different from n/N as suggested by Daniel.

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2015-04-16 11:08:37 -07:00
Ville Syrjälä
2b74b2bb33 tests: Add kms_legacy_colorkey
Add a quick test to make sure the legacy set colorkey ioctl only works
for sprite planes.

v2: Drop igt_fixtures

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-04-16 16:49:46 +03:00
Thomas Wood
ecb03266b2 lib: load images from the data directory in igt_paint_image
Update igt_paint_image so that it can read images from the package data
directory.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:44:35 +01:00
Thomas Wood
90dadcd0da lib: use a critical warning when unable to open a data file
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:44:35 +01:00
chandra konduru
a26f9f9ad0 i-g-t: Adding plane scaling test case
This patch is adding i-g-t plane scaling test case to test couple basic
display plane scaling usages. Additional test scenarios can be added later.

v2:
-Added iterative scaling to visually observe scaling (me)

v3:
-Added a flag to control primary plane scaling (me)

v4:
-Use new tiled types when calling igt_create_fb (me)

Signed-off-by: chandra konduru <chandra.konduru@intel.com>
[Thomas: convert test to use igt_simple_main]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:44:34 +01:00
chandra konduru
ace4208702 i-g-t: Adding test case to test background color.
Adding i-g-t test case to test display crtc background color.

v2:
- Added IGT_TEST_DESCRIPTION() (Thomas Wood)
- Added to .gitignore (Thomas Wood)
- Added additional details to function header (Thomas Wood)
- Simplified igt_main (Thomas Wood)

v3:
- rebased to latest master (me)
- took sleep calls out (Daniel)
- use new tiled types when calling igt_create_fb (me)

Signed-off-by: chandra konduru <chandra.konduru@intel.com>
[Thomas: convert test to use igt_simple_main]
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:44:34 +01:00
Thomas Wood
e72686b83b tests: create a single combined test list
All tests now respond in a consistent way such that separate lists for
tests with and without subtests are no longer necessary.

v2: fix other references to the test list

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:43:05 +01:00
Thomas Wood
cff102ebb2 lib: use test failure status for igt_set_timeout
Use a failure status code for timeout to avoid confusion between tests
that take too long to execute versus a failure due to an operation
taking longer than expected.

v2: Add a "timed out" message before exiting. (Daniel Vetter)
    Fix the timeout library check by disabling hard errors in xfail
    tests, since these share the same exit status as test failure.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:43:05 +01:00
Thomas Wood
b47032e191 lib: add a define for test failure exit status
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-14 17:43:05 +01:00
Chris Wilson
41fe1d1a44 lib: Implement gem_sync() using WAIT
When synchronising to rendering, we only want to wait for it to complete
and avoid the cache-domain side-effects of SET_DOMAIN if possible. This
has the advantage of speeding up a few tests (and thereby making the
actual test more explicit in terms of kernel operations). Of course some
tests may be reliant on the side-effects...

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-04-14 15:46:56 +01:00
Damien Lespiau
ab7619b5d2 lib/bxt: Add Broxton PCI ids
v2: Rebase on top of the SKL upstreaming

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Ben Widawsky <benjamin.widawsky@intel.com>
2015-04-08 14:52:37 +03:00
Imre Deak
6cd0ea090c lib/intel_chipset: fix HAS_PCH_SPLIT on GEN9
In the next patch we'll add support for BXT which is GEN9, but doesn't
have PCH, so fix the macro accordingly.

No functional change.

Signed-off-by: Imre Deak <imre.deak@intel.com>
2015-04-08 14:52:37 +03:00
Imre Deak
f0cbfb64df lib/intel_chipset: fix HAS_PCH_SPLIT on CHV
CherryView is GEN8 but doesn't have PCH so fix the macro accordingly.

Signed-off-by: Imre Deak <imre.deak@intel.com>
2015-04-08 14:52:36 +03:00
Chris Wilson
43a1f64e72 igt/gem_cpu_reloc: Pretty print execbuf failures
References: https://bugs.freedesktop.org/show_bug.cgi?id=85672
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-04-03 09:25:42 +01:00
Joonas Lahtinen
a95033fdbc tests: install test programs to libexec
Install the test programs by default so that they can be packaged.

Tested with the testdisplay test so that it still runs after the
modifications as it depends on a data file to be present. Need to
pass -r option to enable QR code display on success (PNG data file).

Packaging is useful when building a complete software stack for a
DUT from scratch. This should bring us closer to achieving a
built-from-scratch testing workflow.

Package maintainers can always decide to ignore the installed files.

v2:
- Install more tests including scripts and their data

v3:
- Add clarification to commit message about why we do this.
  (Chris Wilson & Thomas Wood)
- Change libexec into pkglibexec to comply to standard
  (Thomas Wood)
- Do not install $(common_files). (Thomas Wood)
- Make it really obvious the installed files are tests by using
  tests directory name to avoid any confusion with packagers.

v4:
- Fixed commit message.

v5:
- Add file locator helper to retain backwards compatibility.
  (Thomas Wood)
- Test with testdisplay -r option that draws the .png file.

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-04-02 16:32:47 +01:00
Ander Conselvan de Oliveira
9aeff2b5c5 lib/kms: Add a way to override an output's mode
So that it is possible to use a custom mode with the simplified mode set API.

v2: Add documentation for igt_output_override_mode(). (Thomas)

Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-03-31 10:21:54 +01:00
Thomas Wood
2f0e3cdcab lib/tests: add missing library flags
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-03-30 17:36:16 +01:00