2204 Commits

Author SHA1 Message Date
Chris Wilson
c2248efbca igt/gem_concurrent_blit: Enable quicker interruptible testing
Use the igt_sigiter interface to only repeat the -interruptible tests
when we can make further progress with another change at injecting a
signal.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-19 15:21:28 +00:00
Chris Wilson
d545610861 lib/igt_aux: Divert ioctls for signal injection
To simplify and speed up running interruptible tests, use a custom
ioctl() function that control the signaling and detect when we need no
more iterations to trigger an interruption.

We use a realtime timer to inject the signal after a certain delay,
increasing the delay on every loop to try and exercise different code
paths within the function. The first delay is very short such that we
hopefully enter the kernel with a pending signal.

Clients should use

struct igt_sigiter iter = {};
while (igt_sigiter_repeat(&iter, enable_interrupts=true))
	do_test()

to automatically repeat the test until we can inject no more signals
into the ioctls. This is condensed into a macro

igt_interruptible(enable_interrupts=true)
	do_test();

for convenience.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-19 15:20:43 +00:00
Daniel Vetter
9665073c33 tests/gem_concurrent_blt|all: Use igt_subtest_group
Looks tidy again, and doesn't break igt assumptions.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-03-19 10:37:40 +01:00
Tiago Vignatti
f129ee8a39 prime_mmap_coherency: Add return error tests for prime sync ioctl
This patch adds ioctl-errors subtest to be used for exercising prime sync ioctl
errors.

