summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
2019-05-09tests/kms_chamelium: Make sure we wait for each connectors' hotplug eventImre Deak
After scheduling an HPD toggle event, make sure that we wait for the hotplug event for each connector that may be sent by the driver. Depending on the scheduling there could be 1 event or as many events as connectors we scheduled an HPD toggle event on, depending on the timing. So if we don't yet see the expected connector state on a given connector try to wait for an additional hotplug event and reprobe/recheck the state. v2: - s/igt_assert(x >= y)/igt_assert_lte(y, x)/ to see the actual limits in the debugging output. (Lyude) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110534 Cc: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Cc: Lyude Paul <lyude@redhat.com> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Reviewed-By: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
2019-05-09tests/prime_vgem/basic-fence-flip: Probe display resolutionTvrtko Ursulin
Some displays might not support hardcoded 1024x768. Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109294 Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2019-05-07lib/aux: Typecast gettid() as pid_tLyude Paul
Partly, for correctness. But mostly because not typecasting properly causes the gettid() macro provided by newer glibc to be typed as pid_t (aka int), while ours is typed as long. Causing annoying warnings: [158/846] Compiling C object 'tests/59830eb@@drm_import_export@exe/drm_import_export.c.o'. In file included from ../../mnt/vol/lib/drmtest.h:39, from ../../mnt/vol/lib/igt.h:27, from ../../mnt/vol/tests/drm_import_export.c:27: ../../mnt/vol/tests/drm_import_export.c: In function ‘test_thread’: ../../mnt/vol/tests/drm_import_export.c:123:12: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 4 has type ‘__pid_t’ {aka ‘int’} [-Wformat=] 123 | igt_debug("start %ld\n", gettid()); | ^~~~~~~~~~~~~ ~~~~~~~~ | | | __pid_t {aka int} ../../mnt/vol/lib/igt_core.h:875:64: note: in definition of macro ‘igt_debug’ 875 | #define igt_debug(f...) igt_log(IGT_LOG_DOMAIN, IGT_LOG_DEBUG, f) | ^ ../../mnt/vol/tests/drm_import_export.c:123:21: note: format string is defined here 123 | igt_debug("start %ld\n", gettid()); | ~~^ | | | long int | %d So, typecast gettid() as pid_t and update all of our callers accordingly Reviewed-by: Petri Latvala <petri.latvala@intel.com> Signed-off-by: Lyude Paul <lyude@redhat.com>
2019-05-07Use gettid() wrapper everywhereLyude Paul
Currently we have multiple different parts of IGT that define their own wrapper around the gettid() syscall (or just call it directly with no wrapper). Additionally, add the appropriate #includes for igt_aux.h to make sure syscall() is available. Reviewed-by: Petri Latvala <petri.latvala@intel.com> Signed-off-by: Lyude Paul <lyude@redhat.com>
2019-04-30tests/kms_cursor_legacy: Don't stop cursor_vs_flip earlyArkadiusz Hiler
The test is doing multiple iterations (50). Each iteration tries to squeeze target number of cursor updates in half a second worth of flips. If we don't hit the target in any given iteration we bail out early. Because of that we don't have the data on the number of iterations that have failed and/or succeeded any given run, which makes hunting down this elusive issue hard. Let's change that so we always go through all the iterations and fail at the end printing out the number of iterations we haven't met the target. Each failed iteration also logs how many cursor updates it has managed to do. Since our target is generated run-time and is also load sensitive, let's bump the log level of message containing our target to "info" so we can compare those values across both passes and failures. Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Cc: Martin Peres <martin.peres@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-26i915/gem_tiling_max_stride: Skip if chipset is unknownChris Wilson
If we can't match the devid to a chipset, we do not have a reference for the tiling strides. Instead of randomly failing, skip with a semi-informative message. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110523 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-04-26lib: consolidate duplicated define of vfs_file_max(void)Caz Yokoyama
Remove it from intel_os.c and gem_exec_reuse.c and globally define in igt_aux.c. v3: update comment in the code and commit message. Signed-off-by: Caz Yokoyama <caz.yokoyama@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-04-25i915/gem_exec_schedule: Check deps along implicit inter-engine semaphoresChris Wilson
Given an implicit semaphore from one engine to the next, check that if we skip the wait on that semaphore the following batch although submitted early (as it depends along the single engine timeline) is not executed ahead of its dependency. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
2019-04-25i915/gem_exec_schedule: Exercise resolving of userspace semaphoresChris Wilson
Check that we can reorder batches around userspace semaphore waits by injecting a semaphore that is only released by a later context. NB: This is expected to fail with the current execlists implementation. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2019-04-25autotools: fix audio and chamelium buildsSimon Ser
The commit introducing Chamelium audio tests and removing old audio tests doesn't update autotools files. This patch fixes it. Signed-off-by: Simon Ser <simon.ser@intel.com> Fixes: 311baff151f90c1db6f57ee9515216b4f9da5db7 Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2019-04-25tests/kms_chamelium: run audio test with multiple sampling ratesSimon Ser
The audio test is now run multiple times with a variety of playback sampling rates. We now query the capture audio format from the Chamelium XML-RPC API instead of hardcoding it. One limitation is that we need to start sending an audio signal before being able to query the capture audio format. However we need the capture sample rate to decide which frequencies we generate. For now we use the playback rate and check that it's the same as the capture rate. Another limitation is that the DP receiver reports an unknown sampling rate during the 44.1KHz test. In this case we assume the capture rate is the same as the playback rate. We'll fail later anyway if this assumption is incorrect since we check the signal we receive. Chameleon bug: https://crbug.com/950913 Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-25tests/kms_chamelium: test audio channels are not mixed upSimon Ser
Send a different signal to each channel and make sure captured audio channels are not swapped or mixed up. The Chamelium device has a bug and already swaps the left and right channels. For this reason, clients need to retrieve the Chamelium channel mapping and accomodate for this. See https://crbug.com/950922 for a discussion about this. Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-25tests/kms_chamelium: test we receive a signal from both audio channelsSimon Ser
This commit updates the audio test to make sure we receive a signal from both audio channels. However this commit doesn't check that left and right channels are not swapped. Such a check requires some more work (because the Chamelium device does swap left and right channels) and will be implemented in a future commit. This commit adds a new channel argument to audio_signal_add_frequency, to add a frequency to a single channel only. Some light refactoring has been performed: a proper audio_signal_fini function has been introduced and size_t in now used when it should be. Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-25tests/kms_chamelium: capture audio data in real-timeSimon Ser
Before this patch, the audio test first sends an audio signal for 2s, and then checks whether the captured signal matches. This patch makes it so we send and check the signal in parallel. Thus we can stop the test as soon as we receive the correct signal. This saves ~2s per audio test. Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-25tests/kms_chamelium: add dp-audio testSimon Ser
This new test ensures DisplayPort audio works by using the Chamelium. It enables the DisplayPort output and sends an audio signal containing a set of frequencies we choose to all HDMI/DisplayPort audio devices. It starts recording audio on the Chamelium device and uses the stream server to retrieve captured audio pages. It then checks that the capture audio signal contains the frequencies we sent, and only those, by computing a FFT. A new library has been added to libigt to communicate with the stream server. It implements a simple custom TCP protocol. In case the test fails, a WAV file with the captured data is saved on disk. Right now the test has a few limitations: - Only the first channel is checked - IGT only generates audio with a single sampling rate (48 KHz) - Audio data is not captured in real-time These limitations will be lifted in future patches. PulseAudio must not run during the tests since ALSA is used directly. To ensure this, edit /etc/pulse/client.conf and add `autospawn=no`. Then run `pulseaudio --kill`. This commit deletes the existing audio tests. They weren't run and required an exotic configuration (HDMI audio splitter, dummy HDMI sink and a line-in port on the DUT). This patch also changes lib/igt_audio to use uint16_t instead of short. The rationale is: - The standard says a short is at least 16 bit wide, but a short can be larger (in practice it won't happen, but better use types correctly) - It makes it clearer that the audio format is S16_LE, since "16" is in the type name. This patch depends on the following Chameleon bugs: - https://crbug.com/948060 - https://crbug.com/950857 Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Martin Peres <martin.peres@linux.intel.com>
2019-04-24tests/kms_plane_scaling: Update list of supported pixel formats for rotationMika Kahola
Update the list of pixel formats that cannot be rotated by 90/270 degrees. With this patch, the kernel and IGT are aligned for i915 driver. References: https://bugs.freedesktop.org/show_bug.cgi?id=109052 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110369 Signed-off-by: Mika Kahola <mika.kahola@intel.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com>
2019-04-24tests/kms_flip: Improve asserts for expired vblank testsDaniel Vetter
Step 1 in debugging: Actually understand what's going wrong. References: https://bugs.freedesktop.org/show_bug.cgi?id=102887 Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Cc: "Peres, Martin" <martin.peres@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
2019-04-24lib/igt_dummyload: Clarify batch mappingMika Kuoppala
Use spin->condition to mark the spot we have saved for manipulating the looping condition. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-24lib/igt_dummyload: Introduce igt_spin_resetMika Kuoppala
Libify resetting a spin for reuse. v2: use also in perf_pmu v3: s/cmd_spin/cmd_precondition v4: remove early return for !spin (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-18tests/kms_plane_scaling: Skip testing unsupported fp16 featuresKevin Strasser
Disallow Yf tiling and Y-tiled 90/270 rotation for fp16 on Intel hardware. rfc2: - Move check into can_rotate (Maarten) - Use igt_plane_has_format_mod (Maarten) v1: - Drop Y tile check (Ville) Signed-off-by: Kevin Strasser <kevin.strasser@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-04-18tests/i915/gem_render_copy: Don't leak bos between subtestsVille Syrjälä
Unref the bos after one subtest is done. The next subtest will allocate its own bos. v2: Add scratch_buf_fini() and reverse the onion (Chris) Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-18lib/igt_dummyload: Get rid of 'batch' on spinner accessorsMika Kuoppala
There is no guarantee that spinners are and will be implemented using batches. As we have igt_spin_t, manipulate it through igt_spin_* functions consistently and hide the batch nature. Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-18lib/igt_dummyload: libify checks for spin batch activationMika Kuoppala
Instead of opencoding the poll into the spinner, use a helper to check if spinner has started. v2: use zero as presumed offset (Chris) v3: cleanup the relocs (Chris) v4: leave the domains to zero, avoid relocation (Chris) Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-18amdgpu/amd_abm: Fix getting and setting abm level propertyNicholas Kazlauskas
This patch addresses a few problems: 1. Inner loop that iterates over the properties uses the same iterator as the outer loop over connectors. If the eDP panel isn't on the first output, then it won't be checked and the tests will skip. 2. We can get null pointer deferences if any of the DRM calls return NULL. 3. The proplist isn't freed after being acquired. These can be fixed by using the kmstest_get_property helper to get the prop_id. The prop_id and KMS connector ID are then stored for use later in the test when we need to set the ABM level. All the necessary cached state has been placed into a data structure and many callsites have been updated to make use of this. Cc: David Francis <david.francis@amd.com> Cc: Leo Li <sunpeng.li@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: David Francis <david.francis@amd.com>
2019-04-17i915/gem_spin_batch: Add test to resend spinnerMika Kuoppala
Add subtests to resend the same spinner to same context and to other context. v2: other engines (Chris) Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-17i915/gem_exec_schedule: Fill in obj.offset for spinner resubmissionChris Wilson
When resubmitting the spinner, fill in the expected offset so that we are not tempted to relocate it across contexts (as the spinner must point back to itself for the MI_BB_START to work). In this case, these should work correctly as they are reusing the same active vma, but for pedagogy we should dtrt. 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>
2019-04-17i915: Update i915_drm.hChris Wilson
Copy uapi/i915_drm.h across from kernel commit d1172ab3d443e84ade75285f8c107bfac7e386d8 Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Fri Apr 12 08:14:16 2019 +0100 drm/i915: Introduce struct class_instance for engines across the uAPI and adapt gem_ctx_sseu to match the new struct. 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>
2019-04-16tests/perf: Fix timeout for RC6 re-enablingImre Deak
After closing the perf stream the parking the GPU engines may easily take more than 1 second: releasing the FD itself results in a new request submission via i915_perf_release()->i915_oa_stream_destroy()-> gen8_disable_metric_set(). That means a >1sec delay for the delayed unpark to be called due to the delay from queue_delayed_work(retire_work, round_jiffies_up_relative(HZ)) + the delay from mod_delayed_work(idle_work, msecs_to_jiffies(100)) Scheduling may push this delay even further, I measured >2sec delays on my GLK. Fix this by calling gem_quiescent_gpu() which syncs up with the idle work, thus making sure we'll see RC6 residency afterwards. v2: - Use gem_quiescent_gpu() instead of increasing the timeout. (Chris) Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103179 Cc: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
2019-04-16tests/kms_vrr: fix compilation with ClangSimon Ser
Clang fails to compile this file with this error: ../tests/kms_vrr.c:203:20: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] drmVBlank vbl = { 0 }; ^ {} As discussed in [1], using an empty initializer list is the preferred way to fix this. [1]: https://lists.freedesktop.org/archives/igt-dev/2019-March/010841.html Signed-off-by: Simon Ser <simon.ser@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-04-16kms_content_protection: Disable authentication when failedRamalingam C
When content protection authentication is failed in kernel after all requried retries, before declaring the test failure, set the content protection to UNDESIRED state. This will avoid the HDCP authentication attempts in subsequent modesets from other tests. Signed-off-by: Ramalingam C <ramalingam.c@intel.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110376 Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110224 Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
2019-04-16i915/gem_mmap_gtt: Markup a couple of GTT set-domainsChris Wilson
We have to control the cache domains, especially important before first writing into the object. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-04-15tests/fbcon_fbt: Do not keep opening debugfs_fd at every setup_drm() callJosé Roberto de Souza
As debugfs_fd is used even after the teardown_drm(), it is not closed in this function or in any other place. And then it gets worse as every call to setup_drm() will open another file descriptor to debugfs dir. So lets move the opening of debugfs_fd to setup_environment() and only open it once and close it before leave the test. Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests/fbcon_fbt: Do not try to open the same driver twice as masterJosé Roberto de Souza
If a subtest fail before the teardown_drm() call it will keep the driver open as master causing the test to fail when trying to open the driver again as master, so lets share the drm_info struct and check if driver is already open. Starting subtest: psr (kms_fbcon_fbt:5270) CRITICAL: Test assertion failure function subtest, file ../tests/kms_fbcon_fbt.c:259: (kms_fbcon_fbt:5270) CRITICAL: Failed assertion: feature->wait_until_update(drm.debugfs_fd) Stack trace: #0 ../lib/igt_core.c:1474 __igt_fail_assert() #1 ../tests/kms_fbcon_fbt.c:261 subtest() #2 ../tests/kms_fbcon_fbt.c:316 __real_main309() #3 ../tests/kms_fbcon_fbt.c:309 main() #4 ../csu/libc-start.c:325 __libc_start_main() #5 [_start+0x29] #6 [<unknown>+0x0] Subtest psr failed. **** DEBUG **** (kms_fbcon_fbt:5270) drmtest-DEBUG: Test requirement passed: !(fd<0) (kms_fbcon_fbt:5270) igt_debugfs-DEBUG: Opening debugfs directory '/sys/kernel/debug/dri/1' (kms_fbcon_fbt:5270) DEBUG: Test requirement passed: drm->res (kms_fbcon_fbt:5270) igt_kms-DEBUG: VT: graphics mode set (mode was 0x0) (kms_fbcon_fbt:5270) DEBUG: Test requirement passed: feature->supported_on_chipset(drm.debugfs_fd) (kms_fbcon_fbt:5270) CRITICAL: Test assertion failure function subtest, file ../tests/kms_fbcon_fbt.c:259: (kms_fbcon_fbt:5270) CRITICAL: Failed assertion: feature->wait_until_update(drm.debugfs_fd) (kms_fbcon_fbt:5270) igt_core-INFO: Stack trace: (kms_fbcon_fbt:5270) igt_core-INFO: #0 ../lib/igt_core.c:1474 __igt_fail_assert() (kms_fbcon_fbt:5270) igt_core-INFO: #1 ../tests/kms_fbcon_fbt.c:261 subtest() (kms_fbcon_fbt:5270) igt_core-INFO: #2 ../tests/kms_fbcon_fbt.c:316 __real_main309() (kms_fbcon_fbt:5270) igt_core-INFO: #3 ../tests/kms_fbcon_fbt.c:309 main() (kms_fbcon_fbt:5270) igt_core-INFO: #4 ../csu/libc-start.c:325 __libc_start_main() (kms_fbcon_fbt:5270) igt_core-INFO: #5 [_start+0x29] (kms_fbcon_fbt:5270) igt_core-INFO: #6 [<unknown>+0x0] **** END **** Subtest psr: FAIL (0.845s) Starting subtest: fbc-suspend Test requirement not met in function igt_device_set_master, file ../lib/igt_device.c:55: Test requirement: __igt_device_set_master(fd) == 0 Can't become DRM master, please check if no other DRM client is running. Subtest fbc-suspend: SKIP (0.001s) Starting subtest: psr-suspend Test requirement not met in function igt_device_set_master, file ../lib/igt_device.c:55: Test requirement: __igt_device_set_master(fd) == 0 Can't become DRM master, please check if no other DRM client is running. Subtest psr-suspend: SKIP (0.000s) Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests/fbcon_fbt: Add and user psr_long_wait_update()José Roberto de Souza
When fbcon is enabled, PSR will be active between cursor blinks so what it should really use to test PSR is psr_wait_entry(), so a new feature callback was added. But the fbcon cursor blinks at 5hz what give us 200ms between each screen update what make psr_wait_update() prone to fail the test because it timed out before a blink could happen, so here adding and using psr_long_wait_update() that have a longer timeout. v3: - 3 previous patches squashed in this one (Maarten) - Back to !feature->wait_until_enabled() to test feature state when all CRTCS are disabled(Dhinakaran) Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinkaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests/fbcon_fbt: Enable cursor blinkingJosé Roberto de Souza
If cursor blinking is disabled no screen updates will happen and fbcon_fbt subtests will fail, so lets enable cursor blink while running this test and restore to the previous value when exiting it. v4: - renaming restore fd (Dhinakaran) - saving previous value as char (Dhinakaran) - skipping test if not able to open cursor blink file (Dhinakaran) Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests/fbcon_fbt: Allow fbcon to bind when running this testJosé Roberto de Souza
9c4114ec5d87 (lib: Always unbind the fbcon around igt) broke fbcon_fbt test as fbcon is not allowed to bind when executing any IGT test, so lets allow it again just for this test. Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests/fbcon_fbt: Use psr_wait_entry() to wait PSR be enabledJosé Roberto de Souza
kms_fbcon_fbt was doing its own handling to wait for PSR to get enabled while it is already available in lib. v2: splitted previous patch into this one and the previous one(Dhinakaran) Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-04-15tests: Add kms_plane_cursor testsNicholas Kazlauskas
Tests various cursor plane interactions with primary and overlay planes. Correctness is verified by comparing CRC values to reference buffers drawn on the primary plane. There are existing generic multi-plane interaction tests but these don't test positional output on overlapping planes or extensively cover edge and corner cases for offseting and positioning planes based on DRM parameters. On hardware without dedicated cursor planes (such as AMDGPU) these tests are helpful for verifying software calculations done for positioning the cursor plane. Cc: Leo Li <sunpeng.li@amd.com> Cc: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Leo Li <sunpeng.li@amd.com>
2019-04-12tests/gem_create: Test unaligned BO size updateMichał Winiarski
The driver is supposed to update the size when it's trying to outsmart userspace. Let's test it. v2: Rework to use local ioctl wrapper (Chris) v3: s/16/15, move test a bit earlier (Chris) Signed-off-by: Michał Winiarski <michal.winiarski@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Janusz Krzysztofik <janusz.krzysztofik@intel.com> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-11intel-ci: Sanitycheck CRC readback on the first pipe onlyChris Wilson
For fast-feedback, we need to sanitycheck that CRC reads work, otherwise the display validation tests are flawed. However, we don't need to extensively test each pipe as the HW is fundamentally the same. Instead, do the full suite of tests on one pipe, and just verify that the interface works for the other pipes. This should speed BAT up by reducing NUM_PIPES suspend and resume cycles to just 1. The shards should cover the extended test suite on all pipes for complete validation. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Petri Latvala <petri.latvala@intel.com> Cc: Martin Peres <martin.peres@free.fr> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Acked-by: Martin Peres <martin.peres@free.fr> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-04-11igt/tests/kms_atomic_transition: Tolerate if can't have all planesStanislav Lisovskiy
With some upcoming changes i915 might not allow all sprite planes enabled, depending on available bandwidth limitation. Thus the test need to decrement amount of planes and try again, instead of panicking. v2: Removed excessive nested conditions, making code a bit more readable(hopefully). v3: Stopped using global n_planes variable as it might cause resources being unreleased. Using now parms[i].mask as a way to determine if plane has to be included into commit. v4: Removed unneeded n_overlays initialization. v5: Randomize which of sprite planes to remove if hitting resource limits. v6: Replace igt_warn with igt_info, to make IGT tests happier. v7: Removed unneeded retry logic, made plane random removal simplier. Great thanks to Maarten Lankhorst for suggestions. v8: Fail if we have less than 3 planes v9: Remove unneeded diffs Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-04-11igt/tests/kms_atomic_transition: Skip transition, if no changes doneStanislav Lisovskiy
While fixing used amount of planes, discovered that if wm_setup_plane is called with specific parameter that gives parms[i].mask & mask == 0 for all used planes, then subsequent wait_transition fails in assertion on fd_completed. So added return value to wm_setup_plane, which would allow to determine, if we really need to wait for any transitions. v2: Fixed commit message, to properly describe a reasoning for wm_setup_plane changes. Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-04-11igt/tests: Remove redundant alpha retryStanislav Lisovskiy
Using igt_plane_has_format_mod allows to save time not doing redundant retry, knowing if plane supports alpha beforehand. v2: Remove unneeded assertion also. Signed-off-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-04-10tests/kms_dp_dsc: Restore the value of force dsc enableManasi Navare
This patch saves off the original value of force_dsc_en and restores it back after each test and in the igt exit handler so that it gets restored on any failure/assertion. Suggested-by: Imre Deak <imre.deak@intel.com> Cc: Petri Latvala <petri.latvala@intel.com> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com>
2019-04-10tests/kms_dp_dsc: Force a full modeset when we force dsc enableManasi Navare
DSC enable gets configured during compute_config and needs a full modeset to force DSC. Sometimes in between the tests, if the initial output is same as the mode being set for DSC then it will not do a full modeset. So we disable the output before forcing a mode with DSC enable. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=110270 Fixes: db19bccc1c22 ("test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDP") Cc: Petri Latvala <petri.latvala@intel.com> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Cc: Imre Deak <imre.deak@intel.com> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Reviewed-by: Imre Deak <imre.deak@intel.com>
2019-04-10tests/kms_flip: Do not request event for flips we expect to fail.Maarten Lankhorst
If we unexpectedly pass, we get a cryptic (kms_flip:935) CRITICAL: Test assertion failure function set_flag, file kms_flip.c:271: (kms_flip:935) CRITICAL: Failed assertion: !(*v & flag) (kms_flip:935) CRITICAL: Last errno: 25, Inappropriate ioctl for device Instead of a more descriptive assertion error, clear the request for event to fix this. This will change the error reported in bug #103257. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> References: https://bugs.freedesktop.org/show_bug.cgi?id=103257 [mlankhorst: Replace igt_assert with igt_assert_eq based on ickle's suggestion] Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-10tests/kms_flip: Reduce runtime to 1s for busy-flip.Maarten Lankhorst
We don't actually care about running this for 30 seconds, all we care is that we get a -EBUSY if a flip is already queued. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-10tests/kms_flip: Make busy-flip test less strict.Maarten Lankhorst
Remove the -interruptible test, the test only tests that we get an -EBUSY after doing a pageflip. Doing this interruptibly adds the possibility the test will take too long from retrying. Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-04-10tests/kms_dp_dsc: Cosmetic touch-upArkadiusz Hiler
Missing \n at the end of log message caused some hard to read logs. Cc: Martin Peres <martin.peres@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-04-10tests/kms_plane_multiple: Run only on the first valid outputArkadiusz Hiler
There is no real need for testing on each output, as they do not affect CRC coming out from the pipe. Let's use first viable one. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Cc: Martin Peres <martin.peres@linux.intel.com> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>