4139 Commits

Author SHA1 Message Date
Daniel Vetter
db4f83ca5d lib/kms+tests: Use cached connector state
Speeds up testcases except for those where we want to exercise the
probing itself. The only exceptions left where we do a full probe are

- pm_rpm: We use it to make sure the kernel doesn't get things wrong
  with power domains, so we really want to exercise the full probe
  paths. And there the only place really is the specific validation
  done with the data gathered by get_drm_info.

- kmstest_force_ functions: Newer kernels should be better at
  re-probing state when the force sysfs fields change, but better safe
  than sorry.

v2: I also consolidated the start_n_modes and start_connectors while
at it - move one of the fixup hunks to this patch that accidentally
got misplaced (Thomas).

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-12-04 10:49:11 +01:00
Daniel Vetter
cdb398b5b9 tests/kms_force_connector: Fixes
The edid we inject stayed the same, but the kernel started to list
more modes for it. No idea whether that's the right thing here since
I'm not really an EDID expert. But then again the testcase wants to
check that the injection works, not validate the kernel's parser.

v2: Only check the preferred mode for more future-proofing (Thomas).

v3: Clarify commit message (Jani).

Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-12-04 10:48:05 +01:00
Thomas Wood
02cdd9899d tests: add exit value constants for shell script tests
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-03 11:36:02 +00:00
Thomas Wood
8a58734c11 tests: replace drm_open_any in gem_create and gem_stolen
drm_open_any has been replaced by drm_open_driver.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-03 11:12:38 +00:00
Ankitprasad Sharma
67d32c210d igt/gem_create: Test to validate parameters for GEM_CREATE ioctl
This test validates the two parameters (size and flags) GEM_CREATE ioctl.

v2: Added IGT_TEST_DESCRIPTION (Thomas Wood)

v3: Removed use of hard coded values, updated comments (Tvrtko)

v4: Removed over-use of macros, updated with multiples of PAGE_SIZE (Tvrtko)

Signed-off-by: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-03 10:40:49 +00:00
Ankitprasad Sharma
48c945322b igt/gem_pread: Support to verify pread/pwrite for non-shmem backed obj
This patch adds support to verify pread/pwrite for non-shmem backed
objects. It also shows the pread/pwrite speed.
It also tests speeds for pread with and without user side page faults

v2: Fixed Rebase conflicts (Ankit)

v3: Precalculating values to avoid redundant function calls (Dave)
Replaced igt_subtest by igt_subtest_f, added asserts for mmap, corrected
indentation (Tvrtko)

v4: Updated data types to avoid redundant type conversions (Tvrtko)
Corrected pagefault-pread time calculation (Ankit)

Signed-off-by: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-03 10:40:40 +00:00
Ankitprasad Sharma
70c3be83a0 igt/gem_stolen: Verifying extended gem_create ioctl
This patch adds the testcases for verifying the new extended
gem_create ioctl. By means of this extended ioctl, memory
placement of the GEM object can be specified, i.e. either
shmem or stolen memory.
These testcases include functional tests and interface tests for
testing the gem_create ioctl call for stolen memory placement

v2: Testing pread/pwrite functionality for stolen backed objects,
added local struct for extended gem_create and gem_get_aperture,
until headers catch up (Chris)

v3: Removed get_aperture related functions, extended gem_pread
to compare speeds for user pages with and without page faults,
unexposed local_gem_create struct, changed gem_create_stolen
usage (Chris)

v4: Splitting patch to remove changes from gem_pread/gem_pwrite
to another patch (Ankit)

v5: Fixed Rebase conflicts (Ankit)
    Added IGT_TEST_DESCRIPTION (Thomas Wood)

v6: Added __gem_create_stolen for user to handle error, updated
gem_create_stolen to align with gem_create function, corrected
fill_purge test (out of bound access), added testcase to validate
allocating of more than 32 bit sized buffers (Tvrtko)

v7: Removed unused variables, Corrected comments & formatting (Tvrtko)

Signed-off-by: Ankitprasad Sharma <ankitprasad.r.sharma@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-03 10:40:29 +00:00
Thomas Wood
2db78a4995 Update version to 1.13 and add the release date
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 16:46:39 +00:00
Thomas Wood
17c6b5caf3 NEWS: Updates
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 16:45:42 +00:00
Thomas Wood
498fb6205e docs: remove references to tests/NAMING-CONVENTION
The tests/NAMING-CONVENTION file has been removed and its contents is
now included in the API documentation.

