summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-21benchmarks/gem_userptr_benchmark: Correctly free memoryPetri Latvala
if (p) free(p) does a useless check, free(NULL) is a valid call. Also assign NULL so we don't end up double-freeing memory if anyone reorders nr_bos to have a 0 after other values. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-21lib/igt_kms: Assert that active crtcs have at least one planePetri Latvala
Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Cc: Robert Foss <robert.foss@collabora.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2019-01-21lib/igt_kms: Make igt_display_init require at least one planePetri Latvala
Not only will the following calloc call end up allocating 0 bytes (undefined behaviour), but last_plane becomes (uint8_t)-1. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Robert Foss <robert.foss@collabora.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Robert Foss <robert.foss@collabora.com>
2019-01-21benchmarks/wsim: Handle a parse errorPetri Latvala
Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-21lib: Avoid memcpying 0 bytes from NULLPetri Latvala
The behaviour of memcpying 0 bytes from NULL is semantically sound, but still undefined behaviour. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2019-01-21tests: Use correct type for callocPetri Latvala
No actual difference, size of a pointer is the same as pointer-to-pointer. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Mika Kahola <mika.kahola@intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Mika Kahola <mika.kahola@intel.com>
2019-01-21lib/igt_kms: Use correct type for callocPetri Latvala
The type mismatch was char vs. unsigned char, both being size 1 so this didn't cause any actual issues other than noise in static analysis that doesn't believe 1 is equal to another type of 1. Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com> Reviewed-by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
2019-01-21lib/ioctl_wrappers: Help static analysis with execution flowPetri Latvala
If an ioctl fails, errno is set to non-zero, and static analysis doesn't quite get it. Add igt_assume()s where applicable. v2: Braces on both branches of an if (Chris) Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michał Winiarski <michal.winiarski@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-01-21lib/i915/gem_context: Help static analysis with execution flowPetri Latvala
If an igt_ioctl fails, errno is set to non-zero, and static analysis doesn't quite get it. Add an igt_assume() to help. v2: Braces on both branches of an if (Chris) Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michał Winiarski <michal.winiarski@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-01-21lib: Introduce BUILD_BUG_ON_INVALID and igt_assume()Petri Latvala
BUILD_BUG_ON_INVALID() is a macro that, like the kernel counterpart, expands to an expression that generates no code. Useful for making sure an expression is valid code while producing no side effects. igt_assume() is an assert-like macro that is used to give hints to static analysis of code. If static analysis is not used (as detected by STATIC_ANALYSIS_BUILD), igt_assume() expands to a BUILD_BUG_ON_INVALID, otherwise expands to an assert(). v2: Make sure the expression in igt_assume is still parsed without static analysis. (Chris) v3: Also introduce BUILD_BUG_ON_INVALID as standalone Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michał Winiarski <michal.winiarski@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-01-18tests/kms_modes_available_crc: Fix NV12 failureDhinakaran Pandiyan
The size of the UV plane is not calculated correctly - height is not tile aligned. Make use of the stride and offset values intitialized in the previous patch to calculate plane size. The next step would be to rewrite the test to make use of library functions, but for now this should fix NV12. Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-18tests/kms_available_modes_crc: Initialize fb structDhinakaran Pandiyan
The test does not initialize data->fb, initializing stride and offset is necessary to fill NV12 planes correctly. We should ideally be using library functions in place of handrolled code in this test, but let's start by fixing the failures. Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-18tests/kms_available_modes_crc: Reset output->pipe after testing it.Dhinakaran Pandiyan
Not clearing the pipe results in a test failure when the same pipe is assigned to the next output. Cc: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Suggested-by: James Ausmus <james.ausmus@intel.com> Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com>
2019-01-18lib/igt_debugfs: Unify crc collectionMika Kahola
For one shot crc collection, let's use the same helper function as we use for continuous crc collection. With this patch, we first drain the pipe from queued crc values and read the fresh crc. v2: We don't need to drain the pipe right after we start collecting crc's (Dhinakaran) Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: Mika Kahola <mika.kahola@intel.com>
2019-01-17tests/kms_rotation_crc: add NV12 support for multiplane* testsJuha-Pekka Heikkila
Add NV12 support for testing where available. Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-17tests/kms_rotation: align rendered image correctly for rotationJuha-Pekka Heikkila
rendered test image had off-by-one error in size calculation which was failing some tests on certain resolutions and plane sizes. Signed-off-by: Juha-Pekka Heikkila <juhapekka.heikkila@gmail.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-16i915/gem_cpu_reloc: Use a self-modifying chained batchChris Wilson
Use another sensitive CPU reloc to emit a chained batch from inside the updated buffer to reduce the workload on slow machines to fit within the CI timeout. References: https://bugs.freedesktop.org/show_bug.cgi?id=108248 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2019-01-16igt/drv_missed_irq: Skip if the kernel reports no rings available to testChris Wilson
Some setups (e.g. guc and gen10+) can not disable the MI_USER_INTERRUPT generation and so can not simulate missed interrupts. These tests would fail, so skip when the kernel reports no tests available. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2019-01-16drm/drm_import_export: Replace imprecise loop-bound with timeoutChris Wilson
Use a specific timeout to exercise the race conditions, rather than a number of tries -- this prevents it burning up too many minutes under CI for little gain, we can just run it again to improve race detection. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108667 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2019-01-16lib/ioctl_wrapper: Implement __gem_mmapLukasz Kalamarz
Previous implementation of __gem_mmap__cpu and __gem_mmap_wc only differ with setting proper flag for caching. This patch implement __gem_mmap, which merge those two functions into one v2: Reordered and splited this patch into two separete patches v3: Dropped unnecessary check v4: Remerge patches again and fixed __gem_mmap description Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz@intel.com> Cc: Michal Winiarski <michal.winiarski@intel.com> Cc: Katarzyna Dec <katarzyna.dec@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
2019-01-16lib/igt_dummyload: use gem_mmap__cpu and gem_mmap__wc when applicableLukasz Kalamarz
We had some duplicates in code that are using direct call to __gem_mmap__cpu or __gem_mmap__wc and then assert it result, which is what gem_mmap__cpu and gem_mmap__wc is taking care for us. v2: Rebased and reordered this patch in series v4: Rebase Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz@intel.com> Cc: Michal Winiarski <michal.winiarski@intel.com> Cc: Katarzyna Dec <katarzyna.dec@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
2019-01-16lib/ioctl_wrapper: use defines for get_param instead of param numberLukasz Kalamarz
In lib code there were few functions using param number instead of defines. We would like to use defines, since they are providing more information to user comparing to param number. v2: Rebased patch v4: Fixed commit message Signed-off-by: Lukasz Kalamarz <lukasz.kalamarz@intel.com> Cc: Michal Winiarski <michal.winiarski@intel.com> Cc: Katarzyna Dec <katarzyna.dec@intel.com> Cc: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
2019-01-16i915/gem_userptr_blits: Only mlock the memfd once, not the arenaChris Wilson
We multiply the memfd 64k to create a 2G arena which we then attempt to write into after marking read-only. However, when it comes to unlock the arena after the test, performance tanks as the kernel tries to resolve the 64k repeated mappings onto the same set of pages. (Must not be a very common operation!) We can get away with just mlocking the backing store to prevent its eviction, which should prevent the arena mapping from being freed as well. References: https://bugs.freedesktop.org/show_bug.cgi?id=108887 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
2019-01-15intel-ci: Drop gem_ctx_switch/heavy from BATChris Wilson
Th heavy variant of gem_ctx_switch does little more than provide an alternate timing for the basic gem_ctx_switch; the timing only effects the HW and does not stress the driver any differently. As such, including gem_ctx_switch/heavy provides no more basic coverage for BAT over and above the default gem_ctx_switch and i915_selftests/live_contexts. It takes around 45s, of a 600s total target time for BAT. 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> Acked-by: Tomi Sarvela <tomi.p.sarvela@intel.com> Acked-by: Petri Latvala <petri.latvala@intel.com>
2019-01-14tests/psr: Share the code check if sink supports PSRJosé Roberto de Souza
The same code checking if sink supports PSR was spread into 3 tests, better move it to lib and reuse. v2: splitted previous patch into this one and the next one(Dhinakaran) Cc: Rodrigo Vivi <rodrigo.vivi@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-14lib/psr: Add a macro with the maximum lenght of i915_edp_psr_status and use itJosé Roberto de Souza
So every function reading i915_edp_psr_status can allocate a buffer long enough. Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Reviewed-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
2019-01-14i915/gem_exec_whisper: Pass early exit onto check_boChris Wilson
If we break out of the test loop early, we may not have filled all dwords, so be careful to only check as far as we completed. Fixes: d9cd03c887a5 ("i915/gem_exec_whisper: Limit to a maximum of 150s") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109356 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-14lib/igt_edid_template: Fix parenthesis for vertical pulse codingPaul Kocialkowski
Add missing parenthesis in the macro coding the vertical pulse high bits. Without them, the shift takes precedence over the logical and operation, which is not how these bits should be coded according to the spec. Signed-off-by: Paul Kocialkowski <paul.kocialkowski@bootlin.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-14amd: Use drm_open_driver(AMDGPU)Chris Wilson
Just use the normal library function, with the normal warning message for an unmatched GPU so that CI buglog can filter it. References: https://bugs.freedesktop.org/show_bug.cgi?id=109315 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Martin Peres <martin.peres@free.fr> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-01-14Make force work with multiple drivers availableRodrigo Siqueira
The force option allows users to specify which driver they want that IGT uses. Nonetheless, if the user has two or more loaded drivers in his system, the force option will not work as expected because IGT will take the first driver found at /dev/dri. This problem can be reproduced in a QEMU VM that using Bochs and VKMS. This patch handles this scenario by ensuring that IGT uses the forced module specified via IGT_FORCE_DRIVER. Signed-off-by: Rodrigo Siqueira <rodrigosiqueiramelo@gmail.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-01-14tests/amdgpu: Build amd_abm with meson tooPetri Latvala
Fixes: 738f43a54d62 ("tests/amdgpu: Add test for Adaptive Backlight Management") Reported-by: gitlab-CI Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: David Francis <David.Francis@amd.com> Cc: Leo Li <sunpeng.li@amd.com> Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
2019-01-14i915/gem_exec_whisper: Limit to a maximum of 150sChris Wilson
Each individual pass is as effective at spotting an error using the Chinese whisper as any other, so the effectiveness of adding more passes rapidly diminishes. To keep the tests bounded within time, limit a subtest to a mere 150s! Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108592 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-14igt/sysfs: drop support for passing -1 fd for IntelJani Nikula
The rabbit hole goes deep in this case, but I couldn't find any place where we'd still rely on -1 for Intel. Drop the remaining support to prevent anyone adding new code using this. Cc: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2019-01-12tests/kms_cursor_crc: Add test to check extreme alpha values for cursor planeMamta Shukla
Add test to check extreme alpha values i.e. fully opaque and fully transparent for cursor plane and verify by calculating hardware and software CRC. Signed-off-by: Mamta Shukla <mamtashukla555@gmail.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
2019-01-11test/kms_dp_dsc: Basic KMS test to validate VESA DSC on DP/eDPManasi Navare
This patch adds a basic kms test to validate the display stream compression functionality if supported on DP/eDP connector. Currently this has only two subtests to force the DSC on all the eDP and DP connectors that support it with default parameters. This will be expanded to add more subtests to tweak DSC parameters. v8 (from Manasi): * Fix the logic to scan through all connectors even if some dont support DSC/FEC (Petri) * Fix the skip test logic if no connectors support DSC to avoid false positives (Petri) * Move test clenup to run_test v7: (from Anusha) * Code Style changes.(Petri) * Use for_each_pipe() instead of for_each_pipe_static().(Petri) * Correct logic by avoiding skipping of inner for loop completely.(Petri) v6: (from Anusha) * Fix run_test() (Petri) * Fix update_display() to avoid leaks. (Petri) v5: * Fix test cleanup to avoid crash (Petri) v4: * Future proof for more test types (Petri) * Fix alphabetical order (Petri) * s/igt_display_init/igt_display_require (Petri) * Remove blank lines after return (Petri) v3: * Use array of connectors and loop through (Petri) * Also check for FEC on DP connectors (Manasi) * Add a Pipe_A restriction on DP (Ville) v2: * Use IGT wrappers for all (DK, Antonio) * Split into two subtests for eDP and DP types (Petri) Cc: Petri Latvala <petri.latvala@intel.com> Cc: Antonio Argenziano <antonio.argenziano@intel.com> Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Anusha Srivatsa <anusha.srivatsa@intel.com> Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com> Signed-off-by: Manasi Navare <manasi.d.navare@intel.com> Reviewed-by: Petri Latvala <petri.latvala@intel.com>
2019-01-11i915/gem_tiled_wc: Reuse common gem_get_tilingChris Wilson
get_tiling == gem_get_tiling + igt_require; so do that instead of opencoding the ioctl. 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-01-11i915/gem_tiled_pread: Skip on unknown swizzlingChris Wilson
If we do not know the underlying swizzle on the HW, we do not know the full tiling pattern and cannot predict the expected results. This is often because the swizzle varies between pages and is not as constant as we naively expected. v2: gem_get_tiling() does the physical==reported check, we just need to add a require Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
2019-01-11i915/gem_ppgtt: Convert stress test to run for a fixed durationChris Wilson
Currently blt-vs-render runs for a fixed loop count, and exceeds 360s on a slow Skylake-y. It really doesn't tell us anything useful about low likelihood events after the first few seconds it takes to fill memory, so limit it to 30s (and hope that repeated runs in CI is enough to exercise the even rarer corner cases). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108039 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-11i915/hangman: Read a dummy byte to check sysfs existenceChris Wilson
sysfs doesn't give the driver an open() callback, so we can only report the unavailability of HW on the first read; so check read() after checking open(). Fixes: 93f0ad4b835e ("i915/hangman: Skip if disabled by the kernel") Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
2019-01-11intel-ci/blacklist: Exclude gem_exec_parse lriChris Wilson
These exercise a certain HW misfeature, no longer protected by the kernel cmdparser due to obsolete userspace requirements. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com> Acked-by: Petri Latvala <petri.latvala at intel.com>
2019-01-10i915/gem_ctx_isolation: Ignore the low bits of BB_OFFSETChris Wilson
On Skylake, BB_OFFSET seems to be unstable. Since this is an offset into the batch at the time of CS execution, it should be actively written to as we read from the register so allow it a qword of discrepancy (since the CS should be reading in qwords). This still allows us to detect dirt across the rest of the register field, should that be required. v2: restrict ignore_bits to only BIT(2) that we see fluctuate in testing (Antonio) Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Antonio Argenziano <antonio.argenziano@intel.com>
2019-01-10i915/hangman: Skip if disabled by the kernelChris Wilson
Some kernels may have to disable error capture for some hardware or by it being configured out. Since it is conditionally available, asserting it exists is not an actual requirement. For hardware where we are unable to provide error state capture, skip. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Acked-by: Antonio Argenziano <antonio.argenziano@intel.com>
2019-01-10lib/sysfs: Repair override of params with -1Chris Wilson
Commit e27626898b87 ("igt: Check the physical swizzle status") stopped trying to chase the parameters from the device sysfs, entirely by accident. Make it a tiny bit more robust by forgiving the sysfs device not being present and jumping to the /sys/module + driver name param lookup fallback. Reported-by: Jani Nikula <jani.nikula@intel.com> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Jani Nikula <jani.nikula@intel.com> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
2019-01-10lib/fb: Fix rgb24 to nv12 conversionPetri Latvala
A typo fix in 1x2 pixel block conversion code, revealed by GCC 9 Fixes: 1c7ef3890045 ("lib: Use igt_matrix for ycbcr<->rgb conversion") Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=109257 Reported-by: Martin Liska <mliska@suse.cz> Signed-off-by: Petri Latvala <petri.latvala@intel.com> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Reviewed-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
2019-01-08tests/amdgpu: Add test for Adaptive Backlight ManagementDavid Francis
Adaptive Backlight Management (ABM) is a power-saving feature on AMD ASICs that reduces backlight while increasing pixel contrast and luminance. This test confirms that ABM is present and enabled, and that backlight performance is sane. It uses AMD-specific debugfs entries to read the backlight PWM values. It has 5 subtests: dpms_cycle Sets brightness to half, then confirms that value is restored after dpms off and then on. backlight_monotonic_basic Sets brightness to ten different values, confirming that higher brightness values are brighter. backlight_monotonic_abm Same as backlight_monotonic_basic, but with abm enabled. abm_enabled Sets abm to its four intensity levels, confirming that abm reduces the backlight, and the reduction is greater for higher abm level. abm_gradual Sets abm to off and then maximum intensity, confirming that brightness decreases continually over the first second and eventually reaches the target value. This test takes 30s to run. v2: make sure that dpms is cycled on the eDP display Signed-off-by: David Francis <David.Francis@amd.com> Reviewed-by: Leo Li <sunpeng.li@amd.com>
2019-01-08tests: Enable plane tests for AMDGPUNicholas Kazlauskas
The i915 specific feature requirements that would have failed subtests from kms_plane, kms_plane_multiple and kms_plane_scaling have been conditionally guarded against. These tests can now be run on AMDGPU with the i915 specific tests skipped appropriately. Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Harry Wentland <harry.wentland@amd.com>
2019-01-08tests/kms_plane_lowres: Don't fail tests when missing format/mod supportNicholas Kazlauskas
The kms_plane_lowres subtests will fail on non-i915 hardware because of the devid lookups and tiling format requirements. This patch makes use of the igt_display_has_format_mod() helper to check for support before failing fb creation. The tests still won't fully run yet on i915 hardware because they'll skip during calls to igt_assert_plane_visible - those require an i915 extension to get the CRTC/plane set for a given pipe. v2: Use igt_display_has_format_mod helper (Ville) v3: Move variable declarations to loop scope (Ville) Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-08tests/kms_plane_multiple: Add tiled-none plane position subtestsNicholas Kazlauskas
The per-pipe plane position subtests are capable of running on AMDGPU as long as they're not using i915 specific tiling formats. The test setup already supports being invoked with different tiling modes so this patch introduces the new 'tiled-none' subtest that runs without any tiling. The tiled-none tests are skipped on i915 to retain existing test coverage and behavior on i915. v2: Use igt_display_has_format_mod helpers (Ville) Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-08tests/kms_plane_scaling: Add support for testing AMDGPUNicholas Kazlauskas
The plane_scaling subtests are capable of running on AMDGPU when not using i915 specific tiling formats and when the test only requires one scaler per pipe. This patch removes the forced i915 devid and gen checks from non i915 devices. It also adds logic for getting the number of scalers per pipe in a way that doesn't only depend on devid. One scaler per pipe is assumed for AMDGPU. There isn't any specific reason that the x-tiled formats need to be used on the non-rotation tests on i915 but this patch keeps the existing test behavior. It's a little simpler to keep it this way for the prepare_crtc helper that's shared between the scaling test and the clipping/clamping test. v2: Use igt_plane_has_format_mod helper (Ville) v3: Use helpers to check x-tiled support (Ville) Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
2019-01-02i915/gem_busy: Use a non-preemptible hanging batchChris Wilson
Ensure that the hangcheck notices the hanging batch by using a non-preemptible spin batch, as some future versions of hangcheck may allow a preemptible GPU hog to survive. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>