2259 Commits

Author SHA1 Message Date
Tomeu Vizoso
dc84e7d6ad lib: Add wrapper for DRM_IOCTL_MODE_CREATE_DUMB
In order to test drivers that don't have support for proper buffer
objects, add a wrapper for creating dumb buffer objects that will be
called from the lib code for those subtests that don't need to care.

Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-04-14 13:54:24 +01:00
Chris Wilson
e609955067 igt/gem_ctx_create: Broaden per-engine testing
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-14 10:25:59 +01:00
Chris Wilson
3076951698 igt/gem_exec_create: Add a "leak" test
Don't close the objects, but just mark them as unneded.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-12 16:53:09 +01:00
Chris Wilson
539abffc3e igt: Add a basic test to stress allocation of batches
Run for 20s and don't expect to crash from memory exhaustion or sillies.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-12 13:15:50 +01:00
Peter Antoine
8af67d1980 test/gem_mocs_settings: Testing MOCS register settings
The MOCS registers were added in Gen9 and define the caching policy.
The registers are split into two sets. The first set controls the
EDRAM policy and have a set for each engine, the second set controls
the L3 policy. The two sets use the same index.

The RCS registers and the L3CC registers are stored in the RCS context.

The test checks that the registers are correct by checking the values by
directly reading them via MMIO, then again it tests them by reading them
from within a batch buffer. RCS engine is tested last as it programs the
registers via a batch buffer and this will invalidate the test for
workloads that don't use the render ring or don't run a render batch
first.

v2: Reorganised the structure.
    Added more tests. (Chris Wilson)
v3: Fixed a few bugs. (Chris Wilson)
v4: More Tidy-ups.    (Chris Wilson)
    SKL does does not have a snoop bit. (Peter Antoine)

Signed-off-by: Peter Antoine <peter.antoine@intel.com>
2016-04-12 10:45:49 +01:00
Chris Wilson
d6a85f042c igt/gem_busy: fix compaction of multiple store commands
Missed increment of the batch offset between commands.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-11 12:53:30 +01:00
Chris Wilson
9e7e7c38a0 igt/gem_concurrent_blit: Tweak num_buffers to just exceed target
Remember that we allocate and use twice as many buffers as specified (we
have a num_buffers array of src and dst) and so adjust the computation
such that the combined allocation matches the target.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-11 09:17:33 +01:00
Chris Wilson
c46f3c341c igt/gem_concurrent_blit: Purge the libdrm caches before cloning
When forking, the entire VM is cloned including the VMA backed by GEM
objects from the libdrm buffer cache. This is not only slow, but can also
cause the system to exceed the maximum number of VMA and premature test
failure.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-10 20:49:26 +01:00
Chris Wilson
e8bcd678a6 igt/gem_shrink: Fix execution object offset
An off-by-one caused us to execute the blank object rather than the
batch.

