[igt-dev] [PATCH i-g-t] tests/kms_sink_crc_basic: Kill it for good.

Rodrigo Vivi rodrigo.vivi at intel.com
Thu Jul 5 19:25:32 UTC 2018


Following kernel commit: "drm/i915: Kill sink_crc for good"

It was originally introduced following the VESA spec in order to validate PSR.

However we found so many issues around sink_crc that instead of helping PSR
development it only brought another layer of trouble to the table.

So, sink_crc has been a black whole for us in question of time, effort and hope.

First of the problems is that HW statement is clear: "Do not attempt to use
aux communication with PSR enabled". So the main reason behind sink_crc is
already compromised.

For a while we had hope on the aux-mutex could workaround this problem on SKL+
platforms, but that mutex was not reliable, not tested,
and we shouldn't use according to HW engineers.

Also, nor source, nor sink designed and implemented the sink_crc to be used like
we are trying to use here.

Well, the sink side of things is also apparently not prepared for this
case. Each panel that we tried seemed to have a different behavior with same
code and same source.

So, for all the time we lost on trying to ducktape all these different issues
I believe it is now time to move PSR to a more reliable validation.
Maybe not a perfect one as we dreamed for this sink_crc, but at least more
reliable.

Cc: Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
 tests/Makefile.sources                |   1 -
 tests/intel-ci/fast-feedback.testlist |   1 -
 tests/kms_sink_crc_basic.c            | 156 --------------------------
 tests/meson.build                     |   1 -
 4 files changed, 159 deletions(-)
 delete mode 100644 tests/kms_sink_crc_basic.c

diff --git a/tests/Makefile.sources b/tests/Makefile.sources
index ad62611f..1f336696 100644
--- a/tests/Makefile.sources
+++ b/tests/Makefile.sources
@@ -208,7 +208,6 @@ TESTS_progs = \
 	kms_rmfb \
 	kms_rotation_crc \
 	kms_setmode \
-	kms_sink_crc_basic \
 	kms_sysfs_edid_timing \
 	kms_tv_load_detect \
 	kms_universal_plane \
diff --git a/tests/intel-ci/fast-feedback.testlist b/tests/intel-ci/fast-feedback.testlist
index b08ef770..83127ade 100644
--- a/tests/intel-ci/fast-feedback.testlist
+++ b/tests/intel-ci/fast-feedback.testlist
@@ -245,7 +245,6 @@ igt at kms_pipe_crc_basic@suspend-read-crc-pipe-b
 igt at kms_pipe_crc_basic@suspend-read-crc-pipe-c
 igt at kms_psr_sink_crc@basic
 igt at kms_setmode@basic-clone-single-crtc
-igt at kms_sink_crc_basic
 igt at pm_backlight@basic-brightness
 igt at pm_rpm@basic-pci-d3-state
 igt at pm_rpm@basic-rte
diff --git a/tests/kms_sink_crc_basic.c b/tests/kms_sink_crc_basic.c
deleted file mode 100644
index 1c31e30a..00000000
--- a/tests/kms_sink_crc_basic.c
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright © 2013 Intel Corporation
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice (including the next
- * paragraph) shall be included in all copies or substantial portions of the
- * Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- *
- */
-
-#include "igt.h"
-#include "igt_sysfs.h"
-#include <errno.h>
-#include <limits.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "drm_fourcc.h"
-
-
-enum color {
-	RED,
-	GREEN,
-};
-
-typedef struct {
-	int drm_fd;
-	igt_display_t display;
-	struct igt_fb fb_green, fb_red;
-	igt_plane_t *primary;
-} data_t;
-
-static void assert_color(int dir, enum color color)
-{
-	unsigned int r, g, b;
-
-	igt_require_f(igt_sysfs_scanf(dir,
-				      "i915_sink_crc_eDP1",
-				      "%4x%4x%4x",
-				      &r, &g, &b) == 3,
-		      "Sink CRC is unreliable on this machine. Try manual debug with --interactive-debug=no-crc\n");
-
-	/* Black screen is always invalid */
-	igt_assert_neq(r | g | b, 0);
-
-	switch (color) {
-	case RED:
-		igt_assert_lt(0, r);
-		igt_assert_eq(0, g);
-		igt_assert_eq(0, b);
-		igt_debug("sink CRC for red %.4x%.4x%.4x\n", r, g, b);
-		break;
-	case GREEN:
-		igt_assert_eq(0, r);
-		igt_assert_lt(0, g);
-		igt_assert_eq(0, b);
-		igt_debug("sink CRC for green %.4x%.4x%.4x\n", r, g, b);
-		break;
-	default:
-		igt_fail(IGT_EXIT_FAILURE);
-	}
-}
-
-static void basic_sink_crc_check(data_t *data)
-{
-	int dir;
-
-	dir = igt_debugfs_dir(data->drm_fd);
-
-	/* Go Green */
-	igt_plane_set_fb(data->primary, &data->fb_green);
-	igt_display_commit(&data->display);
-
-	/* It should be Green */
-	assert_color(dir, GREEN);
-
-	/* Go Red */
-	igt_plane_set_fb(data->primary, &data->fb_red);
-	igt_display_commit(&data->display);
-
-	/* It should be Red */
-	assert_color(dir, RED);
-
-	close(dir);
-}
-
-static void run_test(data_t *data)
-{
-	igt_display_t *display = &data->display;
-	igt_output_t *output;
-	drmModeModeInfo *mode;
-	enum pipe pipe;
-
-	for_each_pipe_with_valid_output(display, pipe, output) {
-		drmModeConnectorPtr c = output->config.connector;
-
-		if (c->connector_type != DRM_MODE_CONNECTOR_eDP)
-			continue;
-
-		igt_output_set_pipe(output, pipe);
-
-		mode = igt_output_get_mode(output);
-
-		igt_create_color_fb(data->drm_fd,
-				    mode->hdisplay, mode->vdisplay,
-				    DRM_FORMAT_XRGB8888,
-				    LOCAL_I915_FORMAT_MOD_X_TILED,
-				    0.0, 1.0, 0.0,
-				    &data->fb_green);
-
-		igt_create_color_fb(data->drm_fd,
-				    mode->hdisplay, mode->vdisplay,
-				    DRM_FORMAT_XRGB8888,
-				    LOCAL_I915_FORMAT_MOD_X_TILED,
-				    1.0, 0.0, 0.0,
-				    &data->fb_red);
-
-		data->primary = igt_output_get_plane_type(output, DRM_PLANE_TYPE_PRIMARY);
-
-		basic_sink_crc_check(data);
-		return;
-	}
-
-	igt_skip("no eDP with CRC support found\n");
-}
-
-igt_simple_main
-{
-	data_t data = {};
-
-	igt_skip_on_simulation();
-
-	data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
-
-	kmstest_set_vt_graphics_mode();
-	igt_display_init(&data.display, data.drm_fd);
-
-	run_test(&data);
-
-	igt_display_fini(&data.display);
-}
diff --git a/tests/meson.build b/tests/meson.build
index cedb4ff1..ad5cdb71 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -184,7 +184,6 @@ test_progs = [
 	'kms_rmfb',
 	'kms_rotation_crc',
 	'kms_setmode',
-	'kms_sink_crc_basic',
 	'kms_sysfs_edid_timing',
 	'kms_tv_load_detect',
 	'kms_universal_plane',
-- 
2.17.1



More information about the igt-dev mailing list