Reported-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 16:42:16 +00:00
Thomas Wood
97bf3f9a55 tests/core_setmaster_vs_auth: add test description macro
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 16:17:18 +00:00
Thomas Wood
66dc90ed65 tests/core_setmaster_vs_auth: use igt_simple_main
This test has no subtests, so should use igt_simple_main.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 15:02:52 +00:00
Thomas Wood
b3ff112326 docs: exclude gpgpu_fill.h
gpgpu_fill.h is only used internally by the library.

Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 15:02:52 +00:00
Thomas Wood
0874c770eb docs: document intel_pipe_crc_source enum values
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 15:02:52 +00:00
Thomas Wood
683316cb88 docs: add missing documentation for drm open functions
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 15:02:52 +00:00
Thomas Wood
0394844a47 tests/gem_request_retire: add test description
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-12-02 15:02:52 +00:00
Jani Nikula
72b6bec370 tests: fix ddx_intel_after_fbdev to use intel_reg
intel_reg_dumper is gone, replaced by 'intel_reg dump'.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-12-02 13:14:03 +02:00
Jani Nikula
4fe60a6e1c tools: fix intel_gpu_abrt to use intel_reg
intel_reg_dumper is gone, replaced by 'intel_reg dump'.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-12-02 13:14:03 +02:00
Jani Nikula
96d3658d0b scripts: remove display_debug.sh as obsolete
The script uses the obsoleted and removed intel_reg_read tool. Rather
than mechanically fix this to use intel_reg, observe that the hardcoded
register offsets are platform specific. A quick glance suggests they are
for PCH split platforms with FDI, and as such useful only on a minority
of platforms. Remove the script as obsolete.

If the need for such a script arises, it should be based around using
'intel_reg dump' with display-only register spec files.

Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2015-12-02 13:14:03 +02:00
Daniel Vetter
5830a7a04b tests: Add core_setmaster_vs_auth.c
Embarrasingly I noticed that I need to git add the file when resolving
the conflict and manually applying my patch. But then I added the
wrong file ... Reported by Thomas Wood.

Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-12-01 18:33:17 +01:00
Daniel Vetter
80546d4576 tests/pm_rpm: Don't compare edid blob IDs
The kernel is free to allocate blob ids however it wants to. And also
to reallocate them whenever it sees fit. The only thing we are allowed
to compare is the length and the actual date.

Removing this bogus check makes drm-resources-equal on my snb.

Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=90546
Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-12-01 17:56:07 +01:00
Daniel Vetter
8133295d02 tests: add core_setmaster_vs_auth
Tests that master state isn't leaked to new masters by checking
that auth magics for the old master don't work any more.

Based upon a simple test program provided by Thomas.

v2: Use comment Thomas suggested on intel-gfx.

Cc: Thomas Hellstrom <thellstrom@vmware.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2015-12-01 17:44:32 +01:00
Daniel Vetter
92e83cb379 tests: Rename drm_auth to core_auth
It really is a core drm testcase and not a libdrm testcase. While at it
also make it generic, since it is.

Cc: Daniel Stone <daniels@collabora.com>
Acked-by: Daniel Stone <daniels@collabora.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-12-01 17:31:27 +01:00
Chris Wilson
3b75839b79 lib: gem_set_caching() use drmIoctl() rather than ioctl()
gem_set_caching() tries to be clever and detect when the ioctl isn't
supported (thereby skipping the test). However, it forget that we may be
acting on active objects and be subject to the usual EAGAIN/EINTR
errors. We can use the drmIoctl() to wrap the raw ioctl() in order to
get the automatic restart on the interrupted syscall.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-12-01 13:35:33 +00:00
Marius Vlad
4cfcea4056 tests/pm_rpm tests for set_caching and set_tiling ioctl(s)
v4: re-bind the gem objects each time before calling
disable_all_screens_and_wait().

v3: Use smaller sizes when allocating gem objects for caching tests.

v2: use mmap to gtt instead off cpu and various style-changes.

Signed-off-by: Marius Vlad <marius.c.vlad@intel.com>
Reviewed-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
2015-11-27 20:29:19 +02:00
Paulo Zanoni
d2a17f4bc4 kms_frontbuffer_tracking: add tilingchange subtest
During the review of a recent FBC patch, Ville pointed a problem that
happens when we use the page flip IOCTL to switch between buffers that
have different tiling formats. This test should catch the problem
introduced by that patch - which was not merged, by the way, so the
test should be passing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
98bb8428b2 kms_frontbuffer_tracking: assert the stride changes at stridechange()
We use igt_create_fb(), which decides the stride by itself: there's no
guarantee that making a buffer 512 pixels bigger is going to make its
stride change.

