3835 Commits

Author SHA1 Message Date
Damien Lespiau
087a8d1c63 stats: Add header gards
Sigh.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:04:07 +01:00
Damien Lespiau
6ebd8c2dc3 doc: Remove i-g-t/intel prefixes and capitalize section titles
Looks better!

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:04:07 +01:00
Damien Lespiau
203c3841fc stats: Zero the whole structure at init() time
Because the structure started small, I initialized every member
directly, but that means that the new fields added weren't properly
initialized (sigh!). Zero the whole thing first then.

Also, the punishment for introducing a bug should be to write the
corresponding unit test. It's not a perfect one, but I'll take it.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:04:07 +01:00
Damien Lespiau
76ea7b9133 tests/stats: Make sure we properly invalidate the cached mean
Sure, that's an implementation details, but make sure we do recompute
the mean when we add a new value.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:03:27 +01:00
Damien Lespiau
515cec1210 stats: Add a way to retrieve the standard deviation
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:03:27 +01:00
Damien Lespiau
05c10f940f stats: Use an algorithm popularised by Knuth to compute mean and variance
Suggested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:03:27 +01:00
Damien Lespiau
9986282c2b tests/igt_stats: Call igt_stats_fini() to not leak the array
Sure, it'll be freed at exit(), but might as well be a bit pedantic.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:03:27 +01:00
Damien Lespiau
e55a11d3eb stats: Be more precise and talk about mean, not average
There are several types of averages eg. mean, median and mode.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-27 16:03:27 +01:00
Paulo Zanoni
e86557ca9f lib/igt_draw: move to the GTT domain before using GTT mmaps
With this, we don't need to worry about what happened to the buffer
before.

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-26 17:36:47 -03:00
Paulo Zanoni
6cc553adf2 lib/igt_core: fflush stdout after printing subtest results
I often run "sudo ./test 2>&1 | tee output.txt", and when we're
succeeding - never printing to stderr - the output gets buffered and
is never flushed (because it doesn't point to a terminal), so I never
know which test is running. With this fflush, I'm able to know when
each test finishes.

v2: Add blank line too (Chris)

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-26 17:35:39 -03:00
Chris Wilson
f78574101f igt/gem_fenced_exec_thrash: Tidy testing of expected execbuf errors
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-26 11:49:38 +01:00
Derek Morton
c69b135783 igt/gem_fenced_exec_thrash: Fix memory leak between tests
gem_fenced_exec_thrash was not freeing any resources between
subtests. On 1Gb android systems this resulted in the test
failing with an OOM error.

Added cleanup code to free BOs at the end of each subtest.

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
2015-06-26 11:49:38 +01:00
Paulo Zanoni
eeda401391 kms_frontbuffer_tracking: GTT mmap writes disable PSR
And they keep it disabled until something else enables it. So let's
consider this on the draw subtests.

With this, some PSR tests that were failing will now start passing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-25 14:54:24 -03:00
Paulo Zanoni
053f33ad1c kms_frontbuffer_tracking: use CPU mmaps for fill_fb_region()
Because the GTT mmaps "permanently" disable PSR and this can mess
some of our assertions. So let's just use the CPU domain to keep the
implementation simple.

With this, some PSR tests that were failing will now start passing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-25 14:53:49 -03:00
Paulo Zanoni
7a4ded7b87 kms_frontbuffer_tracking: remove offscreen-{cur,spr} subtests
It doesn't make sense to write on the sprite/cursor plane of the
"offscreen" screen. The pick_target() function was just returning the
offscreen_fb pointer for those cases, so we were not really testing
any cursor or sprite code. So the tests were just the same as
offscreen-pri.

That kills 24 subtests for each feature (72 in total).

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-25 14:53:07 -03:00
Paulo Zanoni
ce3b47bac8 tests/kms_frontbuffer_tracking: add modesetfrombusy test
This test exercies the dev_priv->fb_tracking.busy_bits bug I recently
found and Daniel fixed.

Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-25 14:52:26 -03:00
Damien Lespiau
de774ed31e skl_compute_wrpll: Don't try other dividers if we find a 0 central freq deviation
Paulo suggested that we could short-circuit the search for a good
divider if we find a 0 deviation of the DCO frequency from the central
frequency.

Out of the 373 test frequencies, 34 hit that fast path.

Suggested-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:49:34 +01:00
Damien Lespiau
26336385ac skl_compute_wrpll: Sync a comment with from the kernel code
Might as well try to keep the code in both this test and the kernel as
close as possible.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:49:34 +01:00
Damien Lespiau
dfebf08d9a skl_compute_wrpll: Fix the mininum deviation computation
Paulo noticed that, because we were only comparing positive deviations
with positive deviations and negative deviations with negative
deviations, we weren't actually always using the absolute minimal
deviation at all.

This improves the average deviation across all tested frequencies (373):

before: average deviation: 215.13
after: average deviation: 194.47

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:22:04 +01:00
Damien Lespiau
afdaeabbcf skl_compute_wrpll: Cycle through dividers, then central freqs
Follow Paulo's comment on the corresponding kernel patch.

This means we also have to move the break when we have cycled through
the even dividers as well.

This improves the number of even dividers used across the tested
frequencies (373) (at the expense of a slightly worse average deviation,
but "even dividers take precedence over a lower deviation".

before:
  even/odd dividers: 338/35
  average deviation: 206.52

after:
  even/odd dividers: 363/10
  average deviation: 215.13

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:22:04 +01:00
Damien Lespiau
efd2895f23 skl_compute_wrpll: Print the average deviation
It's interesting to watch the effect of some algorithm tweaks on the
average deviation between the central freq and the dco freq. A metric
we'd like to minimize.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:22:04 +01:00
Damien Lespiau
06f5f7065f lib: Add a tiny utility function to compute averages
The master plan would be to get a bit more stats in it, at least the
standard deviation and confidence interval. Just need the average for
now.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-25 17:22:03 +01:00
Daniel Vetter
484e27542d tests/kms_fbc_crc: Don't force fbc on old platforms
It's simply a bit too scary on pre-gen6 and imo not worth the bother
really until someone starts to implement all the hacks an w/a required
on these platforms. On later platforms the issues are just with
correctness and performance hence no risk for hanging machines.

Cc: Paulo Zanoni <przanoni@gmail.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-06-25 09:43:55 +02:00
Chris Wilson
44d444acaa overlay: Enable locale
Enabling locale allows us to use thousand separators and other such
human touches in the output.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-24 17:03:42 +01:00
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
Paulo Zanoni
7eb5f07949 tests/kms_frontbuffer_tracking: rename set_screens_for_test
Rename it to prepare_subtest. This function used to be much smaller
when I decided its name.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-23 14:44:18 -03:00
Paulo Zanoni
7756e88445 tests/kms_frontbuffer_tracking: simplify flib_subtest fb handling
Get rid of fb2_region, use params->fb directly instead.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-23 14:43:02 -03:00
Paulo Zanoni
77e1bac6eb tests/kms_frontbuffer_tracking: simplify wait_user() calls
I often add new temoprary wait_user() calls when debugging things, and
having to add "if (opt.step)" is annoying, so let's make the step
level check inside wait_user(). As a bonus, our huge macro is 2 lines
shorter.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-23 14:41:22 -03:00
Paulo Zanoni
969cb3c575 tests/kms_frontbuffer_tracking: not all eDP panels support sink CRC
And require sink CRC support for PSR, since the pipe CRC is not
exactly useful there.

v2: Check for ENOTTY (Rodrigo).

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=91019
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-23 14:41:01 -03:00
Derek Morton
471ebbed53 igt/gem_fence_thrash: Reduce memory usage
On android platforms with 1Gb RAM gem_fence_thrash was failing
with an out of memory error.
This patch causes gem_close() to be called when a handle is
no longer required rather than relying on the cleanup when
the fd is closed. This greatly improves the memory footprint
of the test allowing it to run on 1Mb systems.

Also fixed a leak of the 'threads' variable.

v2: Simplified as per Chris Wilson's suggestion.

Signed-off-by: Derek Morton <derek.j.morton@intel.com>
[ickle: fix mmap leak from bo_copy()]
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-23 17:19:07 +01:00
Thomas Wood
154192a680 NEWS: Post-release bump
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-06-23 13:36:02 +01:00
Chris Wilson
0e528af623 igt: Add gem_exec_alignment
Simple test to see whether the kernel obey's the user's request
alignemnt.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-22 15:55:21 +01:00
Chris Wilson
eb7d60e430 igt: Add gem_eio for inducing expected EIO
A few entry points in the GEM API are expected to raise EIO if we
encounter a wedged GPU. This testcase aims to do so by first injecting a
GPU hang with GPU resets disabled (thus causing the GPU to become wedged)
and then exercises the various API to check for the expected errors.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-19 11:44:26 +01:00
Chris Wilson
4fbce7e462 testdisplay_hotplug: Add missing #include <sys/stat.h>
testdisplay_hotplug.c: In function ‘hotplug_event’:
testdisplay_hotplug.c:46:14: error: storage size of ‘s’ isn’t known
  struct stat s;
              ^
testdisplay_hotplug.c:54:2: error: implicit declaration of function ‘fstat’ [-Werror=implicit-function-declaration]
  fstat(drm_fd, &s);
  ^
testdisplay_hotplug.c:54:2: warning: nested extern declaration of ‘fstat’ [-Wnested-externs]
testdisplay_hotplug.c:46:14: warning: unused variable ‘s’ [-Wunused-variable]
  struct stat s;
              ^
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-18 10:38:47 +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
Damien Lespiau
4b944c92eb pm_rpm: Update the debugfs filename
v2: Try to open i915_pc8_status first to make the transition (or just
running on older kernels) better. (Paulo)

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-13 18:41:49 +01:00
Thomas Wood
b88212c036 Update version to 1.11 and add the release date
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-06-11 16:08:23 +01:00
Thomas Wood
0cc16b37ab NEWS: Updates
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-06-11 16:06:33 +01:00
Thomas Wood
aa75f37397 tools: print a warning for tools replaced by intel_reg
Cc: Jani Nikula <jani.nikula@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-06-11 14:48:58 +01:00
Thomas Wood
87f15fc3da overlay: update .gitignore
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-06-11 14:48:47 +01:00
Paulo Zanoni
d8acd24bdb tests: add kms_frontbuffer_tracking
This is a new test that should exercise the frontbuffer tracking
feature of the Kernel in a number of different ways. We use different
drawing methods, we use the primary, cursor and sprite planes, we can
test both on single and dual pipes, also on buffers not associated
with any CRTCs, etc.

We currently have assertions for both FBC and PSR, and we also have a
"nop" test mode that should disable both FBC and PSR, and can be
used for debugging.

This test is also capable of testing both FBC and PSR even if they are
disabled by default on the Kernel: the test knows how to change the
i915.ko parameters and then set them back after testing.

I am getting a significant number of failures when I run this test,
which means we have some work to do on the Kernel.

I also still have a small list of additional subtests that I plan to
add to this test, and those tests are documented on the main function.

v2:
 - Use igt_debugfs_open() (Thomas).
 - Use igt_test_description() (Thomas).
 - Don't check drm_open_any_master()'s result (Thomas).
 - Use igt_require_f() in some cases (Thomas).
 - Standardize some assertions.
 - Use the new module param functions.
 - Check if FBC is supported by the chipset.
 - Add new subtests (multidraw, enum fbs, fbc+psr).
 - Make tests a little shorter.
 - Reorganize which tests ara ran by default.
 - Better comments everywhere.
 - Rebase.

v3:
 - Fix a small typo.
 - Improve the log messages a little bit more.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-11 10:43:13 -03:00
Paulo Zanoni
75b286e821 tests/kms_psr_sink_crc: test even if PSR is disabled by default
Use the igt_set_module_param_int() call to enable it, then restore the
previous value after we are done testing.

With this, we can change the psr_enabled() function to psr_possible():
the only requirement should be that we have a PSR capable sink. The
test should now be able to make "Source_OK" and "Enabled" become true
whenever it wants.

Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-11 10:42:47 -03:00
Paulo Zanoni
a4dbdeffc2 tests/kms_fbc_crc: run even if FBC is disabled by default
We may not be perfect, but if we don't even test, we will probably
only get worse over time.

The function called makes sure we restore whatever was the original
FBC parameter when we exit the test, so this should not affect the
other tests.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-11 10:42:27 -03: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
Paulo Zanoni
46a1791958 tests/template: add IGT_TEST_DESCRIPTION
So people that write tests based on the template don't forget to use
the macro.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-06-11 10:41:25 -03:00
Imre Deak
6b418f0264 tests/gem_storedw_batches_loop: add subtest for cached mappings
v2:
- add a subtest for uncached mappings too for LLC platforms where the
  default is cached mapping (Chris)

Signed-off-by: Imre Deak <imre.deak@intel.com>
2015-06-08 20:27:47 +03:00
Chris Wilson
c5a6147a1b overlay: Fix parsing of gem-objects for '[k]' clients
Apparently '[]' are not non-whitespace characters and break '%s'.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-06-08 15:57:45 +01:00
Damien Lespiau
fd772e32a2 build: Add the automake subdir-objects option
automake 1.14 was complaining here:

overlay/Makefile.am:44: warning: source file 'x11/x11-window.c' is in a
subdirectory, but option 'subdir-objects' is disabled.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2015-06-05 16:55:47 +01:00
Tim Gore
c221e09420 tests/gem_reset_stats : mask off ring_stop bits
Function check_gpu_ok checks to make sure that any hangs
have cleared by testing for (flags == 0). Some tests set
the STOP_RINGS_ALLOW_BAN and STOP_RINGS_ALLOW_ERRORS flags
but these do not get cleared by an individual ring reset,
(a feature added recently to the driver), leading the
check_gpu_ok function to think that the gpu is still hung.

So I mask the flags with STOP_RING_ALL, to ignore the mode
bits and look only at the bits that stop the rings.

Once gpu_check_ok sees that the gpu is not hung I write 0
to stop_rings in order to clear it completely. This is
because igt_set_stop_rings will only write to stop_rings
if either a) they are currently 0 or b) we are writing 0.
If we leave the mode bits set then subsequent calls to
igt_set_stop_rings to create hangs will fail.

Signed-off-by: Tim Gore <tim.gore@intel.com>
2015-06-05 08:53:04 +01:00