summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-10-16aux: Suspend signal helper for shell commandsImre Deak
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)
2017-10-16tests/drm_read: Change tests to not require fbconMaarten Lankhorst
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>
2017-10-12igt/gem_eio: Check hang/eio recovery during suspendChris Wilson
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>
2017-10-12tests/pm_backlight: Enable connected output to allow tests to succeed, v4.Maarten Lankhorst
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>
2017-10-12tests/debugfs_test: Try to light all outputs to increase chances of finding ↵Maarten Lankhorst
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>
2017-10-12meson: Make syncobj tests buildVille Syrjälä
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>
2017-10-12benchmark/gem_busy: Compare polling with syncobj_waitChris Wilson
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>
2017-10-12tests: Drop gem_bad_length as redundantDaniele Ceraolo Spurio
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>
2017-10-12igt/drv_hangman: Convert from local recursive batch to igt_spin_tChris Wilson
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>
2017-10-11igt/syncobj_wait: Don't close the timeline early in wait_snapshotJason Ekstrand
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>
2017-10-11igt/syncobj_wait: Close the sw_sync timeline after the testChris Wilson
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>
2017-10-11igt/syncobj_wait: Replace open-coded calls to __syncobj_wait()Chris Wilson
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>
2017-10-10intel_aubdump: Default to 48-bit AUBs when the gen is unknownJordan Justen
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>
2017-10-10syncobj: Add a test for SYNCOBJ_CREATE_SIGNALEDJason Ekstrand
Reviewed-by: Dave Airlie <airlied@redhat.com> Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
2017-10-10tests/syncobj: Add some wait and reset tests (v7)Jason Ekstrand
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>
2017-10-10tests/syncobj: Convert the basic test over to the helpersJason Ekstrand
Signed-off-by: Jason Ekstrand <jason@jlekstrand.net> Reviewed-by: Dave Airlie <airlied@redhat.com>
2017-10-10lib: Add some syncobj helpers (v2)Jason Ekstrand
[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>
2017-10-09tests/kms_draw_crc: Skip tests for unsupported formatsVille Syrjälä
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>
2017-10-09lib/igt_kms: Don't assert on non-existent planeVille Syrjälä
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>
2017-10-09igt/gem_fence_thrash: Use streaming reads for verifyChris Wilson
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>
2017-10-05igt/gem_exec_scheduler: Add small priority sorting smoketestChris Wilson
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>
2017-10-05igt/gem_workarounds: Add hibernation coverageChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2017-10-05igt/gem_workarounds: Reduce manual list to combinatorial loopsChris Wilson
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2017-10-05igt/gem_workarounds: Also test new fd (implicit default context)Chris Wilson
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>
2017-10-05igt/gem_workarounds: Also exercise fresh contexts not the persistent defaultChris Wilson
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>
2017-10-04igt/gem_workarounds: Read the workaround registers from the active contextChris Wilson
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>
2017-10-04Update NEWS, bump version to 1.20.Petri Latvala
Signed-off-by: Petri Latvala <petri.latvala@intel.com> Acked-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2017-10-04tests/perf: split array of formats descriptionsLionel Landwerlin
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>
2017-10-04tests/perf: add support for CoffeelakeLionel Landwerlin
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>
2017-10-04tests/perf: prevent power management to kick in when necessaryLionel Landwerlin
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>
2017-10-04tests/perf: estimate number of blocking/polling based on time spentLionel Landwerlin
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>
2017-10-04tests/perf: make buffer-fill more reliableLionel Landwerlin
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>
2017-10-04tests/perf: make enable-disable more reliableLionel Landwerlin
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>
2017-10-04tests/perf: rework oa-exponent testLionel Landwerlin
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>
2017-10-04tests/perf: remove frequency related changesLionel Landwerlin
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>
2017-10-04tests/perf: rc6: try to guess when rc6 is disabledLionel Landwerlin
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Matthew Auld <matthew.auld@intel.com>
2017-10-04tests/perf: update max buffer size for reading reportsLionel Landwerlin
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>
2017-10-04tests/perf: add per context filtering test for gen8+Robert Bragg
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>
2017-10-04tests/perf: make stream_fd a global variableLionel Landwerlin
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>
2017-10-04lib/igt_kms: Disable crtc in legacy path when output is unsetMaarten Lankhorst
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>
2017-10-04tests/kms_color: Unset plane fb on teardown, v2.Maarten Lankhorst
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>
2017-10-04Fix compilation on some distrosAusmus, James
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>
2017-10-03lib: Fixup __gem_create() to be 64b safe.Chris Wilson
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>
2017-10-03meson: Disable the intel overlay on non-x86 builds.Eric Anholt
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>
2017-10-03meson: Fix build of igt_x86-using tests on non-x86 platforms.Eric Anholt
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>
2017-10-03Fix rlim_cur compiler warnings when building on ARM.Eric Anholt
Signed-off-by: Eric Anholt <eric@anholt.net> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2017-10-03lib: Report the error from __gem_create()Chris Wilson
We have two style of ioctl wrappers. The principle interface does error checking on behalf of the caller (to avoid having lots of repetitious code in each test), and for the few cases where the error is important for the test, we also expose a double underscore version. Fix up __gem_create() to follow this pattern and report the negative error code returned by the kernel. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2017-10-03lib: Reduce dependency on glibPetri Latvala
In commit ebd6eb69f57b ("Make igtrc configuration common, with configurable suspend/resume delay") .igtrc handling was moved to igt_core from igt_chamelium. That made everything in IGT depend on GLIB by accident. In short, igt_core.h declared a variable of type GKeyFile*, requiring glib.h. Everything that tried to #include igt_core.h required glib.h to be available, by use of GLIB_CFLAGS. This "worked" so far because CAIRO_CFLAGS contained GLIB_CFLAGS. As the variable is only used by other stuff in lib/, stuff it in its own header file to leave igt_core.h without a dependency to glib.h. Also add a couple of missing #ifdef HAVE_GLIBs around. Reported-by: Felipe De Jesus Ruiz Garcia <felipe.de.jesus.ruiz.garcia@intel.com> Signed-off-by: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2017-10-03gem_exec_schedule: Add missing #includePetri Latvala
gem_exec_schedule used sigaction() without #include <signal.h> CC: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2017-10-03kms_atomic_interruptible: Add missing #includePetri Latvala
kms_atomic_interruptible used signal() without #include <signal.h> CC: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>