I had a fix for this problem that was supposed to be applied before
this patch, but due to a rework request I'm changing the order of the
patches, so we should expect to hit this assertion for now. At least
the root cause of the problem is clear now.

v2: Update the commit message due to the patch order changing.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
f23ea58f1f kms_frontbuffer_tracking: expand badstride and stridechange
Make those subtests try to change the stride using multiple APIs so we
can catch errors that affect full modesets, fast modesets and page
flips.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
340599c986 kms_frontbuffer_tracking: move flip_type to struct test_mode
Handle it just like we handle t->format. IMHO, it's better.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
b4c58857e5 kms_frontbuffer_tracking: do page flips using the planes API
Add a new FLIP_PLANES enum so we can do "page flips" using it too. The
goal is to exercise the fast modeset paths on the Kernel.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
d63413771f lib/igt_fb: also pass the stride to igt_create_fb_with_bo_size()
If the caller is going to specify a custom size, it's likely that he
will also specify a custom stride. The automatic stride picked by
create_bo_for_fb() is too huge for tiled buffers, so if the caller
wants smaller buffers, then he'll need a smaller stride too, otherwise
the Kernel will reject the addfb IOCTL due to stride * height being
bigger than the size.

I want to make tests/kms_frontbuffer_tracking use
igt_create_fb_with_bo_size() so I can provide smaller buffers that
will fit into the CFB. I'm also planning to make all frontbuffers with
the same width/height/format have the same stride and size regardless
of tiling method so I can exercise specific code paths.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
1c68a71acc lib/igt_fb: fix open-coded ALIGN()
Maybe this will help someone's life in the future.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
cb7dd5d401 lib/igt_fb: fix igt_create_fb_with_bo_size() documentation
If we pass zero as the bo_size we won't get the minimum needed size,
we'll just get a size that works. The size is decided by
create_bo_for_fb(). The selected size is really not minimal for tiled
objects.

We'll implement support for minimum size later.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Paulo Zanoni
5cfc4e7967 lib/igt_fb: fix fb->size when provided by the user
I want to have a little more control over the size of the buffers in
kms_frontbuffer_tracking, so I decided to start calling
igt_create_fb_with_bo_size() instead of igt_create_fb(). The problem
is that create_bo_for_fb() returns its own calculated size as size_ret
instead of the actual used size.

So we fix this by returning the actual size, the one used in
gem_create instead of the calculated size that's not used anywhere.

Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
2015-11-27 09:57:35 -02:00
Chris Wilson
d44100ed23 benchmarks/gem_exec_ctx: Measure switching between fds
Switching between fds also involves a context switch, include it amongst
the measurements.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-27 10:03:56 +00:00
Chris Wilson
26507f3e21 igt/gem_cs_prefetch: Convert to intel_require_memory()
Replace the open-coded memory check with intel_require_memory.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-27 10:03:55 +00:00
Chris Wilson
e10ba6b51c igt/drm_read: Clear O_NONBLOCK between tests
Ensure that O_NONBLOCK isn't accidentally set when we want a nonblocking
file descroptor.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-25 14:33:49 +00:00
Mika Kuoppala
32329b2e7d tests/drm_import_export: Always loop with mutex held
We assume that lock is held on start of the loop scope.
Some paths continuing inside loop didn't adhere to this
assumption, causing segfault on unlocking an already
unlocked mutex. Fix this by re-aquiring lock always.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93013
Cc: Michał Winiarski <michal.winiarski@intel.com>
Cc: Thomas Wood <thomas.wood@intel.com>
Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
2015-11-25 15:52:18 +02:00
Chris Wilson
3b1a55874d igt/drm_read: Check handling of pagefault on destination buffer
In theory, this should force i915_gem_fault() when we first use the
buffer (and not at mmap time) and so prevent a __copy_to_user_inatomic()
from writting to the buffer.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-25 11:13:25 +00:00
Joonas Lahtinen
d84e62478b lib/igt_core: Prefer CLOCK_MONOTONIC_RAW
CLOCK_MONOTONIC_RAW is not affected by NTP, so it should be THE clock
used for timing execution of tests.

When fetching either the starting or ending time of a test, show the
time as -1.000s.

v6:
- Whitespace corrections (Chris)

v5:
- Do not use C99 style comments (Chris)

v4:
- Introduce time_valid macro (Chris)
- Reduce amount of boilerplate code for calculating elapsed time