References: https://bugs.freedesktop.org/show_bug.cgi?id=94801
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-10 18:42:42 +01:00
Chris Wilson
645c95400c lib: Remove defunct stop_rings
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-09 13:38:12 +01:00
Chris Wilson
1ba9717e6e igt/kms_flip: Convert over to real hang injection
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-09 13:38:12 +01:00
Chris Wilson
7f05d31c39 igt/kms_pipe_crc_basic: Replace stop_rings with igt_hang_ring
We can inject a real GPU hang for greater effect!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-09 13:38:12 +01:00
Ville Syrjälä
eaf7f46cdc tests/pm_rps: Increase timeouts to 15 seconds
My BSW takes ~12 seconds to go back to idle after high load, so the
current 10s timeouts are too short. Bump them up to 15s.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-04-08 15:06:46 +03:00
Matt Roper
78a97fe157 kms_atomic: Skip rather than fail on non-atomic drivers
i915 does not yet support the atomic modesetting interface by default;
at the moment it must be turned on explicitly via an
'i915.nuclear_pageflip' kernel command line option.  We should skip
(rather than fail) this IGT test when running on kernels that don't
advertise support for atomic modesetting.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93014
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-04-05 07:40:11 -07:00
Chris Wilson
9cff3be127 igt/gem_shrink: Reduce oom spam
Since we are deliberately going to fail the mmap() allocation, don't
assert.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-04 16:25:24 +01:00
Chris Wilson
7a977554cb igt/gem_shrink: Fix leak in userptr, add another
Hitting oom from userptr because we had N threads all consuming all of
memory, wasn't the intention but the bugs it found were useful!

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-04 15:25:57 +01:00
Chris Wilson
8833648b5c igt/gem_shrink: Exercise with userptr stress
Add additional mempressure in the form of userptr.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-02 17:41:11 +01:00
Chris Wilson
88bfe6ac41 igt/gem_shrink: Add pread/pwrite stress
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-02 17:41:11 +01:00
Chris Wilson
d081953e67 igt/pm_rps: Trigger a real GPU reset
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-01 20:09:34 +01:00
Chris Wilson
3dd5fe8ab2 igt/gem_exec_reloc: Exercise read-only relocation arrays
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-01 20:07:55 +01:00
Chris Wilson
aec81019e1 igt/gem_busy: Try to slow down execution
With lockdep enabled, the driver overhead is enormous and we need to
slow down the GPU to compenstate (otherwise the GPU is already idle when
we expect busyness). So do more work per batch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-01 17:05:20 +01:00
Chris Wilson
92ee3cc1f6 igt/gem_busy: Cap number of tries to create busy rings
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-01 14:59:43 +01:00
Chris Wilson
0f5b03fa38 igt/gem_busy: Use a boatload of store-dwords to force ring busyness
A little more inelegant as we can't control the delay very well, but it
should prove more vesatile and broaden the test coverge (and still be
quick enough for basic).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-04-01 13:21:56 +01:00
Chris Wilson
0bd117fa66 igt/gem_exec_suspend: Add basic selftest
The selftest is already before the suspend/hibernate tests, but to be
clear also run it first (it only takes a millisecond) by itself.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-29 13:53:22 +01:00
Chris Wilson
e56de3c900 igt/gem_exec_store: Exercise write ordering
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-29 11:20:22 +01:00
Chris Wilson
41a26b5152 igt/gem_exec_nop: Relax parallel assertion for short rings
On bdw, the render ring becomes full and limits dispatch across all rings.
Adjust the expected latency to take this into account.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-28 16:27:24 +01:00
Chris Wilson
870c774b86 igt/gem_exec_nop: Add expectancy of independent execution between engines
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-28 15:41:08 +01:00
Chris Wilson
633854e8f4 igt/gem_ctx_switch: Add basic test for context switching
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-26 11:22:04 +00:00
Chris Wilson
1a722fa6cf igt/gem_exec_whisper: Add simple interruptible pass
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-26 11:22:04 +00:00
Chris Wilson
5dcb026348 igt/gem_exec_whisper: Check for inconsistent reloc offset vs object offset
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-26 10:02:41 +00:00
Chris Wilson
3fd9b910d2 igt/gem_sync: Add a basic test to wait upon a batch on all rings
Execute the batch concurrently on all rings and then wait (as opposed to
executing a different batch on each engine).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-25 20:29:09 +00:00
Chris Wilson
9d61a685e9 igt/gem: Add GPU hang detection to basic tests
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-25 18:26:46 +00:00
Chris Wilson
98dcf2f0dc igt/gem_concurrent_blit: Relax maxfiles restrictions
Only fail the dmabuf tests if we cannot prep the system to support
"unlimited" fd.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-25 18:23:56 +00:00
Chris Wilson
6867b87b73 igt/gem_concurrent_blit: Enable hang detection
When we aren't deliberately injecting hangs, we don't expect to see any
GPU hang. Detect them and fail early.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-24 11:25:38 +00:00
Chris Wilson
756f3e0cb7 lib: Add a GPU error detector
If we listen to the uevents from the kernel, we can detect when the GPU
hangs. This requires us to fork a helper process to do so and send a
signal back to the parent.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-24 11:25:38 +00:00
Chris Wilson
eb572106b4 igt/gem_shrink: Consume all of total ram in each process
"Leak" the objects from each test until each process has allocated
enough objects to consume all of RAM.

