Age | Commit message (Collapse) | Author |
|
Couple of tests are using either determining submission method, or
pretty printing. Let's move those to helpers in lib.
v2: s/igt_show/gem_show
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Katarzyna Dec <katarzyna.dec@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Katarzyna Dec <katarzyna.dec@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
For per-engine checks, check the engine actually exists (important for
bsd aliasing).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=101905
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
This limitation does not exist in latest kernel. It was removed by this patch-
commit f7978a0c581a8a840a28306f8da43e06e7fef3bf
v2: Added commit id that removes the limitation(Chris Wilson)
V3: Generic way to find if kernel supports this instead of hardcoding gens(Chris Wilson)
v4: Optimize the if block (Daniele)
v5: Use the same context instead of creating a dummy (Chris Wilson)
v6: Changed comment structure and removed extra brackets, local var (Chris Wilson)
v7: Removed some more extra brackets
Cc: Michel Thierry <michel.thierry@intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Vinay Belgaumkar <vinay.belgaumkar@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The clone() system call has difficulty to make progress if interrupted
frequently by the signal helper process. At least on an APL, like in the
Bugzilla ticket below, this can introduce minutes of overhead to a
single system() call (leading to a global CI timeout). To get rid of the
overhead suspend the signal helper process for the duration of the
system() call, which is provided already by igt_system().
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103160
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
The clone() system call with a larger executable (like /bin/sh) may have
difficulty to make progress on some platforms if interrupted frequently.
So suspend the signal helper process for the duration of the syscall.
This is needed to solve an actual problem by the next patch.
v2:
- Clarify/fix code comments. (Chris)
- Update igt_system_quiet() as well accordingly.
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> (v1)
|
|
The first active pipe might not be pipe A, and we shouldn't rely on
fbcon for a working crtc. Use igt_kms to set up something basic, and
use the kmstest helper to get an event from the correct pipe.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
When we suspend, we do not want to be interrupted by a pending reset, or
failure of that reset. After the resume, the errors should be noted as
usual.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
|
|
If the connected output is disabled before this test is run, then the test
will fail because actual_brightness stays at 0 instead of the value
of the desired brightness. Fix this by reading intel_backlight/device
for the output name, and enable that output at start of this test.
Changes since v1:
- Enable the connected output, instead of enabling all outputs.
Changes since v2:
- Set a dummy fb, just in case.
Changes since v3:
- Use igt_output_get_plane_type, not get_plane.
Sample failure:
IGT-Version: 1.20-g01c550a27986 (x86_64) (Linux: 4.14.0-rc3-fbconhax+ x86_64)
(pm_backlight:1203) CRITICAL: Test assertion failure function test_and_verify, file pm_backlight.c:111:
(pm_backlight:1203) CRITICAL: Failed assertion: ({ typeof(0) _a = (0); typeof(val - tolerance) _b = (val - tolerance); _a > _b ? _a : _b; }) <= result
(pm_backlight:1203) CRITICAL: error: 91200 > 0
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
|
|
fails, v3.
Make sure read_all_entries has all outputs possible enabled, but also
add a test that runs with all outputs disabled.
This will maximize coverage of debugfs reading, and allows the test not
to be dependent on fbcon for setup.
Changes since v1:
- Put framebuffers on all primary planes, to get a crc from i915_sink_src_eDP1.
Changes since v2:
- Use igt_output_get_plane_type, not igt_output_get_plane.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
[mlankhorst: Add comment suggested by ickle.]
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Include igt_syncobj.c in libigt so that tests/syncobj_basic actually
builds, and let's also build tests/syncobj_wait.
v2: Also update lib_headers (Petri)
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
v2: Hook the syncobj array to the execbuf!
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
|
Most of the gem_bad_length code is compiled out because creating
a zero-length object is not allowed anymore by i915 and thus it is
not possible to execute it. The remaining part checks that creation of
a zero-length object does indeed fail, which is also checked by
gem_create/create-invalid-size.
The only difference between the 2 tests is that gem_bad_length checks
specifically for EINVAL while create-invalid-size only looks for
failure, so after adding the EINVAL check to create-invalid-size it is
safe to drop gem_bad_length.
v2 (Joonas):
- Clarify header line, split the patch, fix Meson build and add Cc:
Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Replace the local recursive batch execbuf with the equivalent
igt_spin_t.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
Closing the sw_sync timeline now signals any remaining fences upon it;
but test_wait_snapshot requires the fence to continue to be busy so that
the __syncobj_wait() will return with -ETIME.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103188
References: ea4d5a270b57 ("dma-buf/sw_sync: force signal all unsignaled fences on dying timeline")
Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
Tested-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
|
|
Closing the sw_sync timeline now signals any remaining fences upon it;
but test_wait_interrupted requires the fence to be busy for the
__syncobj_wait() not to immediately return with -ETIME (and so be
interrupted instead).
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103187
References: ea4d5a270b57 ("dma-buf/sw_sync: force signal all unsignaled fences on dying timeline")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Cc: Dave Airlie <airlied@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
Remove the bare igt_ioctl(SYNCOBJ_WAIT) in favour of __syncobj_wait()
for tidier error reporting.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Jason Ekstrand <jason@jlekstrand.net>
Cc: Dave Airlie <airlied@redhat.com>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
v2:
* Use 48-bit rather than 64-bit (Ken)
* Use 'addr_bits' rather than 'use_64bit'
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
|
|
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
This adds both trivial error-checking tests as well as more complex
tests which actually test whether or not waits do what they're supposed
to do. They only currently work on i915 but it should be simple to hook
them up for other drivers by simply implementing the little function
pointer hook provided at the top for triggering a syncobj.
v2:
- Actually add the reset tests.
v3:
- Only do one execbuf for trigger
- Use do_ioctl and do_ioctl_err
- Better check for syncobj support
- Add local_/LOCAL_ defines of things
- Use a timer instead of a pthread
v4:
- Use ioctl wrappers
- Use VGEM instead of i915
- Combine a bunch of the simple tests into one function
v5:
- Combinatorially generate basic tests
- Use sw_sync instead of using vgem directly
- Add even more tests
v6:
- Rebase on the new SYNCOBJ_RESET API
- Add tests for SYNCOBJ_SIGNAL
v7:
- Improve the signal and reset bad pad tests
Reviewed-by: Dave Airlie <airlied@redhat.com>
[airlied: fix build]
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reviewed-by: Dave Airlie <airlied@redhat.com>
|
|
[airlied: added some initial gtk-doc for the helper library.]
Reviewed-by: Dave Airlie <airlied@redhat.com>
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
|
|
10bpc formats aren't supported on all platforms, so skip the test when
we can't create the framebuffer.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Skip when a test can't find a plane by the index. Previously
in commit 5426dc0a889a ("lib/kms: Skip rather than fail when
a suitable plane can't be found") we added similar handling for
tests trying to find a non-existent plane by type. Saves from
every test with hardcoded plane numbers having to check the
number of planes available.
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
At the moment, the verify tests use an extremely brutal write-read of
every dword, degrading performance to UC. If we break those up into
cachelines, we can do a wcb write/read at a time instead, roughly 8x
faster. We lose the accuracy of the forced wcb flushes around every dword,
but we are retaining the overall behaviour of checking reads following
writes instead. To compensate, we do check that a single dword write/read
before using wcb aligned accesses.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
Not a test that inspects strict ordering of execution, but one that makes
sure that we can survive a small bit of stress. From each cpu we submit a
small number of batches at different priorities to different engines,
with the expectation that they pass through unscathed.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
To complete the picture also test a new fd with its implicit default
context. Now we have a test for a longstanding fd, new client, new
context.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
v2: Actually exercise the new context
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
The workarounds are only valid whilst the GPU is active. To be sure we
are reading the registers in the right state, issue the reads from the GPU.
v2: Show ignored write-only failures as debug.
v3: PAGE_ALIGN.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
Signed-off-by: Petri Latvala <petri.latvala@intel.com>
Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
|
|
The I915_OA_FORMAT_C4_B8 format has different offset on Haswell &
Gen8. Let's split the format lists so we don't mix them.
Reported-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Using the same timestamp frequency as Skylake/Kabylake.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Some of our tests measure that the OA unit produces reports at
expected time intervals (as configured through the PERF_OPEN
ioctl). It turns out the power management plays a role in the decision
of the OA unit to write reports to memory. Under normal circumstances
we don't really mind if the unit misses one report here or there, but
for our tests it makes pretty difficult to verify whether we've made a
mistake in the configuration.
To work around this, let's prevent power management to kick in by
holding /dev/cpu_dma_latency opened for the following tests :
- enable-disable
- blocking
- polling
- buffer-fill
- oa-exponents
Many thanks to Chris Wilson for suggesting this!
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Blocking & polling tests define an amount of time to spend in the test
and then estimate the number of syscalls that should successfully
return. The problem is that while running the test we might spend
slightly more time than initiallly planned. This change estimates the
number of syscalls based on time spent after the fact.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Filling rate of the buffer must discard context switch reports as they
do not depend upon the periodicity, instead they're a factor on the
amount of different applications concurrently running on the system.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Estimation of the amount of reports can only refer to periodic ones,
as context switch reports completely depend on what happens on the
system. Also generate some load to prevent clock frequency changes to
impact our measurement.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
New issues that were discovered while making the tests work on Gen8+ :
- we need to measure timings between periodic reports and discard all
other kind of reports
- it seems periodicity of the reports can be affected outside of RC6
(frequency change), we can detect this by looking at the amount of
clock cycles per timestamp deltas
v2: Drop some unused variables (Matthew)
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Experience shows that most of the issues we face with periodicity of
the reports produced by the OA unit are related to power management,
not frequency.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Make it clear that we're using a 16Mb buffer.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
Signed-off-by: Robert Bragg <robert@sixbynine.org>
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
When debugging unstable tests on new platforms we currently we don't
cleanup everything well in between different tests. Since only a
single OA stream fd can be opened at a time, having the stream_fd as a
global variable helps us cleanup the state between tests.
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
|
|
When the output is unset, but the fb is still valid we still have
to perform a disable on the crtc.
This ixes the following crash in kms_color (although previous commit
does as well):
(gdb) bt
0 igt_output_get_mode (output=output@entry=0x0) at igt_kms.c:2828
1 0x000055555556f0d5 in igt_primary_plane_commit_legacy(..) at igt_kms.c:2341
2 igt_plane_commit (fail_on_error=true, s=COMMIT_LEGACY, ..) at igt_kms.c:2394
3 igt_pipe_commit (fail_on_error=true, s=COMMIT_LEGACY, ..) at igt_kms.c:2435
4 do_display_commit (display=0x7fffffffe5d8, s=COMMIT_LEGACY, ..) at igt_kms.c:2667
5 0x000055555556f38e in igt_display_commit2 (display=<optimized out>, s=<optimized out>) at igt_kms.c:2777
6 0x000055555555ef84 in run_tests_for_pipe (data=.., p=PIPE_B) at kms_color.c:1053
7 0x000055555555f610 in __real_main1189 () at kms_color.c:1206
8 0x000055555555cbc7 in main (argc=<optimized out>, argv=<optimized out>) at kms_color.c:1189
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Valgrind is slightly unhappy when we leave the fb set:
==1804== Invalid read of size 4
==1804== at 0x122F83: igt_plane_get_fb_id (igt_kms.c:2074)
==1804== by 0x122F83: igt_primary_plane_commit_legacy
(igt_kms.c:2339)
==1804== by 0x122F83: igt_plane_commit (igt_kms.c:2394)
==1804== by 0x122F83: igt_pipe_commit (igt_kms.c:2435)
==1804== by 0x122F83: do_display_commit (igt_kms.c:2667)
==1804== by 0x12338D: igt_display_commit2 (igt_kms.c:2777)
==1804== by 0x112F83: run_tests_for_pipe (kms_color.c:1053)
==1804== by 0x11360F: __real_main1189 (kms_color.c:1206)
==1804== by 0x110BC6: main (kms_color.c:1189)
==1804== Address 0x1ffeffeb20 is on thread 1's stack
==1804== 160 bytes below stack pointer
Add the missing calls to igt_plane_set_fb, and fix the crash.
Changes since v1:
- Fix compilation!
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Mika Kahola <mika.kahola@intel.com>
|
|
Some distros (such as Gentoo) are removing the include of
sys/sysmacros.h from sys/types.h. Explicitly include sysmacros.h in
files where we use the minor() and major() functions.
Signed-off-by: James Ausmus <james.ausmus@intel.com>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
We want to create very large objects, larger than the 2G limit imposed
by using ints.
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviwed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
|
|
It's got calls to rmb/wmb that end up not linking successfully.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Just stub out the features return value, and return an empty string.
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|
|
Signed-off-by: Eric Anholt <eric@anholt.net>
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
|