summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-02-17lib/igt_core.c: Expand --run-subtest functionality.Derek Morton
Added extended wildcard support when specifying --run-subtest. Wildcard format is as specified in rfc3977 and the uwildmat() implementation is taken from libinn. See https://tools.ietf.org/html/rfc3977#section-4 for a description of allowed wildcard expressions. v2: Use comma as list separator (Ville Syrjala) support both ^ and ! as not operators (Dave Gordon) v3: Updated to use uwildmat() (Dave Gordon) Signed-off-by: Derek Morton <derek.j.morton@intel.com> [danvet: Fixup whitespace. Add #include <stdint.h>. Run lint.] Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-02-14tests/prime_mmap: Encapsulate check_for_dma_buf_mmap() in igt_fixture.Marius Vlad
This unbreaks distcheck target that in turn runs each test with --list-subtests. Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-02-14Update MAINTAINERS file.Marius Vlad
Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
2016-02-13aubdump: Add a get_bo() lookup functionKristian Høgsberg Kristensen
We'll use this instead of accessing the bo array directly and add a few sanity checks.
2016-02-13aubdump: Don't use .so constructors for initializingKristian Høgsberg Kristensen
This doesn't seem to work when mixed with constructors in other shared objects or other creative uses of the linker. Let's stick with a simpler mechanism, where we look up the libc functions when our hooks are called for the first time.
2016-02-13aubdump: Raise SIGTRAP on failureKristian Høgsberg Kristensen
2016-02-12igt/gem_userptr_blits: Flip sign on error checkChris Wilson
Following conversion to __gem_execbuf() we need to consider that it returns -errno when checking the result. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94117 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-11tests: Add prime_mmap_coherency for cache coherency testsTiago Vignatti
Different than kms_mmap_write_crc that captures the coherency issues within the scanout mapped buffer, this one is meant for test dma-buf mmap on !llc platforms mostly and provoke coherency bugs so we know where we need the sync ioctls. I tested this with !llc and llc platforms, BTY and IVY respectively. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11tests: Add kms_mmap_write_crc for cache coherency testsTiago Vignatti
This program can be used to detect when CPU writes in the dma-buf mapped object don't land in scanout due cache incoherency. Although this seems a problem inherently of non-LCC machines ("Atom"), this particular test catches a cache dirt on scanout on LLC machines as well. It's inspired in Ville's kms_pwrite_crc.c and can be used also to test the correctness of the driver's begin_cpu_access and end_cpu_access (which requires i915 implementation. To see the need for flush, one has to run using '-n' option to not call the sync ioctls which, via a rather simple CPU hog the system will trashes the caches, while the test will catch the coherency issue. If you now suppress '-n', then things should just work like expected. I tested this with !llc and llc platforms, BTY and IVY respectively. v2: use prime_handle_to_fd_for_mmap instead. v3: merge end_cpu_access() patch with this and provide options to disable sync. v4: use library's prime_sync_{start,end} instead. v7: use CPU hog instead and use testing rounds to catch the sync problems. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11lib: Add prime_sync_start and prime_sync_end helpersTiago Vignatti
This patch adds dma-buf mmap synchronization ioctls that can be used by tests for cache coherency management e.g. when CPU and GPU domains are being accessed through dma-buf at the same time. v7: add sync invalid flags test. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11prime_mmap: Add basic tests to write in a bo using CPUTiago Vignatti
This patch adds test_correct_cpu_write, which maps the texture buffer through a prime fd and then writes directly to it using the CPU. It stresses the driver to guarantee cache synchronization among the different domains. This test also adds test_forked_cpu_write, which creates the GEM bo in one process and pass the prime handle of the it to another process, which in turn uses the handle only to map and write. Roughly speaking this test simulates Chrome OS architecture, where the Web content ("unpriviledged process") maps and CPU-draws a buffer, which was previously allocated in the GPU process ("priviledged process"). This requires kernel modifications (Daniel Thompson's "drm: prime: Honour O_RDWR during prime-handle-to-fd") and therefore prime_handle_to_fd_for_mmap is added to fail in case these lack. Also, upcoming tests (e.g. next patch) are going to use it as well, so make it public and available in the lib. v2: adds prime_handle_to_fd_with_mmap for skipping test in older kernels and test for invalid flags. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11prime_mmap: Add new test for calling mmap() on dma-buf fdsRob Bradford
This test has the following subtests: - test_correct for correctness of the data - test_map_unmap checks for mapping idempotency - test_reprime checks for dma-buf creation idempotency - test_forked checks for multiprocess access - test_refcounting checks for buffer reference counting - test_dup checks that dup()ing the fd works - test_userptr make sure it fails when mmaping due the lack of obj->base.filp in a userptr. - test_errors checks the error return values for failures - test_aperture_limit tests multiple buffer creation at the gtt aperture limit v2 (Tiago): Removed pattern_check(), which was walking through a useless iterator. Removed superfluous PROT_WRITE from gem_mmap, in test_correct(). Added binary file to .gitignore v3 (Tiago): squash patch "prime_mmap: Test for userptr mmap" into this one. v4 (Tiago): use synchronized userptr for testing. Add test for buffer overlapping. Signed-off-by: Rob Bradford <rob@linux.intel.com> Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11lib: Add gem_userptr and __gem_userptr helpersTiago Vignatti
This patch moves userptr definitions and helpers implementation that were locally in gem_userptr_benchmark and gem_userptr_blits to the library, so other tests can make use of them as well. There's no functional changes. v2: added __ function to differentiate when errors want to be handled back in the caller; bring gem_userptr_sync back to gem_userptr_blits; added gtkdoc. v8: remove local_i915_gem_userptr from gem_concurrent_all.c to use the global helpers instead. Signed-off-by: Tiago Vignatti <tiago.vignatti@intel.com> Reviewed-by: Stéphane Marchesin <marcheu@chromium.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-11kms_force_connector_basic: Add force-load-detect testMaarten Lankhorst
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-02-10tests/gem_exec_params: test all valid execution flagsDaniele Ceraolo Spurio
The control subtest has been extended to check the execution flags for all the rings that are present in the HW. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-02-09lib: Fix build when vc4 headers are presentTomeu Vizoso
Automake seems to not like variable assignments indented with tabs. Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com> Fixes: 9e5478dc4345 ("lib: Only compile igt_vc4 is we have it") Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2016-02-09lib: Only compile igt_vc4 is we have itDaniel Vetter
Unbreaks compilation fail. Also appease gcc in gem_exec_basic because. Cc: Eric Anholt <eric@anholt.net> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2016-02-08igt/vc4_wait_bo: Add tests with rendering performed.Eric Anholt
These caught an unexpected bug with clear colors (we'd get the last executed clear's color in our new BO), while failing to catch the bug I'd been hoping to find all along. Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt/vc4_create_bo: Test various paths in BO creation.Eric Anholt
create-bo-0 fails on the current kernel, and it's something I want to fix. v2: Use do_ioctl_err(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt: Add a helper function for creating VC4 BOs.Eric Anholt
v2: Use do_ioctl(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt: Add a helper function for mapping VC4 BOs.Eric Anholt
v2: Use do_ioctl(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt: Add a helper function for getting a VC4 BO that's been drawn to.Eric Anholt
v2: Use do_ioctl(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt/vc4_wait_bo: Add a test for VC4's wait-for-BO ioctl.Eric Anholt
The pad subtest fails currently. v2: Use do_ioctl() and do_ioctl_err(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt/vc4_wait_seqno: Add a test for VC4's wait-for-seqno ioctl.Eric Anholt
v2: Use do_ioctl_err(). Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08igt: Add support for DRIVER_VC4 flags on tests.Eric Anholt
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08configure.ac: Test for libdrm_vc4 and build vc4 tests based on it.Eric Anholt
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Daniel Stone <daniels@collabora.com>
2016-02-08list-workarounds: Fix python 2 print statementDamien Lespiau
That script is a python 3 script, so we can't use the python 2 print statement, it's a function now. I missed it in the review because reviewing a diff without additional context gives you a partial story. Cc: Sameer Kibey <sameer.kibey@intel.com> Cc: Dylan Baker <baker.dylan.c@gmail.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
2016-02-05list-workarounds: Extend the script to MesaKibey, Sameer
Updated the list-workarounds script so that it can parse Mesa directory if provided. Moved the common code to a separate function to allow reuse for both kernel and mesa. The new command line is: Usage: list-workarounds [options] path-to-kernel -k path-to-kernel -m path-to-mesa The legacy usage is retained to avoid breaking backwards compatibility. New parameters -k and -m are added for the new behavior. Either kernel or mesa or both paths can be specified. If path-to-mesa is invalid, error is reported. Signed-off-by: Sameer Kibey <sameer.kibey@intel.com> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com> Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
2016-02-05igt/gem_workarounds: Convert to real GPU hang injectionChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-05igt/gem_exec_alignment: Fix off-by-one in buffer objectsChris Wilson
When reducing the buffer count to fit into the aperture whilst aligned, remember to adjust the pointer so that the batch is the last object! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-05igt/gem_exec_alignment: Mark batch buffer as also requiring 48BChris Wilson
If we completely fill the lower 4G of address space with our alignment objects, then we also need to mark the batch as requiring high-address. Though the kernel should be reordering in this case... Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-05lib: Silence a common debug message when creating a contextChris Wilson
In context tests, we may create thousands of contexts, the noise from each requirement passing drowning out the real information. Let's only do the requirement test (to detect if contexts are meant to be supported or plain broken) only on the error path. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-05igt/gem_ctx_thrash: Rewrite to avoid extraneous allocationsChris Wilson
The goal of the test is to exercise what happens when we fill the Global GTT with the contexts. To that end, we only need to allocate 2/4GiB of context objects, and can forgo filling each context with buffers. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94005 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_userptr_blits: Limit amount of mlocked surfacesChris Wilson
When testing surface eviction we don't need that many surfaces as we mlock surplus memory. Reducing the number of surfaces speeds up the test and prevents a couple of integer overflow bugs. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=94004 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_reset_stats: Convert from stop-rings to real hang injectionChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_ctx_exec: Convert from stop-rings to a real GPU hang/resetChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04tests/drv_hangman: Convert to using central list of enginesChris Wilson
Rather than encoding our own list of engines, use the common one for greater coverage. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/drv_hangman: Make the batchbuffer check more robustChris Wilson
All the external viewer expects of the GPU error capture is to extract the exact batch that triggered the hang. Everything else is internal detail to aide in post-mortem debugging of the kernel driver (i.e. subject to change) and not of the userspace portion (under control of the test). Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/drv_hangman: Inject a true hangChris Wilson
Wean drv_hangman off the atrocious stop_rings and use a real GPU hang instead. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_ringfill: Add exercising the default-ring to basic testingChris Wilson
ringfill generates a few very common errors when submitting requests, and historically these have been where we have had many implementation bugs, repeated over and over again. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_streaming_writes: Set bb start alignment to 64b for IronlakeChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-02-04igt/gem_busy: Refactor to use gem_require_ring()Chris Wilson
Now that gem_require_ring() does the right thing with BSD1/BSD2 we can use it to our advantage here. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2016-01-29tools/intel_residency: use setitimer instead of {,u}alarmPaulo Zanoni
It seems that Android doesn't have ualarm(). Let's use setitimer() instead. The tool still won't compile on Android due to igt_fb requiring Cairo, but we're supposed to solve this in another patch since our igt_fb calls don't actually require Cairo. Reported-by: Derek Morton <derek.j.morton@intel.com> Tested-by: Derek Morton <derek.j.morton@intel.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29tests/pm_rpm: find an appropriate CRTC instead of hardcoding CRTC 0Paulo Zanoni
BSW does not allow CRTC 0 to be used on every connector, so we need to write code to actually find a suitable CRTC. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93124 Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29tests/pm_rpm: remove POWER_DIR definitionPaulo Zanoni
Unused ever since we moved some code from pm_rpm.c to lib/. This is currently defined inside igt_aux.c. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29tests/igt_fb: rename igt_get_all_formats to igt_get_all_cairo_formatsPaulo Zanoni
I recently had this discussion with Daniel where I didn't want to use igt_drm_format_to_bpp() because it uses the format_desc array, and igt_fb currently assumes that all the format_desc formats have a matching valid Cairo format, so I wouldn't be able to easily add formats such as ARGB2101010. The function that has the assumption mentioned above is igt_get_all_formats: its current users call igt_get_all_formats, and then call cairo-dependent functions, such as igt_get_cairo_ctx on the returned formats. In order to document the current behavior and prevent any problems in case we start adding new formats without matching Cairo versions to format_desc, rename igt_get_all_formats to igt_get_all_cairo_formats and make it explicitly check for CAIRO_FORMAT_INVALID. Requested-by: Daniel Vetter <daniel.vetter@ffwll.ch> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29lib/igt_fb: fix igt_get_all_formats documentationPaulo Zanoni
We give the callers a const pointer to a static variable that we reuse between multiple calls: they're not supposed to free it, and they don't free it today. Fix the documentation and leave the still reachable pointer instead of reworking the function and its callers. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29lib/igt_draw: use igt_drm_format_to_bpp()Paulo Zanoni
Don't reimplement the function. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29kms_frontbuffer_tracking: standardize the used FB sizesPaulo Zanoni
We want to make sure that both tiled and untiled buffers have the same size for the same width/height/format. This will allow better control over the failure paths exercised by our tests: when we try to flip from tiled to untiled, we'll be sure that we won't execute the error path that checks for buffer sizes. v2: Use the new igt_calc_fb_size() instead of implementing our own size calculation (Daniel). v3: We can now use igt_drm_format_to_bpp() (Daniel). Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2016-01-29kms_frontbuffer_tracking: use igt_drm_format_to_bpp()Paulo Zanoni
The only format from fb_get_bpp() not supported by igt_drm_format_to_bpp() is ARGB2101010, but we don't really use it in kms_frontbuffer_tracking, so we can do the switch. Adding ARGB2101010 to igt_fb won't be that simple since there's no equivalent Cairo format, and igt_fb users assume that all formats known by igt_fb have equivalent Cairo formats. Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>