summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2015-11-16tests/kms_flip: Modeset pipes in reverse orderVille Syrjälä
To make more multi-pipe tests run on IVB, do the modesets in the reverse order (ie. pipe C first, pipe A last). This way pipe B can't reserve the 2 shared FDI lanes before pipe C is set up. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16tests/kms_flip: Disable all pipes before each testVille Syrjälä
Currently kms_flip leaks the state of the pipes from one subtest to the next. Meaning a single pipe test can actually have two or more pipes actually up and running, and similarly a two pipe test can have three pipes running. This is particularly nasty on IVB since one of the pipes still running but not actually part of the test maybe have reserved the shared FDI lanes, thus preventing one of the pipes taking part in the test from being enabled. To avoid such problems explicitly disable all pipes before each subtests. v2: Use kmstest_unset_all_crtcs() (Paulo) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16tests/kms_flip: Use human readable pipe and connector namesVille Syrjälä
Print the pipes and connectors in a human readable form instead of using the integer IDs. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-13tests/gem_exec_nop: Improved test run timeDerek Morton
Reduced the Sleep period to 200mS and reduced the repetition count to 7 to decrease the test run time significantly. v2: Changed uS to us v3: removed the output formatting change as the issue will be addressed in a seperate patch from Thomas Wood. v4: mS -> ms Signed-off-by: Derek Morton <derek.j.morton@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-12tests/kms_setmode: Handle MST correctly.Maarten Lankhorst
There is a MST encoder for each crtc, and each MST connector will be connected to the encoder bound to that crtc. This breaks the kms_setmode assertion that is only 1 encoder per connector, so make an exception to that rule for displayport. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2015-11-12igt/gem_mmap_gtt: Require SET_TILING to work before doing large tiled testsChris Wilson
Older generations are more limited in how much they can fence, and the limits is enforced in the SET_TILING ioctl. So if it reports an EINVAL, we cannot perform the tiled test and may just skip it instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-11igt/gem_concurrent_all: Add testcases that split the copying across ringsChris Wilson
More inter-ring concurrency tests. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-11tests/kms_force_connector: reset connectors and edid on exitThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_force_connector: clear forced edid in resetThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_force_connector: use comparison macrosThomas Wood
Use the comparison macros to make debug output clearer. v2: fix incorrect comparison Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_force_connector: add an option to reset connector force statesThomas Wood
v2: add missing igt_exit call and fix reset_connectors definition Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_force_connector: skip if the required connector is connectedThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_force_connector: free the display struct when no longer neededThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests/kms_fbc_crc: ensure context is initialized correctlyThomas Wood
Initialization was included in commit a976d7e (tests/kms_fbc_crc: refactor context handling code), but won't be executed since it is declared before the first label within a switch statement. kms_fbc_crc.c:178:2: warning: ‘context’ may be used uninitialized in this function [-Wmaybe-uninitialized] rendercopy(batch, context, ^ kms_fbc_crc.c:271:22: note: ‘context’ was declared here drm_intel_context *context = NULL; ^ Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-11tests: remove duplicate struct member initializersThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11tests: remove unnecessary igt_exit callsThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-11Add missing noreturn attribute to various functionsThomas Wood
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-03kms_atomic: Add basic atomic modesetting testsDaniel Stone
Add tests for KMS atomic modesetting, to exercise the basic interface and test failure/corner cases. Should ensure coherency between the legacy and atomic interfaces. v2: New patch. v3: Disable connector checking for now, as it was causing GPU hangs on newer kernels. v4: Rebase. v5: Use do_ioctl or do_ioctl_err consistently. Use igt_assert_*() helper macros rather than igt_assert() directly. Move assertions into helper/check functions. Define atomic commit helper. v6: Use do_ioctl_err, and define macros to move errors to actual callsite, rather than helper functions. Co-authored-by: Micah Fedke <micah.fedke@collabora.com> Signed-off-by: Daniel Stone <daniels@collabora.com>
2015-11-03tests/core_prop_blob: Add multiple blobs per connectionDaniel Stone
This should hit the bug fixed in: commit 8731b269f01e16193390c7276e70530366b8d626 Author: Maneet Singh <mmaneetsingh@nvidia.com> Date: Thu Oct 8 10:10:24 2015 -0400 drm: Correct arguments to list_tail_add in create blob ioctl Arguments passed to list_add_tail were reversed resulting in deletion of old blob property everytime the new one is added. Fixes commit e2f5d2ea479b9b2619965d43db70939589afe43a Author: Daniel Stone <daniels@collabora.com> Date: Fri May 22 13:34:51 2015 +0100 drm/mode: Add user blob-creation ioctl Signed-off-by: Maneet Singh <mmaneetsingh@nvidia.com> [seanpaul tweaked commit subject a little] Signed-off-by: Sean Paul <seanpaul@chromium.org> Cc: stable@kernel.org # v4.2 Reviewed-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Dave Airlie <airlied@gmail.com> which was introduced with the initial blob support in: commit e2f5d2ea479b9b2619965d43db70939589afe43a Author: Daniel Stone <daniels@collabora.com> Date: Fri May 22 13:34:51 2015 +0100 drm/mode: Add user blob-creation ioctl Add an ioctl which allows users to create blob properties from supplied data. Currently this only supports modes, creating a drm_display_mode from the userspace drm_mode_modeinfo. v2: Removed size/type checks. Rebased on new patches to allow error propagation from create_blob, as well as avoiding double-allocation. Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@intel.com> Tested-by: Sean Paul <seanpaul@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Daniel Stone <daniels@collabora.com>
2015-11-03tests: Run igt.cocciDaniel Stone
Signed-off-by: Daniel Stone <daniels@collabora.com>
2015-11-03igt/gem_userptr_blits: Correct the number of objects requiredChris Wilson
Since we allocate 2 times count number of objects, that is the number of objects we should be using when checking for sufficient RAM to use for the test. References: https://bugs.freedesktop.org/show_bug.cgi?id=92799 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-30igt/kms_rotation_crc: Add a subtest to validate Y-tiled obj + Y fb modifier (v3)Vivek Kasireddy
The main goal of this subtest is to trigger the following warning in the function i915_gem_object_get_fence(): if (WARN_ON(!obj->map_and_fenceable)) To trigger this warning, the subtest first creates a Y-tiled object and an associated framebuffer with the Y-fb modifier. Furthermore, to prevent the map_and_fenceable from being set, we make sure that the object does not have a normal VMA by refraining from rendering to the object and by setting the rotation property upfront before calling commit. v2: Do not call paint_squares and just use one output. v3: Convert an if condition to igt_require and move the plane rotation requirement further up before the fb allocation. Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-10-23kms_frontbuffer_tracking: remove opt.only_featurePaulo Zanoni
That option is not needed anymore since: commit 982934625ac67234c6d85c6cf29a5a487e54d4f0 Author: Thomas Wood <thomas.wood@intel.com> Date: Wed Sep 16 14:36:24 2015 +0100 lib: allow wildcard matching when specifying subtests In fact, using "--run-subtest 'fbc-*'" is better than using --fbc-only due to how SKIPs are handled. In the former, only the tests matching the expression are tried, so the number of SKIPs only contains the number of tests on the specified pattern that were skipped. If you used --fbc-only, all the non-fbc tests would count as SKIPs, so it would be harder to know which of the tests marked as skipped were actual FBC tests. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: add stridechange subtestPaulo Zanoni
This is a corner case not exercised by the other subtests. The test is expected to pass both with the current Kernel tree and with the patches that are on the mailing list. The patches currently on the mailing list change how the CFB is allocated, and this subtest is designed to make sure everything still works as expected. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: add flag to not assert feature statusPaulo Zanoni
This will be used by the stridechange subtest. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23kms_frontbuffer_tracking: unset crtcs after getting the base blue CRCPaulo Zanoni
This fixes the failures for cases where you use --run-subtest to run single subtests that don't use any drawing patterns. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-23tests/kms_flip: Dump the timestamps, counters, etc. with higher debug levelsVille Syrjälä
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-10-23tests/kms_flip: Improve the accuracy of out frame time calculationVille Syrjälä
Don't use the rounded vrefresh info to predict the frame duration. Instead calculate if from the clock. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-10-23tests/kms_pipe_crc_basic: Skip invalid pipe/port combosVille Syrjälä
Don't try to test invaliud pipe/port combos. Fixes the test on VLV w/ DSI since the pipe<->DSI port mapping is fixed. Should also fix other platforms with similar restrictions. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-10-23igt/gem_concurrent_all: Add snoop concurrency testsChris Wilson
Another caching mode worth exploring for bad flushing behaviour. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-19Update CONTEXT_PARAM for GTT_SIZE reportingChris Wilson
Add the new PARAM identifier for reporting the context's GTT size. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-16kms_cursor_crc: Add test for unthrottled cursor movementMatt Roper
We've had bugs in the past that caused cursor updates to be synced to vblank, resulting in sluggish cursor movement. Add a test to try to make sure we don't regress and reintroduce these bugs. Cc: kalyan.kondapally@intel.com Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-10-16tests/gem_pwrite_snooped: Fix use of GCC pragmasChris Wilson
Apparently GCC treats the #pragma directive as a code block and so we returned unconditionally from memchr_inv() on the first byte fubaring the test. commit b04691b3e8e62bd105f0f4d8d3b9e7da187f0c90 Author: Thomas Wood <thomas.wood@intel.com> Date: Tue Sep 8 11:16:46 2015 +0100 tests/gem_pwrite_snooped: disable const cast warning Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=92227 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-15tests/core_prop_blob: Fix core_prop_blob for androidDerek Morton
core_prop_blob was using ioctls not in the android kernel. Added a igt_require_propblob() function and local defines/structures so the test will compile and skip on kernels where the feature is unsupported. v2: moved igt_require_propblob() to core_prop_blob.c (Daniel Vetter) Moved gem_blt.c to a seperate patch (Thomas Wood) Signed-off-by: Derek Morton <derek.j.morton@intel.com> [Thomas: fix compiler warning] Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-10-14kms_rotation_crc: Exercise page flips with 90 degree rotationTvrtko Ursulin
Do some page flipping on the rotated plane just to exercise that code path. v2: Actually render to flip fb and fixed flip counter. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Cc: Sonika Jindal <sonika.jindal@intel.com> Cc: Arun R Murthy <arun.r.murthy@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-10-14kms_universal_plane: Add gen9-specific testMatt Roper
Gen9 adds some new capabilities not present on previous platforms (primary plane windowing, 90/270 rotation, etc.). Add a new subtest to check how these new features interact with the use of the universal plane API. For now we just check whether pageflips work as expected in a windowed setting. We may want to add some rotation testing in future patches. Signed-off-by: Matt Roper <matthew.d.roper@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-10-12Replace __gem_mmap__{cpu,gtt,wc}() + igt_assert() with gem_mmap__{cpu,gtt,wc}()Ville Syrjälä
gem_mmap__{cpu,gtt,wc}() already has the assert built in, so replace __gem_mmap__{cpu,gtt,wc}() + igt_assert() with it. Mostly done with coccinelle, with some manual help: @@ identifier I; expression E1, E2, E3, E4, E5, E6; @@ ( - I = __gem_mmap__gtt(E1, E2, E3, E4); + I = gem_mmap__gtt(E1, E2, E3, E4); ... - igt_assert(I); | - I = __gem_mmap__cpu(E1, E2, E3, E4, E5); + I = gem_mmap__cpu(E1, E2, E3, E4, E5); ... - igt_assert(I); | - I = __gem_mmap__wc(E1, E2, E3, E4, E5); + I = gem_mmap__wc(E1, E2, E3, E4, E5); ... - igt_assert(I); ) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Stochastically-reviwewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-09Make gem_mmap__{cpu,gtt,wc}() assert on failureVille Syrjälä
Rename the current gem_mmap__{cpu,gtt,wc}() functions into __gem_mmap__{cpu,gtt,wc}(), and add back wrappers with the original name that assert that the pointer is valid. Most callers will expect a valid pointer and shouldn't have to bother with failures. To avoid changing anything (yet), sed 's/gem_mmap__/__gem_mmap__/g' over the entire codebase. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Stochastically-reviwewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-09Sprinkle igt_assert(ptr) after gem_mmap__{cpu,gtt,wc}Ville Syrjälä
Do the following ptr = gem_mmap__{cpu,gtt,wc}() +igt_assert(ptr); whenever the code doesn't handle the NULL ptr in any kind of specific way. Makes it easier to move the assert into gem_mmap__{cpu,gtt,wc}() itself. Mostly done with coccinelle, with some manual cleanups: @@ identifier I; @@ <... when != igt_assert(I) when != igt_require(I) when != igt_require_f(I, ...) when != I != NULL when != I == NULL ( I = gem_mmap__gtt(...); + igt_assert(I); | I = gem_mmap__cpu(...); + igt_assert(I); | I = gem_mmap__wc(...); + igt_assert(I); ) ...> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Stochastically-reviwewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-09Remove gem_mmap__{cpu,gtt,wc} return value MAP_FAILED assertsVille Syrjälä
gem_mmap__{cpu,gtt,wc} never return MAP_FAILED, it gets converted to NULL internally. So don't go asserting that the returned value is not MAP_FAILED. Done with coccinelle: @@ type T; identifier I; @@ ( I = gem_mmap__gtt(...); | I = gem_mmap__cpu(...); | I = gem_mmap__wc(...); ) ... ( - igt_assert(I != MAP_FAILED); + igt_assert(I); | - igt_assert(I && I != MAP_FAILED); + igt_assert(I); | - igt_assert(I != (T *) MAP_FAILED); + igt_assert(I); | - igt_assert(I != NULL); + igt_assert(I); ) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Stochastically-reviwewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-09s/gem_mmap/gem_mmap__gtt/Ville Syrjälä
Get rid of the gem_mmap() alias of gem_mmap__gtt(). I don't see any point in having it. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Stochastically-reviwewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-10-08kms_frontbuffer_tracking: add fliptrack subtestPaulo Zanoni
The current upstream Kernel code stops and then restarts FBC at every page flip. I am working on patches to keep FBC enabled all the time, so this brings the possibility of having the hardware tracking mechanism looking at the old buffer instead of the new one. This test should catch this problem. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: don't mode unset when checking sink CRC supportPaulo Zanoni
There's no reason to do a mode unset since we don't care about whether FBC or PSR are enabled or disabled. This should save about a second for each time you invoke the program. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: add scaledprimary subtestPaulo Zanoni
It's not testing a lot since we lack the Kernel Stolen Memory Checker, but some day this will be useful. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: set the universal planes cap in the setupPaulo Zanoni
... instead of just setting it for the fullscreen_plane subtest and then unsetting it. We want to use it more, so just make sure all the code knows how to deal with multiple planes per CRTC. This also allows us to do some upfront caching of the plane information, so the code for the tests gets simpler. There's a new test that's going to use all these changes. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-08kms_frontbuffer_tracking: change pattern 1's last rect to 1x1Paulo Zanoni
Make sure the tracking mechanism is able to track a write in the very last pixel. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-10-07tests: Add blob-property testDaniel Stone
Exercises the new blob-creation ioctl, testing lifetimes and behaviour of user-created blobs, as well as exercising all the invariant conditions we guarantee from modes exposed as blob properties. v2: Renamed to core_prop_blob, skip test if blob not available. v3: No changes. v4: Consistently return 0/errno. v5: Use do_ioctl_err and igt_assert_fd. Use igt_assert_*() helper macros rather than direct igt_assert(). Signed-off-by: Daniel Stone <daniels@collabora.com> Reviewed-by: Daniel Vetter <daniel.vetter@intel.com>
2015-09-28tests/pm_rc6_residency: Measure the sleep durationVille Syrjälä
The code is confused about the units of CODE_TIME. The comment says 50 microsseconds, but the actual code makes it 50 milliseconds. Avoid the whole mess by measuring the sleep duration ourselves. Since the time measurement is taken around the whole operation it obviously includes a bit of extra, but at least it's much less than the fixed 50 ms. For instance on one VLV board I now get something like this: - Residency in rc6 or deeper state: 3002 ms (ratio to expected duration: 0.98) + Residency in rc6 or deeper state: 3001 ms (sleep duration 3003 ms) (ratio to expected duration: 1.00) so the reported ratio is now much closer to reality. Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-09-25testdisplay: Fix segfault after first modeset failsAnder Conselvan de Oliveira
When testing all modes on a connector with a single mode, if the modeset fails, the code attempts to remove fb_info[-1], because old_fb still has the inital value of -1. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90625 Signed-off-by: Ander Conselvan de Oliveira <ander.conselvan.de.oliveira@intel.com> Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-09-24lib: add igt_debugfs_searchThomas Wood
Add igt_debugfs_search to search each line in a debugfs file for a specified substring. Signed-off-by: Thomas Wood <thomas.wood@intel.com>