The subtest constantly interrupts via signals a function doing concurrent blit
to stress out the right usage of prime_sync_*, making sure these ioctl errors
are handled accordingly. Important to note that in case of failure (e.g. in a
case where the ioctl wouldn't try again in a return error) this test does not
reliably catch the problem with 100% of accuracy.

v2: fix prime sync direction when reading mmap'ed file.
v3: change the upper bound using time rather than loops

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com>
[ickle: fix memleak, run for longer]
2016-03-18 20:42:49 +00:00
Chris Wilson
5d669bf1dd igt/gem_concurent_blit: Exercise different object sizes
Searching for coherency problems that may arise with
smaller-then-cache/large-then-cache objects.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-18 14:46:23 +00:00
Chris Wilson
4eba8e22fa igt/gem_concurrent_all: struct buffers for all
Now that we started packaging all parameters in one handy struct, pass
them everywhere. This allows us to pass along requirements so that we
can perform the checks inside each indvidual subtest and so not anger
the igt gods.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-18 10:47:34 +00:00
Chris Wilson
dcb39b5270 igt/gem_softpin: Repeat tests with signal interruptions
For the long running tests probing error conditions, throwing in the
signal interruptions is a good idea.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-18 09:20:06 +00:00
Chris Wilson
5df2de7e14 igt/gem_exec_whisper: Move testing of "default" engine to standalone
Exclude the symbolic "default" engine from the interengine sync testing,
and move it onto the standalone testing.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-17 09:51:02 +00:00
Ville Syrjälä
c8d5c353bf tests/pm_rps: Fix assert for sysfs writes
fprintf() returns a negative value on error. Fix the assert
to catch that.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-03-16 19:58:09 +02:00
Imre Deak
f651493a6b igt/drv_module_reload_basic: Pass correct inject_load_failure module option
The latest version of the inject_load_failure module option expects the
number of the checkpoint where the failure should be injected, so adjust
the test accordingly.

Signed-off-by: Imre Deak <imre.deak@intel.com>
2016-03-15 23:21:23 +02:00
Mika Kuoppala
431f6c4918 tests/gem_evict_alignment: use uint64_t in eviction memory parameters
With large apertures we need to use uint64_t for
counts and sizes. commit 0e2071411a4d4e1488a821daf522dffde2809e03
paved way for this but forgot to change the subtest parameters.

v2: Pass correctly to the copy() also (Chris)

References: https://bugs.freedesktop.org/show_bug.cgi?id=93849
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2016-03-15 14:58:32 +02:00
Chris Wilson
314fa179c8 igt/gem_bad_reloc: Rename conflicting negative-reloc-blt
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-15 09:45:18 +00:00
Chris Wilson
488dc3b1ac igt/gem_exec_whisper: Beware PIN_HIGH
Certain kernels/gen like to move execbuf around for relocations,
disrupting our prewritten batches. Be more careful and try and keep the
relocation/execobjects accurate.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-15 09:18:31 +00:00
Chris Wilson
1430eb065f igt/gem_bad_reloc: Fix handling of 64bit relocations
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94537
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 20:48:59 +00:00
Imre Deak
f0d5874bd8 drv_module_reload_basic: skip alive check after load failure injection
After loading the module with load failure injection enabled don't try
check the alive state. Also limit the number of failure points to
existing ones, to reduce the run time of the test.

v2:
- make VT binding/snd module loading part of reload and VT bind fail
  silently (Chris)

Signed-off-by: Imre Deak <imre.deak@intel.com>
2016-03-14 17:44:55 +02:00
Chris Wilson
772393e806 igt/gem_exec_nop: Decrease BAT timing
For basic, since CI doesn't hit the same hard lockup on Braswell that is
possible without hpet, stop running for so long!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 14:33:36 +00:00
Chris Wilson
2fdf5ac917 igt/gem_exec_whisper: Exercise rings individually
Not as stressful as testing inter-ring synchronisation, but it does
allow inspecting the simpler testcases if need be.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 14:17:13 +00:00
Chris Wilson
5acda10e7f igt/gem_exec_reloc: Exercise updating relocations of an active object
Supersedes gem_dummy_reloc_loop.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 14:17:12 +00:00
Chris Wilson
e5abd779cf tests/gem_ring_sync_loop: Exercise all rings
Fix the engine selection to exercise all possible rings and in doing so
completely obsoletes gem_multi_bsd_sync_loop.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-14 14:17:12 +00:00
Chris Wilson
8f6ed9e692 igt/gem_exec_whisper: Persistent relocation support
The goal is to test interengine synchronisation so remove any likelihood
that we introduce synchronisation for performing relocations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-12 17:45:55 +00:00
Chris Wilson
f14d56c42d igt/drv_module_reload_basic: Rinse and repeat with addition module parameters
An idea for testing failure paths along module load is to use a parameter
to perform fault injection. This rudimentary framework should get us
started.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 21:27:19 +00:00
Chris Wilson
9eacbd2acd igt/gem_exec_whisper: Test submission between fds
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 14:32:36 +00:00
Chris Wilson
6291678f31 igt/gem_exec_whisper: Stop passing NO_RELOC
We don't preserve the execobj.offset nor set the right values into the
batches between iterations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 14:21:46 +00:00
Chris Wilson
d99db0990e igt/gem_exec_whisper: Don't forget that 0 is a valid address on full-ppgtt
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 12:07:20 +00:00
Chris Wilson
5615ab2a9d tests: Add gem_exec_whisper
A more complicated store variant to stress inter-engine dependencies
(i.e. semaphores and sync). We write a control value from one batch into
the next and then execute it. This is repeated a few times with each
execution happening on a different engine (so the kernel has to
serialise operations between engines) until we finally write the value
out into our scratch buffer where we can check the result, just like a
Chinese whisper.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-11 11:34:48 +00:00
Chris Wilson
3e2443f838 igt/gem_exec_nop: Fix logical inversion for checking of valid execbuf
Only if the trial __gem_execbuf reports an error do we want to remove
the fancy LUT flags.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-10 12:46:52 +00:00
Chris Wilson
778f0796e8 igt/gem_reloc_overflow: 32bit compilation warning
gem_reloc_overflow.c: In function ‘__real_main365’:
gem_reloc_overflow.c:384:3: warning: format ‘%lu’ expects argument of type ‘long unsigned int’, but argument 6 has type ‘size_t’ [-Wformat=]
   igt_require_f(mlock(reloc, reloc_size) == 0,
   ^

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-10 10:58:11 +00:00
Chris Wilson
5ec85f5bf8 igt/gem_concurrent_blit: 32bit compilation warning
gem_concurrent_all.c: In function ‘__real_main1556’:
gem_concurrent_all.c:1642:4: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘uint64_t’ [-Wformat=]
    igt_debug("Pinning %ld MiB\n", pin_sz);

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-10 10:58:11 +00:00
Chris Wilson
eb59497a83 igt/drv_hangman: 32bit compilation warning
drv_hangman.c: In function ‘hangcheck_unterminated’:
drv_hangman.c:290:27: warning: integer overflow in expression [-Woverflow]
  int64_t timeout_ns = 100 * NSEC_PER_SEC; /* 100 seconds */

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-10 10:58:11 +00:00
Chris Wilson
0aacdac56f igt/gem_exec_nop: Only combine unique rings
Ignore the default ring as that is purely symbolic. On BSD2 systems it
is similarly useful to ignore the symbolic BSD ring.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-09 23:40:21 +00:00
Daniel Vetter
e1ca201fe9 tests/gem_reloc_overflow: Add missing igt_fixture
Boom when running with --list on non-intel machines or as non-root.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-03-09 15:09:56 +01:00
Chris Wilson
c684065be0 igt/gem_exec_store: The simplest batch that does something!
A very simple, the simplest!, batch that can execution on any known
engine that just writes a value into memory.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-09 11:39:42 +00:00
Daniel Vetter
c644c55177 tests/kms_mmap_write_crc: Use the right fork helpers
For a background task the fork helpers are more appropriate, since we
can explicitly cancel children. Also, anything that does real work is
supposed to be in fixtures.

Cc: Tiago Vignatti <tiago.vignatti@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>

--
Tiago, can you pls check that I haven't broken anythig?

Thanks, Daniel
2016-03-08 17:12:04 +01:00
Chris Wilson
3a7325e498 igt/gem_exec_nop: Add a basic test
Demonstrate how trivial it is to lockup Braswell, at least my N3050 nuc,
by saturating the interrupt handler with a few requests.

References: https://bugs.freedesktop.org/show_bug.cgi?id=93467
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 12:23:42 +00:00
Chris Wilson
1985459b09 igt/gem_ringfill: Check full rings across suspend/hibernate
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 09:57:33 +00:00
Chris Wilson
d8842d385c igt/gem_exec_suspend: Check with both cached/uncached objects
Keep an eye on domain tracking for both cached/uncached objects across
suspend.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 09:57:33 +00:00
Chris Wilson
697c3f5550 lib: Magic for_each_engine() macro to iterate over available engines
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 09:57:33 +00:00
Chris Wilson
60eafc5489 igt/gem_exec_suspend: Do pre/post suspend double checks
Check that the system operates normally before and after the suspend (as
well as across the suspend). The goal is to isolate the breakage to the
subtest.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 09:57:33 +00:00
Chris Wilson
2d2b61e160 igt/gem_reloc_overflow: Fix errno tests for "overflow"
The execbuffer2 ABI is not strictly limited to a total of UINT32_MAX
entries, rather each object can have a maximum of UINT32_MAX relocation
entries and the current implementation imposes that the total must be
allocable in a contiguous buffer when necessary (i.e as large as the
kernel can conceivably allocate). This is not an ABI constraint per-se,
just an implementation issue.

Whilst updating the limits for 64bit kernels, review usable of
ioctl-wrappers (i.e. use __gem_execbuf now available) and include a
batch of more tests to explore the boundary conditions of the maximum
relocation size. Note that rather than guess the reloc-max, it would be
better if we queried it. Also it is of vital importance that when
constructing a test to fail in a particular fashion, it must not include
any other error (e.g. we were passing in relocation arrays with invalid
target handle and domains when looking for a potential overflow across
multiple objects).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08 09:57:33 +00:00
Chris Wilson
ec1ac2e2e9 igt/pm_rpm: Wait for PCI D3
The transition to PCI device state D3 is not instantaneous and only
started when runtime suspended. Allow the driver/hardware a little bit
of time to complete the transition before declaring a test failure.

References: https://bugs.freedesktop.org/show_bug.cgi?id=93123
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-07 14:18:43 +00:00
Tvrtko Ursulin
174a06b129 gem_ppgtt: Fix flink-and-exit-vma-leak for engine->last_context
Now that engines keep references on the last executed contexts,
to fix this test we need to execute an unrelated context last to
ensure the one we are interested in is free to be cleaned up when
we expect it to be.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2016-03-07 13:03:04 +00:00
Marius Vlad
afa38a4d45 tests/kms_setmode: Fix compilation warnings.
kms_setmode.c:384:30: warning: declaration of ‘drm_fd’ shadows a global
declaration [-Wshadow]

kms_setmode.c:45:12: note: shadowed declaration is here static int drm_fd;

kms_setmode.c:391:38: warning: passing argument 8 of ‘drmModeSetCrtc’
discards ‘const’ qualifier from pointer target type
[-Wdiscarded-qualifiers] ids, crtc->connector_count, &crtc->mode);

Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2016-03-07 12:27:05 +01:00
Maarten Lankhorst
b33a78b9b1 tests/kms_setmode: Add tests when not stealing encoders on same crtc.
Excercise connector stealing harder. There is a border case in atomic currently where
encoder stealing is not prevented on the same crtc when the encoder is not reassigned.

The following testcase excercises that path and causes a OOPS on my system with nightly.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-03-07 09:47:44 +01:00
Paulo Zanoni
364d3785bf tests/kms_draw_crc: remove hardcoded PIPE_A
The test used to assume pipe A was being used for everything, and we
tried to fix this in commit "tests: fix CRTC assignment for a few
tests", but the pipe CRC code was forgotten.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-04 19:14:57 -03:00
Gabriel Feceoru
55fa16b654 kms_frontbuffer_tracking: Remove hardcoded PIPE_A
Use the pipe which is given from the possible_crcs for that connected port
instead.

On BSW there are constrains for the crtc<-->connector, this fix make this test
passing on BSW.

v2 (from Paulo): bikeshed the blank lines.

Signed-off-by: Gabriel Feceoru <gabriel.feceoru@intel.com>
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-04 19:14:32 -03:00
Paulo Zanoni
5267f24471 kms_frontbuffer_tracking: add missing igt_remove_fb calls
Let's be good citizens and properly handle our garbage.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03 16:58:28 -03:00
Paulo Zanoni
d8bf28f0cb tests: fix CRTC assignment for a few tests
All the tests I wrote always assumed that every connector supported
CRTC 0. This is not the case for BSW and possibly others, so fix the
tests before the CI reports more failures.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03 16:57:48 -03:00
Paulo Zanoni
9751e602b7 kms_frontbuffer_tracking: try harder to find suitable connectors
Instead of just giving preference to an eDP primary connector, give
preference to one that's eDP and supports pipe A, then try lesser
optimal combinations later.

We could try to make our test suite use different sets of connectors
when testing FBC and PSR, but that would require some rework, and we
would still be helpless when testing the combination of FBC+PSR.

Also notice that we still hardcode pipe A for the primary connector,
regardless of whether it supports it. This will be solved in the next
commits.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03 16:57:25 -03:00
Paulo Zanoni
1d5dbbf844 kms_frontbuffer_tracking: extract find_connector function
We're going to make our search for connnectors a little more
complicated, so extract the function since we're going to call it a
few more times.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03 16:57:00 -03:00
Paulo Zanoni
b138896331 kms_frontbuffer_tracking: don't pass the crtc idx to init_mode_params
We already pass the crtc id, so use the id to retrieve the index.
We'll change the way we pass the crtc id in the next commits, so we'll
have to call a function to calculate the index based on the id at that
point. Do the change now in order to avoid big commits later.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03 16:56:39 -03:00