Doing so from each process not only ensures we do stress the allocation
paths, but also obsoletes the separate purgeable helper.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-23 11:11:43 +00:00
Chris Wilson
a9436e6693 igt/gem_shrink: Include a shrinker vs GPU hang
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-23 09:54:22 +00:00
Chris Wilson
54ec3782dc tests: Add gem_shrink
This test exercise purely to exercise the shrinker under some common
stress (i.e. paths leading to i915_gem_object_get_pages()). We try to
fill the entirely of memory split amongst many processes so that each
individual process only consumes a small fraction of RAM (less than the
mappable aperture) and a single process should not be individually
blamed.

Based on an idea to have a seperate set of memory stress tests by Piotr
Luc.

Cc: Piotr Luc <piotr.luc@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-23 09:41:54 +00:00
Lionel Landwerlin
7fc5256f56 test/kms_pipe_color: add test to verify legacy ioctl resets GAMMA_LUT
The GAMMA_LUT/DEGAMMA_LUT/CTM properties must be updated when the
legacy ioctl is triggered to ensure the new properties do not impact
older userspace code.

v2: Add checks verifying the content of CTM & DEGAMMA_LUT properties

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
2016-03-21 11:48:11 -07:00
Lionel Landwerlin
aa55641d4f tests/kms_color: New test for pipe level color management
This test enables testing of :

     * degamma LUTs
     * csc matrix
     * gamma LUTs
     * legacy gamma LUTs

v2: turn assert into require to skip on platform not supporting color
    management

v3: add invalid blob ids tests

v4: Try to match CRC results against several values around the
    expected result for platforms with odd LUT items

v5: Fix running tests with multiple screens

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matt Roper <matthew.d.roper@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
2016-03-21 11:47:54 -07:00
Chris Wilson
f1a3d0d96f igt/gem_ringfill: Fix basic- reversal
Rushed flipping around the logic to add basic- and forgot to apply the
corrected patch.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 14:40:51 +00:00
Chris Wilson
87a4d8ab64 igt/gem_ringfill: Fine-tune list of BAT tests
Drop -bomb as with forking * interruptible repeating, it takes too long
to include in the BAT.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 14:36:57 +00:00
Chris Wilson
a43f40741b igt/gem_exec_suspend: Add BAT runs
Add a couple of all-engine busy tests in order to exercise coherency and
general bugs across suspend. (In particular, I expect this to trigger a
fresh case of lockdeps on Braswell, as well as the usual battery of
missing rpm references. This is an exerciser for my lockless-suspend
patches.)

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 12:44:44 +00:00
Chris Wilson
a03ee8f6c8 igt/gem_exec_suspend: Allow suspend testing on gen6
Filter out the request to execute on gen6/bsd to prevent skips.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 12:05:48 +00:00
Chris Wilson
d5e550f5c6 igt/gem_exec_whisper: Tweak migration logging
reloc.presumed_offset == -1 => implies we hit the fallback path and not
that we strictly needed to patch the relocation.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 12:05:48 +00:00
Chris Wilson
fcb4cfa520 igt/gem_concurrent_all: Inject a hang onto all rings
Also test a hang across all rings, rather than just one engine.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 12:05:48 +00:00
Chris Wilson
3b22b89dd8 igt/gem_exec_whisper: Prevent MI_STORE_DWORD on gen6/bsd again
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-21 11:14:27 +00:00
Chris Wilson
c19b049d9c igt/gem_concurent_blit: Prevent a memleak if we assert whilst creating buffers
Assume that we may halt partway through buffers_create() and so be
careful to clear up the partial state in buffers_destroy().

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-20 11:17:21 +00:00
Chris Wilson
3d8af56ed2 igt/gem_concurrent_blit: Reset process limits to allow dmabuf tests
Since dmabuf requires an actual fd for every object, we need to increase
the number of files our process is allowed.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-20 10:51:09 +00:00
Chris Wilson
f338e9834c igt/gem_concurrent_blit: Enable quicker interruptible testing
v2: Because I managed to push the wrong version.

Make --list-subtests happer by creating the name before the igt_fixture,
not inside it.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-19 15:59:27 +00:00