v3:
- Do not exit directly from handler (Chris)
- Show elapsed time as -1 if it is not calculable

v2:
- Cache the used clock (Chris)
- Do not change the clock during execution
- Spit out and error if monotonic time can not be read

Cc: Thomas Wood <thomas.wood@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-24 16:36:54 +00:00
Wayne Boyer
4bc68b1baa lib/kbl: Add Kabylake GT4 PCI IDs
Add the Kabylake GT4 PCI IDs as defined in this kernel patch.

    commit 8b10c0cf21ec84618d4bf02c73c0543500ece68d
    Author: Deepak S <deepak.s@intel.com>
    Date:   Wed Oct 28 12:21:12 2015 -0700
        drm/i915/kbl: Add Kabylake GT4 PCI ID

Signed-off-by: Wayne Boyer <wayne.boyer@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-24 16:36:54 +00:00
Wayne Boyer
526a63ec6b lib/kbl: move KBL check from IS_SKYLAKE() to IS_GEN9()
Remove the KBL check from IS_SKYLAKE() following the kernel definition.
Then, add the KBL check to IS_GEN9().

The idea is to avoid confusion.  On the kernel side, the mix of SKY
and KBL was nacked so the platforms are split.

Signed-off-by: Wayne Boyer <wayne.boyer@intel.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-24 16:36:54 +00:00
Matt Turner
b088e30575 tools/aubdump: Link with -ldl.
aubdump.c uses dlsym(), so it needs to link with -ldl. Otherwise:

/bin/sh: symbol lookup error: /usr/lib64/intel_aubdump.so: undefined symbol: dlsym

Signed-off-by: Matt Turner <mattst88@gmail.com>
Signed-off-by: Thomas Wood <thomas.wood@intel.com>
2015-11-24 16:36:54 +00:00
Tvrtko Ursulin
dcdf21beb8 igt/gem_request_retire: Provoke context destruction with active VMAs
Test designed to trigger the
WARN_ON(!list_empty(&ppgtt->base.active_list))
in i915_gem_context_clean.

v2:
Simplify execbuf building and the test itself. Cleanup code. (Chris Wilson)

v3:
Removed asserts done by the helpers already. (Chris Wilson)

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
2015-11-24 12:58:17 +00:00
Chris Wilson
b68a6428db benchmarks: Add a set-domain benchmark
Benchmark the overhead of changing from GTT to CPU domains and vice
versa. Effectively this measures the cost of a clflush, and how well the
driver can avoid them.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-22 20:54:04 +00:00
Chris Wilson
59f076a089 drmtest: Use standard gem_execbuf() calls in gem_quiescent_gpu()
Now that we have better ioctl wrappers, let's make us of them. The
advantage should be in improved error reporting in case
gem_quiescent_gpu() ever fails.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-20 11:25:00 +00:00
Mika Kuoppala
b718f50f92 lib: Add Skylake Intel Graphics GT4 PCI IDs
Add Skylake Intel Graphics GT4 PCI IDs.

Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
2015-11-19 11:31:51 +02:00
Chris Wilson
8a8717eee3 overlay: Show power consumption without i915-pmu
The power metter was not showing up due to an erroneous check for a
failure to open the i915 perf interface.

Reported-by: Marius Vlad <marius.c.vlad@intel.com>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
2015-11-18 12:53:04 +00:00
Vivek Kasireddy
938b9306be igt/kms_rotation_crc: Add a new subtest to exhaustively test for fence leaks (v3)
In this subtest, as a first step, MAX_FENCES+1 number of framebuffers are
created backed up by objects that have multiple GGTT views (normal and
rotated). Next, we have the i915 driver instantiate a normal view followed
by a rotated view. We continue doing the above MAX_FENCES + 1 times.

v2:
- Add a igt_require() to check if there is enough GTT space left for
  MAX_FENCES+1 framebuffers. (Tvrtko)
- Make data2 local to test_plane_rotation_exhaust_fences(). (Tvrtko)
- If there is a failure, deallocate all the previously allocated
  framebuffers before asserting.

v3: Close the gem handle if set_tiling or addfb fails. (Tvrtko)

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: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2015-11-17 14:34:51 +00:00
Ville Syrjälä
92a803ffb0 tests/kms_3d: Use XRGB8888 instead of ARGB8888
We don't allow ARGB8888 anymore on primary planes on most platforms,
so use XRGB8888 instead as the format.

Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2015-11-16 15:42:26 +02:00