summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-03-08lib: Magic for_each_engine() macro to iterate over available enginesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08igt/gem_exec_suspend: Do pre/post suspend double checksChris Wilson
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-08lib: Skip execution in gem_has_ring()Chris Wilson
By looking for a particular error we can avoid actually executing anything when testing whether the kernel supports an individual ring. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08lib: Flush all possible ringsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08lib: Flush BSD2 as well when availableChris Wilson
When flushing work and idling the GPU, we need to flush all engines, including the forgotten BSD2. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-08igt/gem_reloc_overflow: Fix errno tests for "overflow"Chris Wilson
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-07igt/pm_rpm: Wait for PCI D3Chris Wilson
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-07gem_ppgtt: Fix flink-and-exit-vma-leak for engine->last_contextTvrtko Ursulin
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-07tests/kms_setmode: Fix compilation warnings.Marius Vlad
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-07tests/kms_setmode: Add tests when not stealing encoders on same crtc.Maarten Lankhorst
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-04tests/kms_draw_crc: remove hardcoded PIPE_APaulo Zanoni
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-04kms_frontbuffer_tracking: Remove hardcoded PIPE_AGabriel Feceoru
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-03kms_frontbuffer_tracking: add missing igt_remove_fb callsPaulo Zanoni
Let's be good citizens and properly handle our garbage. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03tests: fix CRTC assignment for a few testsPaulo Zanoni
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-03kms_frontbuffer_tracking: try harder to find suitable connectorsPaulo Zanoni
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-03kms_frontbuffer_tracking: extract find_connector functionPaulo Zanoni
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-03kms_frontbuffer_tracking: don't pass the crtc idx to init_mode_paramsPaulo Zanoni
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-03lib/igt_kms: add kmstest_get_crtc_idxPaulo Zanoni
Move it from pm_rpm.c to lib/igt_kms and remove the hardcoded version from kms_frontbuffer_tracking. I'm also planning to add other callers. Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-03-03man: update intel_reg.rst to be more in line with the othersJani Nikula
Use the definitions and formatting used in other man pages, etc. Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2016-03-03man: rewrite manual pages in reStructuredTextJani Nikula
intel_reg.rst was the first man page written in reStructuredText. Follow suit with the rest of the man pages. Add a generated defs.rst include file for definitions such as intel-gpu-tools version. This replaces the MAN_SUBSTS sed script substitutions from xorg-macros for old man pages. Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2016-03-03lib/igt_fb: Fix gen2 and 915 Y tile sizesVille Syrjälä
gen2 tile dimensions are 128x32 for both X and Y tiling 915 tile dimensions are 512x8 for both X and Y tiling Fix igt_get_fb_tile_size() to return the correct Y tile dimensions for these platforms. X tile was fine already. Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-03-03lib/igt_kms: Fix igt_fb_set_size() debug messageVille Syrjälä
The debug message in igt_fb_set_size() was copy pasted from igt_fb_set_position() and not adjusted to say the right thing. Fix it up. Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2016-03-03lib/igt_gt: Replace asm clflush/mfence with __builtin_ia32 variantsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-03tests/pm_rpm: Fix CRASH on machines that lack LLCDavid Weinehall
On machines that lack an LLC the pm-caching subtest will terminate with sigbus and thus CRASH during the I915_CACHING_CACHED iteration. To work around this we reset the caching to I915_CACHING_NONE before doing memory access. v2: Various improvements based on feedback from Chris Wilson v3: Fix incorrect Signed-off-by: line v4: Further improvements based on feedback from Chris Wilson Signed-off-by: David Weinehall <david.weinehall@linux.intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com> Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-03-03lib: Tidy testing for rtcwakeChris Wilson
When performing a dummy-run of rtcwake, hide the output as it doesn't print anything useful (just when it will wake up). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-03igt/gem_softpin: Check norelocations hold versus suspend/resumeChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-03igt/gem_exec_basic: Check that we don't write into the const execbuf argChris Wilson
For good measure, also check that we can read the args from a GTT mmaping. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-02igt/gem_exec_suspend: Exercise simple exec-and-read across suspendChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-02lib/igt_fb: Fix domain tracking for GTT cairo surfacesChris Wilson
If we create a cairo surface using a GTT mmaping, then we need to use the GTT access domain. cairo surfaces created with a blit temporary (for unfenced surfaces) still use the CPU domain. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-02lib: Show the command that fails when suspendingChris Wilson
Include the system("") in the debug output for the assertion failure. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-02tests/drv_missed_irq_hang: Wait harderChris Wilson
Improve the busy-load for triggering a wait-on-interrupt and check for extraneous missed-interrupts before and after our tests. References: https://bugs.freedesktop.org/show_bug.cgi?id=88437 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-02igt/gem_ctx_create: Exercise implicit per-fd context creationChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-01igt/gem_ctx_create: Exercise a trivial allocation failureChris Wilson
Trying to allocate and use lots of contexts with execlists and !llc end ups in faliure very quickly. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-01Bump again to 1.14, as Chris managed to push before I got chance to do aMarius Vlad
release. Modified REAMDE to include link for doing releases. Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-03-01benchmarks/gem_blt: Measure the throughput of synchronous copiesChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-01NEWS: Updates and bump release to 1.14.Marius Vlad
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-03-01tests/drv_hangman: test for acthd increasing through invalid VM spaceDaniele Ceraolo Spurio
The hangcheck logic will not flag an hang if acthd keeps increasing. However, if a malformed batch jumps to an invalid offset in the ppgtt it can potentially continue executing through the whole address space without triggering the hangcheck mechanism. This patch adds a test to simulate the issue. I've kept the test running for more than 10 minutes before killing it on a BDW and no hang occurred. I've sampled i915_hangcheck_info a few times during the run and got the following: Hangcheck active, fires in 468ms render ring: seqno = fffff55e [current fffff55e] ACTHD = 0x47df685ecc [current 0x4926b81d90] max ACTHD = 0x47df685ecc score = 0 action = 2 instdone read = 0xffd7ffff 0xffffffff 0xffffffff 0xffffffff instdone accu = 0x00000000 0x00000000 0x00000000 0x00000000 Hangcheck active, fires in 424ms render ring: seqno = fffff55e [current fffff55e] ACTHD = 0x6c953d3a34 [current 0x6de5e76fa4] max ACTHD = 0x6c953d3a34 score = 0 action = 2 instdone read = 0xffd7ffff 0xffffffff 0xffffffff 0xffffffff instdone accu = 0x00000000 0x00000000 0x00000000 0x00000000 Hangcheck active, fires in 1692ms render ring: seqno = fffff55e [current fffff55e] ACTHD = 0x1f49b0366dc [current 0x1f4dcbd88ec] max ACTHD = 0x1f49b0366dc score = 0 action = 2 instdone read = 0xffd7ffff 0xffffffff 0xffffffff 0xffffffff instdone accu = 0x00000000 0x00000000 0x00000000 0x00000000 v2: use the new gem_wait() function (Chris) v3: switch to unterminated batch and rename test, remove redundant check, update test requirements (Chris), update top comment v4: force gpu reset if the hang detection fails (Mika) Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Cc: Arun Siluvery <arun.siluvery@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> [Mika: removed batch_len=8] Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2016-03-01lib: move i915_wedged_set to ig_gt.cDaniele Ceraolo Spurio
Upcoming tests will call it to recover from bad states caused by hangcheck bugs.the function was renamed to igt_force_gpu_reset to have a naming closer to other hang-related functions in the same file. The value written to the debugfs has also been changed to -1; this makes no differences with the current implementation but copes with upcoming TDR changes (still under discussion) that should allow the resetting of a mask of rings. Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
2016-03-01igt/gem_concurrent_blit: Deglobalify num_buffersChris Wilson
More num_buffers onto the local struct passed down into the tests to avoid the issue with having to modify the global value inside the tests leading to hilarity if the test asserts. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-03-01lib: Add read/write direction support for dmabuf synchronisationChris Wilson
Allow read-only synchronisation on dmabuf mmaps, useful to allow concurrent read-read testing between the CPU and GPU. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-29lib: Check required number of surfaces against VFS file limitsChris Wilson
If we want to create more file handles than VFS supports (itself often a memory limited value), report that we can not create that many objects via intel_require_memory(). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-29tests/kms_force_connector_basic: Disable all crtc's for load-detect.Maarten Lankhorst
Load detection requires a inactive crtc to run. The CI igt tests are failing, so ensure there is at least 1 inactive crtc. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-02-26igt/gem_sync: Enforce a timeout of 20sChris Wilson
The sync test is supposed to complete in 10s. But some bugs cause it to run very, very slowly. As a defence against those, terminate the test if we wait for more than 20s. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-26kms_atomic: drop unnecessary connector looping from plane_primary testMatt Roper
Local variable num_connectors is never initialized before being auto-incremented in the loop. If we wind up with a non-zero garbage value, it will lead us to try to write to an out-of-bounds array index. We should probably initialize it to zero before use. However on closer inspection, the plane_primary test doesn't actually wind up using the connector list or number of connectors, so just remove the whole block of code; it was probably brought in by accident as part of a copy-paste operation. Cc: Daniel Stone <daniels@collabora.com> Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
2016-02-26igt/drv_hangman: Tidy up assertion failure messageChris Wilson
Because (drv_hangman:6035) CRITICAL: Failed assertion: !((__extension__ (__builtin_constant_p (l) && ((__builtin_constant_p (tmp) && strlen (tmp) < ((size_t) (l))) || (__builtin_constant_p (s) && strlen (s) < ((size_t) (l)))) ? __extension__ ({ size_t __s1_len, __s2_len; (__builtin_constant_p (tmp) && __builtin_constant_p (s) && (__s1_len = strlen (tmp), __s2_len = strlen (s), (!((size_t)(const void *)((tmp) + 1) - (size_t)(const void *)(tmp) == 1) || __s1_len >= 4) && (!((size_t)(const void *)((s) + 1) - (size_t)(const void *)(s) == 1) || __s2_len >= 4)) ? __builtin_strcmp (tmp, s) : (__builtin_constant_p (tmp) && ((size_t)(const void *)((tmp) + 1) - (size_t)(const void *)(tmp) == 1) && (__s1_len = strlen (tmp), __s1_len < 4) ? (__builtin_constant_p (s) && ((size_t)(const void *)((s) + 1) - (size_t)(const void *)(s) == 1) ? __builtin_strcmp (tmp, s) : (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (s); int __result = (((const unsigned char *) (const char *) (tmp))[0] - __s2[0]); if (__s1_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (tmp))[1] - __s2[1]); if (__s1_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (tmp))[2] - __s2[2]); if (__s1_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (tmp))[3] - __s2[3]); } } __result; }))) : (__builtin_constant_p (s) && ((size_t)(const void *)((s) + 1) - (size_t)(const void *)(s) == 1) && (__s2_len = strlen (s), __s2_len < 4) ? (__builtin_constant_p (tmp) && ((size_t)(const void *)((tmp) + 1) - (size_t)(const void *)(tmp) == 1) ? __builtin_strcmp (tmp, s) : (- (__extension__ ({ const unsigned char *__s2 = (const unsigned char *) (const char *) (tmp); int __result = (((const unsigned char *) (const char *) (s))[0] - __s2[0]); if (__s2_len > 0 && __result == 0) { __result = (((const unsigned char *) (const char *) (s))[1] - __s2[1]); if (__s2_len > 1 && __result == 0) { __result = (((const unsigned char *) (const char *) (s))[2] - __s2[2]); if (__s2_len > 2 && __result == 0) __result = (((const unsigned char *) (const char *) (s))[3] - __s2[3]); } } __result; })))) : __builtin_strcmp (tmp, s)))); }) : strncmp (tmp, s, l))) == 0) is a little hard to understand at a glance. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-26igt/gem_sync: Test across all rings simultaneouslyChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-26igt/gem_sync: Add some forked variantsChris Wilson
Repeat the synchronisation test with a few competing processes. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-25igt/gem_concurrent_blit: Pretend tests existChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-25igt/gem_concurrent_blit: Add dmabuf exercisersChris Wilson
Create and use dmabuf mmaps as well to ensure correct synchronisation between concurrent rendering and CPU access. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-23lib: Move gem_wait() to ioctl-wrappersChris Wilson
We intend to use gem_wait() in more tests than gem_wait.c, so move the simple ioctl wrapper into the core. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>