All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering
@ 2021-06-09 12:17 venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 02/11] tests/kms_dither: Validate dither after CC blocks venkata.sai.patnana
                   ` (11 more replies)
  0 siblings, 12 replies; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Nischal Varide, Petri Latvala

From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Many of the display devices have color format support less than
the color format of the input data (Ex: 8-bit input data and 6-bit
display color depth). Then the input data will be either truncated
or rounded, but this approach usually causes loss of detail and also
produce large banded areas of a single color that significantly
differs from the original image.

Dithering is a technique used to enhance these colors by creating the
illusion of smoothness by adjusting the nearby pixel color.
For Eg: Converting 8-bit to 6-bit by modifying the pixel information.

Dithering should be enabled when a panel color depth is lower than the
color depth of the framebuffer.

Even though feature Dithering is there since legacy, there is no
specific IGT for this. This patch will create New IGT for Dithering.
And below is the truth table for CRTC Dithering.

|----------------|---------|-------------|
|  Frame buffer  |  Panel  |  Dithering  |
|----------------|---------|-------------|
|      8 BPC     |  6 BPC  |     Yes     |
|----------------|---------|-------------|
|      8 BPC     |  8 BPC  |     No      |
|----------------|---------|-------------|
|      8 BPC     | 10 BPC  |     No      |
|----------------|---------|-------------|
|     10 BPC     |  6 BPC  |     Yes     |
|----------------|---------|-------------|
|     10 BPC     |  8 BPC  |     Yes     |
|----------------|---------|-------------|
|     10 BPC     | 10 BPC  |     No      |
|----------------|---------|-------------|
|     16 BPC     |  6 BPC  |     Yes     |
|----------------|---------|-------------|
|     16 BPC     |  8 BPC  |     Yes     |
|----------------|---------|-------------|
|     16 BPC     | 10 BPC  |     Yes     |
|----------------|---------|-------------|

Cc: Swati Sharma <swati2.sharma@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Nischal Varide <nischal.varide@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_dither.c | 250 +++++++++++++++++++++++++++++++++++++++++++++
 tests/meson.build  |   1 +
 2 files changed, 251 insertions(+)
 create mode 100644 tests/kms_dither.c

diff --git a/tests/kms_dither.c b/tests/kms_dither.c
new file mode 100644
index 0000000000..c25d623f81
--- /dev/null
+++ b/tests/kms_dither.c
@@ -0,0 +1,250 @@
+/*
+ * Copyright © 2020 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 COPYRIGHT HOLDER(S) OR AUTHOR(S) 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.
+ *
+ * Authors:
+ *     Bhanuprakash Modem <bhanuprakash.modem@intel.com>
+ *
+ */
+
+#include "igt.h"
+#include <fcntl.h>
+#include <termios.h>
+#include <unistd.h>
+
+IGT_TEST_DESCRIPTION("Test Dithering block status");
+
+/* Connector BPC */
+#define IGT_CONNECTOR_BPC_6		6
+#define IGT_CONNECTOR_BPC_8		8
+#define IGT_CONNECTOR_BPC_10		10
+#define IGT_CONNECTOR_BPC_12		12
+
+/* Framebuffer BPC */
+#define IGT_FRAME_BUFFER_BPC_8		8
+#define IGT_FRAME_BUFFER_BPC_10		10
+#define IGT_FRAME_BUFFER_BPC_16		16
+
+/* Common test data. */
+typedef struct data {
+	igt_display_t display;
+	igt_plane_t *primary;
+	igt_output_t *output;
+	igt_pipe_t *pipe;
+	drmModeModeInfo *mode;
+	enum pipe pipe_id;
+	int drm_fd;
+	igt_fb_t fb;
+} data_t;
+
+typedef struct {
+	unsigned int bpc;
+	unsigned int dither;
+} dither_status_t;
+
+/* Prepare test data. */
+static void prepare_test(data_t *data, igt_output_t *output, enum pipe pipe)
+{
+	igt_display_t *display = &data->display;
+
+	data->pipe_id = pipe;
+	data->pipe = &data->display.pipes[data->pipe_id];
+	igt_assert(data->pipe);
+
+	igt_display_reset(display);
+
+	data->output = output;
+	igt_assert(data->output);
+
+	data->mode = igt_output_get_mode(data->output);
+	igt_assert(data->mode);
+
+	data->primary =
+		igt_pipe_get_plane_type(data->pipe, DRM_PLANE_TYPE_PRIMARY);
+
+	igt_output_set_pipe(data->output, data->pipe_id);
+}
+
+/* Returns the current state of dithering from the crtc debugfs. */
+static dither_status_t get_dither_state(data_t *data)
+{
+	char buf[256];
+	char crtc_name[7];
+	char *start_loc;
+	int fd, res;
+	dither_status_t status;
+
+	snprintf(crtc_name, 7, "crtc-%d", data->pipe_id);
+	fd = igt_debugfs_open(data->drm_fd, crtc_name, O_RDONLY);
+	igt_assert(fd >= 0);
+
+	res = igt_debugfs_simple_read(fd, "dither", buf, sizeof(buf));
+	igt_require(res > 0);
+	close(fd);
+
+	igt_assert(start_loc = strstr(buf, "bpc: "));
+	igt_assert_eq(sscanf(start_loc, "bpc: %u", &status.bpc), 1);
+
+	igt_assert(start_loc = strstr(buf, "Dither: "));
+	igt_assert_eq(sscanf(start_loc, "Dither: %u", &status.dither), 1);
+
+	return status;
+}
+
+static void test_dithering(data_t *data, enum pipe pipe,
+			   igt_output_t *output,
+			   int fb_bpc, int fb_format,
+			   int output_bpc)
+{
+	igt_display_t *display = &data->display;
+	dither_status_t status;
+	int bpc;
+
+	igt_info("Dithering test execution on %s PIPE_%s\n",
+			output->name, kmstest_pipe_name(pipe));
+	prepare_test(data, output, pipe);
+
+	igt_assert(igt_create_fb(data->drm_fd, data->mode->hdisplay,
+				 data->mode->vdisplay, fb_format,
+				 LOCAL_DRM_FORMAT_MOD_NONE, &data->fb));
+	igt_plane_set_fb(data->primary, &data->fb);
+	igt_plane_set_size(data->primary, data->mode->hdisplay, data->mode->vdisplay);
+
+	bpc = igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC);
+	igt_output_set_prop_value(data->output, IGT_CONNECTOR_MAX_BPC, output_bpc);
+	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+
+	/*
+	 * Check the status of Dithering block:
+	 *
+	 * Preserve the result & compute later (after clean-up).
+	 * If fb_bpc is greater than output_bpc, Dithering should be enabled
+	 * Else disabled
+	 */
+	status = get_dither_state(data);
+
+	igt_debug("FB BPC:%d, Panel BPC:%d, Pipe BPC:%d, Expected Dither:%s, Actual result:%s\n",
+		  fb_bpc, output_bpc, status.bpc,
+		  (fb_bpc > output_bpc) ? "Enable": "Disable",
+		  status.dither ? "Enable": "Disable");
+
+       /*
+	* We must update the Connector max_bpc property back
+	* Otherwise, previously updated value will stay forever and
+	* may cause the failures for next/other subtests.
+	*/
+	igt_output_set_prop_value(data->output, IGT_CONNECTOR_MAX_BPC, bpc);
+	igt_plane_set_fb(data->primary, NULL);
+	igt_output_set_pipe(output, PIPE_NONE);
+	igt_display_commit2(display, display->is_atomic ? COMMIT_ATOMIC : COMMIT_LEGACY);
+	igt_remove_fb(data->drm_fd, &data->fb);
+
+	/* Check if crtc bpc is updated with requested one. */
+	igt_require_f((status.bpc == output_bpc),
+			"%s can support max %u-bpc, but requested %d-bpc\n",
+				output->name, status.bpc, output_bpc);
+
+	/* Compute the result. */
+	if (fb_bpc > output_bpc)
+		igt_assert_f(status.dither, "(fb_%dbpc > output_%dbpc): Dither should be enabled\n",
+				fb_bpc, output_bpc);
+	else
+		igt_assert_f(!status.dither, "(fb_%dbpc <= output_%dbpc): Dither should be disabled\n",
+				fb_bpc, output_bpc);
+
+	return;
+}
+
+/* Returns true if an output supports max bpc property & max_bpc >= requested. */
+static bool is_supported(igt_output_t *output, int bpc)
+{
+        return igt_output_has_prop(output, IGT_CONNECTOR_MAX_BPC) &&
+		(igt_output_get_prop(output, IGT_CONNECTOR_MAX_BPC) >= bpc);
+}
+
+static void
+run_dither_test(data_t *data, int fb_bpc, int fb_format, int output_bpc)
+{
+	igt_output_t *output;
+	igt_display_t *display = &data->display;
+
+	for_each_connected_output(display, output) {
+		enum pipe pipe;
+
+		if (!is_supported(output, output_bpc))
+			continue;
+
+		if ((strstr(output->name, "HDMI") != NULL) &&
+		    (output_bpc == IGT_CONNECTOR_BPC_6))
+			continue;
+
+		for_each_pipe(display, pipe) {
+			if (igt_pipe_connector_valid(pipe, output)) {
+				igt_dynamic_f("%s-pipe-%s", output->name, kmstest_pipe_name(pipe))
+					test_dithering(data, pipe, output, fb_bpc,
+							fb_format, output_bpc);
+
+				/* One pipe is enough */
+				break;
+			}
+		}
+	}
+}
+
+igt_main
+{
+	struct {
+		int fb_bpc;
+		int format;
+		int output_bpc;
+	} tests[] = {
+		{ IGT_FRAME_BUFFER_BPC_8, DRM_FORMAT_XRGB8888, IGT_CONNECTOR_BPC_6 },
+		{ IGT_FRAME_BUFFER_BPC_8, DRM_FORMAT_XRGB8888, IGT_CONNECTOR_BPC_8 },
+	};
+	int i;
+	data_t data = { 0 };
+
+	igt_fixture {
+		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
+		kmstest_set_vt_graphics_mode();
+
+		igt_display_require(&data.display, data.drm_fd);
+		igt_display_require_output(&data.display);
+	}
+
+	for (i = 0; i < ARRAY_SIZE(tests); i++) {
+		igt_describe_f("Framebuffer BPC:%d, Panel BPC:%d, Expected Dither:%s\n",
+			       tests[i].fb_bpc, tests[i].output_bpc,
+			       (tests[i].fb_bpc > tests[i].output_bpc) ?
+							"Enable": "Disable");
+
+		igt_subtest_with_dynamic_f("FB-%dBPC-Vs-Panel-%dBPC",
+				tests[i].fb_bpc, tests[i].output_bpc)
+			run_dither_test(&data,
+					tests[i].fb_bpc,
+					tests[i].format,
+					tests[i].output_bpc);
+	}
+
+	igt_fixture {
+		igt_display_fini(&data.display);
+	}
+}
diff --git a/tests/meson.build b/tests/meson.build
index 19cc4ebe0d..ff3979207d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -28,6 +28,7 @@ test_progs = [
 	'kms_cursor_crc',
 	'kms_cursor_edge_walk',
 	'kms_cursor_legacy',
+	'kms_dither',
 	'kms_dp_aux_dev',
 	'kms_dp_dsc',
 	'kms_dp_tiled_display',
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 02/11] tests/kms_dither: Validate dither after CC blocks
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present venkata.sai.patnana
                   ` (10 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Nischal Varide, Petri Latvala

From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

Dithering after all CC blocks will be enabled only if the panel
supports 12 BPC (or more) and the Framebuffer BPC is greater than
12 BPC. And legacy dither block (at the end of PIPE) should be
disabled to avoid double dithering.

This patch will extend the support to validate Dither after all
color conversion (CC) blocks.

Cc: Swati Sharma <swati2.sharma@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Nischal Varide <nischal.varide@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_dither.c | 40 +++++++++++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index c25d623f81..1ff07914f4 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -57,7 +57,8 @@ typedef struct data {
 
 typedef struct {
 	unsigned int bpc;
-	unsigned int dither;
+	unsigned int legacy;
+	unsigned int cc1;
 } dither_status_t;
 
 /* Prepare test data. */
@@ -104,7 +105,10 @@ static dither_status_t get_dither_state(data_t *data)
 	igt_assert_eq(sscanf(start_loc, "bpc: %u", &status.bpc), 1);
 
 	igt_assert(start_loc = strstr(buf, "Dither: "));
-	igt_assert_eq(sscanf(start_loc, "Dither: %u", &status.dither), 1);
+	igt_assert_eq(sscanf(start_loc, "Dither: %u", &status.legacy), 1);
+
+	igt_assert(start_loc = strstr(buf, "Dither_CC1: "));
+	igt_assert_eq(sscanf(start_loc, "Dither_CC1: %u", &status.cc1), 1);
 
 	return status;
 }
@@ -141,10 +145,10 @@ static void test_dithering(data_t *data, enum pipe pipe,
 	 */
 	status = get_dither_state(data);
 
-	igt_debug("FB BPC:%d, Panel BPC:%d, Pipe BPC:%d, Expected Dither:%s, Actual result:%s\n",
-		  fb_bpc, output_bpc, status.bpc,
-		  (fb_bpc > output_bpc) ? "Enable": "Disable",
-		  status.dither ? "Enable": "Disable");
+	igt_debug("FB BPC:%d, Panel BPC:%d, Pipe BPC:%d, "
+		  "Dither at end of the pipe:%u, Dither after CC1:%u\n",
+			fb_bpc, output_bpc, status.bpc,
+			status.legacy, status.cc1);
 
        /*
 	* We must update the Connector max_bpc property back
@@ -163,12 +167,25 @@ static void test_dithering(data_t *data, enum pipe pipe,
 				output->name, status.bpc, output_bpc);
 
 	/* Compute the result. */
-	if (fb_bpc > output_bpc)
-		igt_assert_f(status.dither, "(fb_%dbpc > output_%dbpc): Dither should be enabled\n",
-				fb_bpc, output_bpc);
-	else
-		igt_assert_f(!status.dither, "(fb_%dbpc <= output_%dbpc): Dither should be disabled\n",
+	if (fb_bpc > output_bpc) {
+		if (output_bpc < IGT_CONNECTOR_BPC_12)
+			igt_assert_f((status.legacy && !status.cc1),
+					"(fb_%dbpc > output_%dbpc): Dither should be "
+					"enabled at end of the PIPE & "
+					"disbaled at the CC1.\n",
+					fb_bpc, output_bpc);
+		else
+			igt_assert_f((!status.legacy && status.cc1),
+					"(fb_%dbpc > output_%dbpc): Dither should be "
+					"disabled at end of the PIPE & "
+					"enabled at the CC1.\n",
+					fb_bpc, output_bpc);
+	} else {
+		igt_assert_f((!status.legacy && !status.cc1),
+				"(fb_%dbpc <= output_%dbpc): Dither should be "
+				"disabled at both places (end of the PIPE & CC1).\n",
 				fb_bpc, output_bpc);
+	}
 
 	return;
 }
@@ -218,6 +235,7 @@ igt_main
 	} tests[] = {
 		{ IGT_FRAME_BUFFER_BPC_8, DRM_FORMAT_XRGB8888, IGT_CONNECTOR_BPC_6 },
 		{ IGT_FRAME_BUFFER_BPC_8, DRM_FORMAT_XRGB8888, IGT_CONNECTOR_BPC_8 },
+		{ IGT_FRAME_BUFFER_BPC_16, DRM_FORMAT_XRGB16161616F, IGT_CONNECTOR_BPC_12 },
 	};
 	int i;
 	data_t data = { 0 };
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 02/11] tests/kms_dither: Validate dither after CC blocks venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  7:41   ` Petri Latvala
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind venkata.sai.patnana
                   ` (9 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Nischal Varide, Petri Latvala

From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>

As Dither_CC1 debugfs changes are not preset on older platforms, we need
not to abort the test. So if the debugfs is not present, just consider
the value as zero.

Cc: Uma Shankar <uma.shankar@intel.com>
Cc: Nischal Varide <nischal.varide@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
---
 tests/kms_dither.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/tests/kms_dither.c b/tests/kms_dither.c
index 1ff07914f4..b1f0503a6c 100644
--- a/tests/kms_dither.c
+++ b/tests/kms_dither.c
@@ -107,8 +107,11 @@ static dither_status_t get_dither_state(data_t *data)
 	igt_assert(start_loc = strstr(buf, "Dither: "));
 	igt_assert_eq(sscanf(start_loc, "Dither: %u", &status.legacy), 1);
 
-	igt_assert(start_loc = strstr(buf, "Dither_CC1: "));
-	igt_assert_eq(sscanf(start_loc, "Dither_CC1: %u", &status.cc1), 1);
+	start_loc = strstr(buf, "Dither_CC1: ");
+	if (!start_loc)
+		status.cc1 = 0;
+	else
+		igt_assert_eq(sscanf(start_loc, "Dither_CC1: %u", &status.cc1), 1);
 
 	return status;
 }
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 02/11] tests/kms_dither: Validate dither after CC blocks venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  7:32   ` Janusz Krzysztofik
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: " venkata.sai.patnana
                   ` (8 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Kai Vehmanen

From: Uma Shankar <uma.shankar@intel.com>

Unload the snd module before unbinding i915. Audio holds a wakeref which
triggers a warning otherwise, resulting in below warning and test failure.
Currently HSW/BDW and DG1 are the platforms affected, can be extended to
other platforms as well.

<4> [137.001006] ------------[ cut here ]------------
<4> [137.001010] i915 0000:00:02.0: i915 raw-wakerefs=1 wakelocks=1 on cleanup
<4> [137.001076] WARNING: CPU: 0 PID: 1417 at drivers/gpu/drm/i915/intel_runtime_pm.c:619 intel_runtime_pm_driver_release+0x56/0x60 [i915]
<4> [137.001078] Modules linked in: snd_hda_intel i915 snd_hda_codec_hdmi mei_hdcp intel_pmt_telemetry intel_pmt_core x86_pkg_temp_thermal coretemp smsc75xx crct10dif_pclmul usbnet crc32_pclmul mii ghash_clmulni_intel kvm_intel e1000e snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core ptp pps_core mei_me snd_pcm mei prime_numbers intel_pmt [last unloaded: i915]
<4> [137.001095] CPU: 0 PID: 1417 Comm: kworker/u16:7 Tainted: G U 5.9.0-g79478e23b1878-DII_3204+ #1
<4> [137.001097] Hardware name: Intel Corporation Tiger Lake Client Platform/TigerLake U DDR4 SODIMM RVP, BIOS TGLSFWI1.R00.3197.A00.2005110542 05/11/2020
<4> [137.001102] Workqueue: events_unbound async_run_entry_fn
<4> [137.001140] RIP: 0010:intel_runtime_pm_driver_release+0x56/0x60 [i915]
<4> [137.001142] Code: fd 10 4c 8b 67 50 4d 85 e4 75 03 4c 8b 27 e8 91 59 58 e1 45 89 e8 89 e9 4c 89 e2 48 89 c6 48 c7 c7 b0 f3 48 a0 e8 55 25 ef e0 <0f> 0b eb b5 66 0f 1f 44 00 00 48 8b 87 88 45 ff ff b9 02 00 00 00
<4> [137.001144] RSP: 0018:ffffc900007dbd68 EFLAGS: 00010286
<4> [137.001147] RAX: 0000000000000000 RBX: ffff88847338bea8 RCX: 0000000000000001
<4> [137.001148] RDX: 0000000080000001 RSI: ffffffff823efa86 RDI: 00000000ffffffff
<4> [137.001150] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001
<4> [137.001152] R10: 000000009bda34df R11: 00000000e2a8a89a R12: ffff88849b209880
<4> [137.001153] R13: 0000000000000001 R14: ffff88847338bea8 R15: ffff88847338fcc0
<4> [137.001155] FS: 0000000000000000(0000) GS:ffff8884a0600000(0000) knlGS:0000000000000000
<4> [137.001157] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4> [137.001159] CR2: 00007fc03597dd88 CR3: 0000000006610005 CR4: 0000000000770ef0
<4> [137.001160] PKRU: 55555554
<4> [137.001162] Call Trace:
<4> [137.001199] i915_drm_suspend_late+0x102/0x120 [i915]
<4> [137.001204] ? pci_pm_poweroff_late+0x30/0x30
<4> [137.001209] dpm_run_callback+0x61/0x270
<4> [137.001214] __device_suspend_late+0x8b/0x180
<4> [137.001217] async_suspend_late+0x15/0x90
<4> [137.001220] async_run_entry_fn+0x34/0x160
<4> [137.001224] process_one_work+0x26c/0x5c0
<4> [137.001231] worker_thread+0x37/0x380
<4> [137.001235] ? process_one_work+0x5c0/0x5c0
<4> [137.001238] kthread+0x149/0x170
<4> [137.001241] ? kthread_park+0x80/0x80
<4> [137.001246] ret_from_fork+0x1f/0x30
<4> [137.001256] irq event stamp: 2329

Cc: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Cc: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 tests/device_reset.c | 61 +++++++++++++++++++++++++++++++++-----------
 1 file changed, 46 insertions(+), 15 deletions(-)

diff --git a/tests/device_reset.c b/tests/device_reset.c
index eef707330c..e6a468e6fa 100644
--- a/tests/device_reset.c
+++ b/tests/device_reset.c
@@ -5,11 +5,13 @@
 #include <fcntl.h>
 #include <sys/ioctl.h>
 #include <sys/stat.h>
+#include <signal.h>
 
 #include "i915/gem.h"
 #include "igt.h"
 #include "igt_device_scan.h"
 #include "igt_sysfs.h"
+#include "igt_kmod.h"
 
 IGT_TEST_DESCRIPTION("Examine behavior of a driver on device sysfs reset");
 
@@ -28,6 +30,7 @@ struct device_fds {
 		int drv_dir;
 	} fds;
 	char dev_bus_addr[DEV_BUS_ADDR_LEN];
+	bool snd_unload;
 };
 
 static int __open_sysfs_dir(int fd, const char* path)
@@ -82,6 +85,7 @@ static void init_device_fds(struct device_fds *dev)
 {
 	char dev_path[PATH_MAX];
 	char *addr_pos;
+	uint32_t devid;
 
 	igt_debug("open device\n");
 	/**
@@ -91,9 +95,18 @@ static void init_device_fds(struct device_fds *dev)
 	 */
 	dev->fds.dev = __drm_open_driver(DRIVER_ANY);
 	igt_assert_fd(dev->fds.dev);
-	if (is_i915_device(dev->fds.dev))
+	if (is_i915_device(dev->fds.dev)) {
 		igt_require_gem(dev->fds.dev);
 
+		devid = intel_get_drm_devid(dev->fds.dev);
+		if ((IS_HASWELL(devid) || IS_BROADWELL(devid) ||
+		     IS_DG1(devid)) &&
+		     (igt_kmod_is_loaded("snd_hda_intel"))) {
+			igt_debug("Enable WA to unload snd driver\n");
+			dev->snd_unload = true;
+		}
+	}
+
 	igt_assert(device_sysfs_path(dev->fds.dev, dev_path));
 	addr_pos = strrchr(dev_path, '/');
 	igt_assert(addr_pos);
@@ -164,6 +177,34 @@ static bool is_sysfs_reset_supported(int fd)
 /* Unbind the driver from the device */
 static void driver_unbind(struct device_fds *dev)
 {
+	/**
+	 * FIXME: Unbinding the i915 driver on affected platforms with
+	 * audio results in a kernel WARN on "i915 raw-wakerefs=1
+	 * wakelocks=1 on cleanup". The below CI friendly user level
+	 * workaround to unload and de-couple audio from IGT testing,
+	 * prevents the warning from appearing. Drop this hack as soon
+	 * as this is fixed in the kernel. unbind/re-bind validation
+	 * on audio side is not robust and we could have potential
+	 * failures blocking display CI, currently this seems to the
+	 * safest and easiest way out.
+	 */
+	if (dev->snd_unload) {
+		igt_terminate_process(SIGTERM, "alsactl");
+
+		/* unbind snd_hda_intel */
+		kick_snd_hda_intel();
+
+		if (igt_kmod_unload("snd_hda_intel", 0)) {
+			dev->snd_unload = false;
+			igt_warn("Could not unload snd_hda_intel\n");
+			igt_kmod_list_loaded();
+			igt_lsof("/dev/snd");
+			igt_skip("Audio is in use, skipping\n");
+		} else {
+			igt_warn("Preventively unloaded snd_hda_intel\n");
+		}
+	}
+
 	igt_debug("unbind the driver from the device\n");
 	igt_assert(igt_sysfs_set(dev->fds.drv_dir, "unbind",
 		   dev->dev_bus_addr));
@@ -175,6 +216,9 @@ static void driver_bind(struct device_fds *dev)
 	igt_debug("rebind the driver to the device\n");
 	igt_abort_on_f(!igt_sysfs_set(dev->fds.drv_dir, "bind",
 		       dev->dev_bus_addr), "driver rebind failed");
+
+	if (dev->snd_unload)
+		igt_kmod_load("snd_hda_intel", NULL);
 }
 
 /* Initiate device reset */
@@ -235,19 +279,6 @@ static void unbind_reset_rebind(struct device_fds *dev)
 	igt_debug("close the device\n");
 	close_if_opened(&dev->fds.dev);
 
-	/**
-	 * FIXME: Unbinding the i915 driver on some platforms with Azalia audio
-	 * results in a kernel WARN on "i915 raw-wakerefs=1 wakelocks=1 on cleanup".
-	 * The below CI friendly user level workaround prevents the warning from
-	 * appearing. Drop this hack as soon as this is fixed in the kernel.
-	 */
-	if (is_i915_device(dev->fds.dev)) {
-		uint32_t devid = intel_get_drm_devid(dev->fds.dev);
-		if (igt_warn_on_f(IS_HASWELL(devid) || IS_BROADWELL(devid),
-		    "Manually enabling audio PM to work around a kernel WARN\n"))
-			igt_pm_enable_audio_runtime_pm();
-	}
-
 	driver_unbind(dev);
 
 	initiate_device_reset(dev);
@@ -257,7 +288,7 @@ static void unbind_reset_rebind(struct device_fds *dev)
 
 igt_main
 {
-	struct device_fds dev = { .fds = {-1, -1, -1}, .dev_bus_addr = {0}};
+	struct device_fds dev = { .fds = {-1, -1, -1}, .dev_bus_addr = {0}, };
 
 	igt_fixture {
 		char dev_path[PATH_MAX];
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: Unload snd driver before i915 unbind
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (2 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  7:37   ` Janusz Krzysztofik
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode venkata.sai.patnana
                   ` (7 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Kai Vehmanen

From: Uma Shankar <uma.shankar@intel.com>

Unload the snd module before unbinding i915. Audio holds a wakeref
which triggers a warning otherwise, resulting in below warning and
test failure. Currently HSW/BDW and DG1 are the platforms affected,
can be extended to other platforms as well.

<4> [137.001006] ------------[ cut here ]------------
<4> [137.001010] i915 0000:00:02.0: i915 raw-wakerefs=1 wakelocks=1 on cleanup
<4> [137.001076] WARNING: CPU: 0 PID: 1417 at drivers/gpu/drm/i915/intel_runtime_pm.c:619 intel_runtime_pm_driver_release+0x56/0x60 [i915]
<4> [137.001078] Modules linked in: snd_hda_intel i915 snd_hda_codec_hdmi mei_hdcp intel_pmt_telemetry intel_pmt_core x86_pkg_temp_thermal coretemp smsc75xx crct10dif_pclmul usbnet crc32_pclmul mii ghash_clmulni_intel kvm_intel e1000e snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core ptp pps_core mei_me snd_pcm mei prime_numbers intel_pmt [last unloaded: i915]
<4> [137.001095] CPU: 0 PID: 1417 Comm: kworker/u16:7 Tainted: G U 5.9.0-g79478e23b1878-DII_3204+ #1
<4> [137.001097] Hardware name: Intel Corporation Tiger Lake Client Platform/TigerLake U DDR4 SODIMM RVP, BIOS TGLSFWI1.R00.3197.A00.2005110542 05/11/2020
<4> [137.001102] Workqueue: events_unbound async_run_entry_fn
<4> [137.001140] RIP: 0010:intel_runtime_pm_driver_release+0x56/0x60 [i915]
<4> [137.001142] Code: fd 10 4c 8b 67 50 4d 85 e4 75 03 4c 8b 27 e8 91 59 58 e1 45 89 e8 89 e9 4c 89 e2 48 89 c6 48 c7 c7 b0 f3 48 a0 e8 55 25 ef e0 <0f> 0b eb b5 66 0f 1f 44 00 00 48 8b 87 88 45 ff ff b9 02 00 00 00
<4> [137.001144] RSP: 0018:ffffc900007dbd68 EFLAGS: 00010286
<4> [137.001147] RAX: 0000000000000000 RBX: ffff88847338bea8 RCX: 0000000000000001
<4> [137.001148] RDX: 0000000080000001 RSI: ffffffff823efa86 RDI: 00000000ffffffff
<4> [137.001150] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001
<4> [137.001152] R10: 000000009bda34df R11: 00000000e2a8a89a R12: ffff88849b209880
<4> [137.001153] R13: 0000000000000001 R14: ffff88847338bea8 R15: ffff88847338fcc0
<4> [137.001155] FS: 0000000000000000(0000) GS:ffff8884a0600000(0000) knlGS:0000000000000000
<4> [137.001157] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
<4> [137.001159] CR2: 00007fc03597dd88 CR3: 0000000006610005 CR4: 0000000000770ef0
<4> [137.001160] PKRU: 55555554
<4> [137.001162] Call Trace:
<4> [137.001199] i915_drm_suspend_late+0x102/0x120 [i915]
<4> [137.001204] ? pci_pm_poweroff_late+0x30/0x30
<4> [137.001209] dpm_run_callback+0x61/0x270
<4> [137.001214] __device_suspend_late+0x8b/0x180
<4> [137.001217] async_suspend_late+0x15/0x90
<4> [137.001220] async_run_entry_fn+0x34/0x160
<4> [137.001224] process_one_work+0x26c/0x5c0
<4> [137.001231] worker_thread+0x37/0x380
<4> [137.001235] ? process_one_work+0x5c0/0x5c0
<4> [137.001238] kthread+0x149/0x170
<4> [137.001241] ? kthread_park+0x80/0x80
<4> [137.001246] ret_from_fork+0x1f/0x30
<4> [137.001256] irq event stamp: 2329

Cc: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Cc: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Signed-off-by: Uma Shankar <uma.shankar@intel.com>
---
 tests/core_hotunplug.c | 53 +++++++++++++++++++++++++++++++-----------
 1 file changed, 40 insertions(+), 13 deletions(-)

diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c
index a639cfb4b4..878efcc7bf 100644
--- a/tests/core_hotunplug.c
+++ b/tests/core_hotunplug.c
@@ -29,6 +29,7 @@
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <unistd.h>
+#include <signal.h>
 
 #include "i915/gem.h"
 #include "i915/gem_create.h"
@@ -53,6 +54,7 @@ struct hotunplug {
 	const char *failure;
 	bool need_healthcheck;
 	bool has_intel_perf;
+	bool snd_unload;
 };
 
 /* Helpers */
@@ -138,6 +140,34 @@ static void prepare(struct hotunplug *priv)
 static void driver_unbind(struct hotunplug *priv, const char *prefix,
 			  int timeout)
 {
+	/**
+	 * FIXME: Unbinding the i915 driver on affected platforms with
+	 * audio results in a kernel WARN on "i915 raw-wakerefs=1
+	 * wakelocks=1 on cleanup". The below CI friendly user level
+	 * workaround to unload and de-couple audio from IGT testing,
+	 * prevents the warning from appearing. Drop this hack as soon
+	 * as this is fixed in the kernel. unbind/re-bind validation
+	 * on audio side is not robust and we could have potential
+	 * failures blocking display CI, currently this seems to the
+	 * safest and easiest way out.
+	 */
+	if (priv->snd_unload) {
+		igt_terminate_process(SIGTERM, "alsactl");
+
+		/* unbind snd_hda_intel */
+		kick_snd_hda_intel();
+
+		if (igt_kmod_unload("snd_hda_intel", 0)) {
+			priv->snd_unload = false;
+			igt_warn("Could not unload snd_hda_intel\n");
+			igt_kmod_list_loaded();
+			igt_lsof("/dev/snd");
+			igt_skip("Audio is in use, skipping\n");
+		} else {
+			igt_warn("Preventively unloaded snd_hda_intel\n");
+		}
+	}
+
 	local_debug("%sunbinding the driver from the device\n", prefix);
 	priv->failure = "Driver unbind failure!";
 
@@ -166,6 +196,9 @@ static void driver_bind(struct hotunplug *priv, int timeout)
 	igt_fail_on_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr,
 				F_OK, 0),
 		      "Rebound device not present!\n");
+
+	if (priv->snd_unload)
+		igt_kmod_load("snd_hda_intel", NULL);
 }
 
 /* Remove (virtually unplug) the device from its bus */
@@ -574,6 +607,7 @@ igt_main
 		.failure	= NULL,
 		.need_healthcheck = true,
 		.has_intel_perf = false,
+		.snd_unload	= false,
 	};
 
 	igt_fixture {
@@ -585,23 +619,16 @@ igt_main
 		if (is_i915_device(fd_drm)) {
 			uint32_t devid = intel_get_drm_devid(fd_drm);
 
+			if ((IS_HASWELL(devid) || IS_BROADWELL(devid) ||
+			     IS_DG1(devid)) && (igt_kmod_is_loaded("snd_hda_intel"))) {
+				igt_debug("Enable WA to unload snd driver\n");
+				priv.snd_unload = true;
+			}
+
 			gem_quiescent_gpu(fd_drm);
 			igt_require_gem(fd_drm);
 
 			priv.has_intel_perf = local_i915_perf_healthcheck(fd_drm);
-
-			/**
-			 * FIXME: Unbinding the i915 driver on some Haswell
-			 * platforms with Azalia audio results in a kernel WARN
-			 * on "i915 raw-wakerefs=1 wakelocks=1 on cleanup".  The
-			 * below CI friendly user level workaround prevents the
-			 * warning from appearing.  Drop this hack as soon as
-			 * this is fixed in the kernel.
-			 */
-			if (igt_warn_on_f(IS_HASWELL(devid) ||
-					  IS_BROADWELL(devid),
-			    "Manually enabling audio PM to work around a kernel WARN\n"))
-				igt_pm_enable_audio_runtime_pm();
 		}
 
 		/* Make sure subtests always reopen the same device */
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (3 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: " venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  7:42   ` Petri Latvala
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete venkata.sai.patnana
                   ` (6 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Mohammed Khajapasha, Petri Latvala

From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>

Skip prune stale mode test when 1400x1050 mode is not set
in mode list for pruning. Some platforms have PLL programming
restrictions that will force the driver to prune modes
using less-common link rates.

Cc: Matt Roper <matthew.d.roper@intel.com>
Cc: Petri Latvala <petri.latvala@intel.com>
Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
---
 tests/kms_force_connector_basic.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
index a79cad03ab..3b0146fe97 100644
--- a/tests/kms_force_connector_basic.c
+++ b/tests/kms_force_connector_basic.c
@@ -316,7 +316,7 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
 			    temp->modes[i].vdisplay == 1050)
 				break;
 		}
-		igt_assert_f(i != temp->count_modes, "1400x1050 not on mode list\n");
+		igt_require_f(i != temp->count_modes, "1400x1050 not on mode list\n");
 
 		drmModeFreeConnector(temp);
 
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (4 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  7:54   ` Petri Latvala
  2021-06-10 12:31   ` Ruhl, Michael J
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test " venkata.sai.patnana
                   ` (5 subsequent siblings)
  11 siblings, 2 replies; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Mohammed Khajapasha

From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>

Create framebuffer object from lmem for discrete file descriptor
The framebuffer backing object should be from local memory for discrete.

Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
---
 lib/ioctl_wrappers.c | 22 ++++++++++++++++++++++
 lib/ioctl_wrappers.h |  1 +
 tests/kms_big_fb.c   |  7 ++++---
 tests/kms_getfb.c    |  2 +-
 4 files changed, 28 insertions(+), 4 deletions(-)

diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
index 619d288a8a..48526d29cf 100644
--- a/lib/ioctl_wrappers.c
+++ b/lib/ioctl_wrappers.c
@@ -594,6 +594,28 @@ void gem_sync(int fd, uint32_t handle)
 	errno = 0;
 }
 
+/**
+ * gem_buffer_create_fb_obj:
+ * @fd: open i915 drm file descriptor
+ * @size: desired size of the buffer
+ *
+ * This wraps the GEM_CREATE ioctl, which allocates a new gem buffer object of
+ * @size from file descriptor specific region
+ *
+ * Returns: The file-private handle of the created buffer object
+ */
+uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size)
+{
+	uint32_t handle;
+
+	if (gem_has_lmem(fd))
+		handle = gem_create_in_memory_regions(fd, size, REGION_LMEM(0));
+	else
+		handle = gem_create(fd, size);
+
+	return handle;
+}
+
 /**
  * __gem_execbuf:
  * @fd: open i915 drm file descriptor
diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
index 36640e302f..a8274a3f48 100644
--- a/lib/ioctl_wrappers.h
+++ b/lib/ioctl_wrappers.h
@@ -79,6 +79,7 @@ int __gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
 void gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
 int gem_wait(int fd, uint32_t handle, int64_t *timeout_ns);
 void gem_sync(int fd, uint32_t handle);
+uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size);
 void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
 int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
 void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
index 81bf054299..0ea076706f 100644
--- a/tests/kms_big_fb.c
+++ b/tests/kms_big_fb.c
@@ -470,7 +470,8 @@ test_size_overflow(data_t *data)
 	igt_require(data->max_fb_width >= 16383 &&
 		    data->max_fb_height >= 16383);
 
-	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
+	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
+
 	igt_require(bo);
 
 	ret = __kms_addfb(data->drm_fd, bo,
@@ -508,7 +509,7 @@ test_size_offset_overflow(data_t *data)
 					       DRM_FORMAT_NV12,
 					       data->modifier));
 
-	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
+	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
 	igt_require(bo);
 
 	offsets[0] = 0;
@@ -567,7 +568,7 @@ test_addfb(data_t *data)
 			 format, data->modifier,
 			 &size, &strides[0]);
 
-	bo = gem_create(data->drm_fd, size);
+	bo = gem_buffer_create_fb_obj(data->drm_fd, size);
 	igt_require(bo);
 
 	if (intel_display_ver(data->devid) < 4)
diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
index 14be74d6e8..75f5f30c88 100644
--- a/tests/kms_getfb.c
+++ b/tests/kms_getfb.c
@@ -128,7 +128,7 @@ static void get_ccs_fb(int fd, struct drm_mode_fb_cmd2 *ret)
 		size += add.pitches[1] * ALIGN(ALIGN(add.height, 16) / 16, 32);
 	}
 
-	add.handles[0] = gem_create(fd, size);
+	add.handles[0] = gem_buffer_create_fb_obj(fd, size);
 	igt_require(add.handles[0] != 0);
 	add.handles[1] = add.handles[0];
 
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (5 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  8:08   ` Petri Latvala
  2021-06-10 12:30   ` Ruhl, Michael J
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once venkata.sai.patnana
                   ` (4 subsequent siblings)
  11 siblings, 2 replies; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Mohammed Khajapasha, Petri, Latvala

From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>

Add invalid buffer object test case for discrete, to validate
IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
gem objects should be from local memory for discrete.

Cc: Latvala, Petri <petri.latvala@intel.com>
Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
---
 tests/kms_addfb_basic.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
index 1fb18d668f..aac74a7568 100644
--- a/tests/kms_addfb_basic.c
+++ b/tests/kms_addfb_basic.c
@@ -40,6 +40,7 @@
 
 #include "igt_rand.h"
 #include "igt_device.h"
+#include "i915/intel_memory_region.h"
 
 uint32_t gem_bo;
 uint32_t gem_bo_small;
@@ -146,6 +147,21 @@ static void invalid_tests(int fd)
 		igt_assert(f.modifier[0] == 0);
 	}
 
+	igt_subtest("invalid-smem-bo-on-discrete") {
+		int devid;
+		uint32_t handle, stride;
+		uint64_t size;
+
+		igt_require_intel(fd);
+		devid = intel_get_drm_devid(fd);
+		igt_require(gem_has_lmem(devid));
+		igt_calc_fb_size(fd, f.width, f.height,
+				DRM_FORMAT_XRGB8888, 0, &size, &stride);
+		handle = gem_create_in_memory_regions(fd, size, REGION_SMEM);
+		f.handles[0] = handle;
+		do_ioctl_err(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f, EREMOTE);
+	}
+
 	igt_describe("Check if addfb2 call works for legacy formats");
 	igt_subtest("legacy-format") {
 		struct {
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (6 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test " venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  6:07   ` Karthik B S
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 10/11] tests/kms_big_fb: Add max HW stride length tests venkata.sai.patnana
                   ` (3 subsequent siblings)
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev

From: Patnana Venkata Sai <venkata.sai.patnana@intel.com>

Instead of doing a debugfs_simple_read and then
a debugfs_read(), lets read the debugfs node just once.
We anyway get the suitable return from the following
strstr operation

Signed-off-by: Patnana Venkata Sai <venkata.sai.patnana@intel.com>
Cc: Karthik B S <karthik.b.s@intel.com>
Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
Cc: Navare Manasi D <manasi.d.navare@intel.com>
---
 tests/kms_dp_dsc.c | 2 --
 1 file changed, 2 deletions(-)

diff --git a/tests/kms_dp_dsc.c b/tests/kms_dp_dsc.c
index 2446fd82bb..8bd2102447 100644
--- a/tests/kms_dp_dsc.c
+++ b/tests/kms_dp_dsc.c
@@ -80,8 +80,6 @@ static bool is_dp_dsc_supported(data_t *data)
 
 	strcpy(file_name, data->conn_name);
 	strcat(file_name, "/i915_dsc_fec_support");
-	igt_require(igt_debugfs_simple_read(data->debugfs_fd, file_name, buf,
-					    sizeof(buf)) > 0);
 	igt_debugfs_read(data->drm_fd, file_name, buf);
 
 	return strstr(buf, "DSC_Sink_Support: yes");
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 10/11] tests/kms_big_fb: Add max HW stride length tests
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (7 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test venkata.sai.patnana
                   ` (2 subsequent siblings)
  11 siblings, 0 replies; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Juha-Pekka Heikkilä

From: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>

Test maximum HW stride lengths. On Intel HW from gen5 up to
Gen10 maximum HW stride length is 32K. On Gen11 when using
64bpp formats strides can reach up to 64k. These test try
exact maximum HW strides so gtt remapping will not come in
play.

Cc: Uma Shankar <uma.shankar@intel.com>
Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>
---
 tests/kms_big_fb.c | 154 ++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 146 insertions(+), 8 deletions(-)

diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
index 0ea076706f..65565127fd 100644
--- a/tests/kms_big_fb.c
+++ b/tests/kms_big_fb.c
@@ -50,6 +50,11 @@ typedef struct {
 	igt_render_copyfunc_t render_copy;
 	struct buf_ops *bops;
 	struct intel_bb *ibb;
+	bool max_hw_stride_test;
+	int hw_stride;
+	int max_hw_fb_width;
+	uint32_t format_override;
+	uint32_t stride_override;
 } data_t;
 
 static struct intel_buf *init_buf(data_t *data,
@@ -83,6 +88,38 @@ static void fini_buf(struct intel_buf *buf)
 	intel_buf_destroy(buf);
 }
 
+static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
+		     uint32_t height, uint64_t format, uint64_t modifier, uint64_t stride)
+{
+	struct drm_mode_fb_cmd2 f = {0};
+	cairo_t *cr;
+
+	newfb->strides[0] = stride;
+	igt_create_bo_for_fb(data->drm_fd, width, height, format, modifier,
+			     newfb);
+
+	igt_assert(newfb->gem_handle > 0);
+
+	f.width = newfb->width;
+	f.height = newfb->height;
+	f.pixel_format = newfb->drm_format;
+	f.flags = LOCAL_DRM_MODE_FB_MODIFIERS;
+
+	for (int n = 0; n < newfb->num_planes; n++) {
+		f.handles[n] = newfb->gem_handle;
+		f.modifier[n] = newfb->modifier;
+		f.pitches[n] = newfb->strides[n];
+		f.offsets[n] = newfb->offsets[n];
+	}
+
+	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 0, 0);
+	igt_put_cairo_ctx(cr);
+
+	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
+	newfb->fb_id = f.fb_id;
+}
+
 static void copy_pattern(data_t *data,
 			 struct igt_fb *dst_fb, int dx, int dy,
 			 struct igt_fb *src_fb, int sx, int sy,
@@ -178,9 +215,6 @@ static void max_fb_size(data_t *data, int *width, int *height,
 	uint64_t size;
 	int i = 0;
 
-	*width = data->max_fb_width;
-	*height = data->max_fb_height;
-
 	/* max fence stride is only 8k bytes on gen3 */
 	if (intel_display_ver(data->devid) < 4 &&
 	    format == DRM_FORMAT_XRGB8888)
@@ -209,10 +243,17 @@ static void prep_fb(data_t *data)
 	if (data->big_fb.fb_id)
 		return;
 
-	igt_create_fb(data->drm_fd,
-		      data->big_fb_width, data->big_fb_height,
-		      data->format, data->modifier,
-		      &data->big_fb);
+	if (data->hw_stride == 0) {
+		igt_create_fb(data->drm_fd,
+			data->big_fb_width, data->big_fb_height,
+			data->format, data->modifier,
+			&data->big_fb);
+	} else {
+		setup_fb(data, &data->big_fb, data->big_fb_width,
+			 data->big_fb_height, data->format, data->modifier,
+			 data->hw_stride);
+		igt_info("using stride length %d\n", data->hw_stride);
+	}
 
 	generate_pattern(data, &data->big_fb, 640, 480);
 }
@@ -435,6 +476,14 @@ static bool test_pipe(data_t *data)
 
 static void test_scanout(data_t *data)
 {
+	if (data->max_hw_stride_test) {
+		data->big_fb_width = data->max_hw_fb_width;
+		data->big_fb_height = data->max_hw_fb_width;
+	} else {
+		data->big_fb_width = data->max_fb_width;
+		data->big_fb_height = data->max_fb_height;
+	}
+
 	max_fb_size(data, &data->big_fb_width, &data->big_fb_height,
 		    data->format, data->modifier);
 
@@ -587,7 +636,27 @@ test_addfb(data_t *data)
 	gem_close(data->drm_fd, bo);
 }
 
-static data_t data;
+/*
+ * TODO: adapt i9xx_plane_max_stride(..) here from intel_display.c
+ * in kernel sources to support older gen for max hw stride length
+ * testing.
+ */
+static void
+set_max_hw_stride(data_t *data)
+{
+	if (intel_display_ver(data->devid) >= 13) {
+		/*
+		 * The stride in bytes must not exceed of the size
+		 * of 128K bytes. For pixel formats of 64bpp will allow
+		 * for a 16K pixel surface.
+		 */
+		data->hw_stride = 131072;
+	} else {
+		data->hw_stride = 32768;
+	}
+}
+
+static data_t data = {};
 
 static const struct {
 	uint64_t modifier;
@@ -619,6 +688,13 @@ static const struct {
 	{ IGT_ROTATION_270, 270, },
 };
 
+static const struct {
+	igt_rotation_t flip;
+	const char *flipname;
+} fliptab[] = {
+	{ 0, "" },
+	{ IGT_REFLECT_X, "-hflip" },
+};
 igt_main
 {
 	igt_fixture {
@@ -665,6 +741,9 @@ igt_main
 			data.render_copy = igt_get_render_copyfunc(data.devid);
 
 		data.bops = buf_ops_create(data.drm_fd);
+		data.ibb = intel_bb_create(data.drm_fd, 4096);
+
+		data.max_hw_stride_test = false;
 	}
 
 	/*
@@ -732,6 +811,65 @@ igt_main
 		}
 	}
 
+	data.max_hw_stride_test = true;
+	// Run max hw stride length tests on gen5 and later.
+	for (int i = 0; i < ARRAY_SIZE(modifiers); i++) {
+		data.modifier = modifiers[i].modifier;
+
+		set_max_hw_stride(&data);
+
+		for (int l = 0; l < ARRAY_SIZE(fliptab); l++) {
+			for (int j = 0; j < ARRAY_SIZE(formats); j++) {
+				/*
+				* try only those formats which can show full length.
+				* Here 32K is used to have CI test results consistent
+				* for all platforms, 32K is smallest number possbily
+				* coming to data.hw_stride from above set_max_hw_stride()
+				*/
+				if (32768 / (formats[j].bpp >> 3) > 8192)
+					continue;
+
+				data.format = formats[j].format;
+
+				for (int k = 0; k < ARRAY_SIZE(rotations); k++) {
+					data.rotation = rotations[k].rotation | fliptab[l].flip;
+
+					// this combination will never happen.
+					if ((data.rotation & (IGT_ROTATION_90 | IGT_ROTATION_270)) ||
+						(fliptab[l].flip == IGT_REFLECT_X && modifiers[i].modifier == DRM_FORMAT_MOD_LINEAR))
+						continue;
+
+					igt_describe("test maximum hardware supported stride length for given bpp and modifiers.");
+					igt_subtest_f("%s-max-hw-stride-%dbpp-rotate-%d%s", modifiers[i].name,
+						formats[j].bpp, rotations[k].angle, fliptab[l].flipname) {
+						igt_require(intel_display_ver(intel_get_drm_devid(data.drm_fd)) >= 5);
+						if (data.format_override != 0) {
+							igt_info("using format override fourcc %.4s\n", (char *)&data.format_override);
+							data.format = data.format_override;
+						}
+						if (data.stride_override != 0) {
+							igt_info("using FB width override %.d\n", data.stride_override);
+							data.hw_stride = data.stride_override;
+							data.max_hw_fb_width = data.stride_override;
+
+						} else {
+							data.max_hw_fb_width = min(data.hw_stride / (formats[j].bpp >> 3), data.max_fb_width);
+						}
+
+						igt_require(data.format == DRM_FORMAT_C8 ||
+							igt_fb_supported_format(data.format));
+						igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
+						test_scanout(&data);
+					}
+				}
+
+				igt_fixture
+					cleanup_fb(&data);
+			}
+		}
+	}
+	data.max_hw_stride_test = false;
+
 	igt_fixture {
 		igt_display_fini(&data.display);
 		buf_ops_destroy(data.bops);
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (8 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 10/11] tests/kms_big_fb: Add max HW stride length tests venkata.sai.patnana
@ 2021-06-09 12:17 ` venkata.sai.patnana
  2021-06-10  6:14   ` Karthik B S
  2021-06-09 13:54 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering Patchwork
  2021-06-09 15:23 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  11 siblings, 1 reply; 26+ messages in thread
From: venkata.sai.patnana @ 2021-06-09 12:17 UTC (permalink / raw)
  To: igt-dev; +Cc: Juha-Pekka Heikkilä

From: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>

test async flip with fbs which are using maximum hw supported stride
lenghts. Do crc test flipping between fbs which are having same content
and then async flip fbs with different content.

Cc: Karthik B S <karthik.b.s@intel.com>
Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>
---
 tests/kms_big_fb.c | 147 ++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 140 insertions(+), 7 deletions(-)

diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
index 65565127fd..89ea0f23e2 100644
--- a/tests/kms_big_fb.c
+++ b/tests/kms_big_fb.c
@@ -39,7 +39,7 @@ typedef struct {
 	igt_output_t *output;
 	igt_plane_t *plane;
 	igt_pipe_crc_t *pipe_crc;
-	struct igt_fb small_fb, big_fb;
+	struct igt_fb small_fb, big_fb, big_fb_flip[2];
 	uint32_t format;
 	uint64_t modifier;
 	int width, height;
@@ -51,10 +51,13 @@ typedef struct {
 	struct buf_ops *bops;
 	struct intel_bb *ibb;
 	bool max_hw_stride_test;
+	bool async_flip_test;
 	int hw_stride;
 	int max_hw_fb_width;
+	double planeclearrgb[3];
 	uint32_t format_override;
 	uint32_t stride_override;
+	uint32_t async_flip_support;
 } data_t;
 
 static struct intel_buf *init_buf(data_t *data,
@@ -113,7 +116,10 @@ static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
 	}
 
 	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
-	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 0, 0);
+	igt_paint_color(cr, 0, 0, newfb->width, newfb->height,
+			data->planeclearrgb[0],
+			data->planeclearrgb[1],
+			data->planeclearrgb[2]);
 	igt_put_cairo_ctx(cr);
 
 	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
@@ -243,7 +249,7 @@ static void prep_fb(data_t *data)
 	if (data->big_fb.fb_id)
 		return;
 
-	if (data->hw_stride == 0) {
+	if (!data->max_hw_stride_test) {
 		igt_create_fb(data->drm_fd,
 			data->big_fb_width, data->big_fb_height,
 			data->format, data->modifier,
@@ -252,7 +258,7 @@ static void prep_fb(data_t *data)
 		setup_fb(data, &data->big_fb, data->big_fb_width,
 			 data->big_fb_height, data->format, data->modifier,
 			 data->hw_stride);
-		igt_info("using stride length %d\n", data->hw_stride);
+		igt_debug("using stride length %d\n", data->hw_stride);
 	}
 
 	generate_pattern(data, &data->big_fb, 640, 480);
@@ -474,11 +480,107 @@ static bool test_pipe(data_t *data)
 	return ret;
 }
 
+static bool
+max_hw_stride_async_flip_test(data_t *data)
+{
+	uint32_t ret, startframe;
+	const uint32_t w = data->output->config.default_mode.hdisplay,
+		       h = data->output->config.default_mode.vdisplay;
+	igt_plane_t *primary;
+	igt_crc_t compare_crc, async_crc;
+
+	igt_require(data->display.is_atomic);
+	igt_output_set_pipe(data->output, data->pipe);
+
+	primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
+
+	if (igt_plane_has_prop(primary, IGT_PLANE_ROTATION))
+		igt_plane_set_rotation(primary, data->rotation);
+
+	igt_display_commit2(&data->display, COMMIT_ATOMIC);
+
+	setup_fb(data, &data->big_fb, data->big_fb_width, data->big_fb_height,
+		 data->format, data->modifier, data->hw_stride);
+	generate_pattern(data, &data->big_fb, 640, 480);
+
+	data->planeclearrgb[1] = 1.0;
+
+	setup_fb(data, &data->big_fb_flip[0], data->big_fb_width,
+		 data->big_fb_height, data->format, data->modifier,
+		 data->hw_stride);
+
+	data->planeclearrgb[1] = 0.0;
+
+	setup_fb(data, &data->big_fb_flip[1], data->big_fb_width,
+		 data->big_fb_height, data->format, data->modifier,
+		 data->hw_stride);
+	generate_pattern(data, &data->big_fb_flip[1], 640, 480);
+
+	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
+					  INTEL_PIPE_CRC_SOURCE_AUTO);
+	igt_pipe_crc_start(data->pipe_crc);
+
+	igt_set_timeout(5, "Async pageflipping loop got stuck!\n");
+	for (int i = 0; i < 2; i++) {
+		igt_plane_set_fb(primary, &data->big_fb);
+		igt_fb_set_size(&data->big_fb, primary, w, h);
+		igt_plane_set_size(primary, w, h);
+		igt_display_commit_atomic(&data->display,
+					  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
+
+		igt_wait_for_vblank(data->drm_fd, data->display.pipes[primary->pipe->pipe].crtc_offset);
+		startframe = kmstest_get_vblank(data->drm_fd, data->pipe, 0) + 1;
+
+		for (int j = 0; j < 2; j++) {
+			do {
+				ret = drmModePageFlip(data->drm_fd, data->output->config.crtc->crtc_id,
+						      data->big_fb_flip[i].fb_id,
+						      DRM_MODE_PAGE_FLIP_ASYNC, NULL);
+			} while (ret == -EBUSY);
+			igt_assert(ret == 0);
+
+			do {
+				ret = drmModePageFlip(data->drm_fd, data->output->config.crtc->crtc_id,
+						      data->big_fb.fb_id,
+						      DRM_MODE_PAGE_FLIP_ASYNC, NULL);
+			} while (ret == -EBUSY);
+			igt_assert(ret == 0);
+		}
+
+		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
+					   startframe, &compare_crc);
+		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
+					   startframe + 1, &async_crc);
+
+		igt_assert_f(kmstest_get_vblank(data->drm_fd, data->pipe, 0) -
+			     startframe == 1, "lost frames\n");
+
+		igt_assert_f(igt_check_crc_equal(&compare_crc, &async_crc)^(i^1),
+			     "CRC failure with async flip, crc %s match for checked round\n",
+			     i?"should":"shouldn't");
+	}
+	igt_reset_timeout();
+
+	igt_pipe_crc_free(data->pipe_crc);
+	igt_output_set_pipe(data->output, PIPE_NONE);
+	igt_remove_fb(data->drm_fd, &data->big_fb);
+	igt_remove_fb(data->drm_fd, &data->big_fb_flip[0]);
+	igt_remove_fb(data->drm_fd, &data->big_fb_flip[1]);
+	return true;
+}
+
 static void test_scanout(data_t *data)
 {
+	igt_output_t *output;
+
 	if (data->max_hw_stride_test) {
 		data->big_fb_width = data->max_hw_fb_width;
-		data->big_fb_height = data->max_hw_fb_width;
+		data->big_fb_height = 0;
+
+		for_each_connected_output(&data->display, output) {
+			if (data->big_fb_height < output->config.default_mode.vdisplay * 2)
+				data->big_fb_height = output->config.default_mode.vdisplay * 2;
+		}
 	} else {
 		data->big_fb_width = data->max_fb_width;
 		data->big_fb_height = data->max_fb_height;
@@ -488,8 +590,13 @@ static void test_scanout(data_t *data)
 		    data->format, data->modifier);
 
 	for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
-		if (test_pipe(data))
-			return;
+		if (data->async_flip_test) {
+			if (max_hw_stride_async_flip_test(data))
+				return;
+		} else {
+			if (test_pipe(data))
+				return;
+		}
 		break;
 	}
 
@@ -699,6 +806,7 @@ igt_main
 {
 	igt_fixture {
 		drmModeResPtr res;
+		struct drm_get_cap cap = { .capability = DRM_CAP_ASYNC_PAGE_FLIP };
 
 		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
 
@@ -743,7 +851,15 @@ igt_main
 		data.bops = buf_ops_create(data.drm_fd);
 		data.ibb = intel_bb_create(data.drm_fd, 4096);
 
+		data.planeclearrgb[0] = 0.0;
+		data.planeclearrgb[1] = 0.0;
+		data.planeclearrgb[2] = 0.0;
+
 		data.max_hw_stride_test = false;
+		data.async_flip_test = false;
+
+		igt_ioctl(data.drm_fd, DRM_IOCTL_GET_CAP, &cap);
+		data.async_flip_support = cap.value;
 	}
 
 	/*
@@ -861,6 +977,23 @@ igt_main
 						igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
 						test_scanout(&data);
 					}
+
+					// async flip doesn't support linear fbs.
+					if (modifiers[i].modifier == DRM_FORMAT_MOD_LINEAR)
+						continue;
+
+					data.async_flip_test = true;
+					igt_describe("test async flip on maximum hardware supported stride length for given bpp and modifiers.");
+					igt_subtest_f("%s-max-hw-stride-%dbpp-rotate-%d%s-async-flip", modifiers[i].name,
+						formats[j].bpp, rotations[k].angle, fliptab[l].flipname) {
+							igt_require(data.format == DRM_FORMAT_C8 ||
+								igt_fb_supported_format(data.format));
+							igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
+							igt_require_f(data.async_flip_support, "Async Flip is not supported\n");
+							data.max_hw_fb_width = min(data.hw_stride / (formats[j].bpp >> 3), data.max_fb_width);
+							test_scanout(&data);
+					}
+					data.async_flip_test = false;
 				}
 
 				igt_fixture
-- 
2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 26+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (9 preceding siblings ...)
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test venkata.sai.patnana
@ 2021-06-09 13:54 ` Patchwork
  2021-06-09 15:23 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  11 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2021-06-09 13:54 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 12512 bytes --]

== Series Details ==

Series: series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering
URL   : https://patchwork.freedesktop.org/series/91247/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_10196 -> IGTPW_5904
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with IGTPW_5904 need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_5904, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_5904:

### IGT changes ###

#### Warnings ####

  * igt@core_hotunplug@unbind-rebind:
    - fi-hsw-4770:        [WARN][1] ([i915#2283]) -> [WARN][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-hsw-4770/igt@core_hotunplug@unbind-rebind.html
    - fi-bdw-5557u:       [WARN][3] ([i915#2283]) -> [WARN][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-bdw-5557u/igt@core_hotunplug@unbind-rebind.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-bdw-5557u/igt@core_hotunplug@unbind-rebind.html

  
#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@core_hotunplug@unbind-rebind:
    - {fi-hsw-gt1}:       [WARN][5] ([i915#2283]) -> [WARN][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-hsw-gt1/igt@core_hotunplug@unbind-rebind.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-hsw-gt1/igt@core_hotunplug@unbind-rebind.html

  
Known issues
------------

  Here are the changes found in IGTPW_5904 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@amdgpu/amd_cs_nop@sync-fork-compute0:
    - fi-snb-2600:        NOTRUN -> [SKIP][7] ([fdo#109271]) +17 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-snb-2600/igt@amdgpu/amd_cs_nop@sync-fork-compute0.html

  
#### Possible fixes ####

  * igt@gem_exec_suspend@basic-s0:
    - fi-tgl-u2:          [FAIL][8] ([i915#1888]) -> [PASS][9]
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-tgl-u2/igt@gem_exec_suspend@basic-s0.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-tgl-u2/igt@gem_exec_suspend@basic-s0.html

  * igt@i915_selftest@live@hangcheck:
    - fi-snb-2600:        [INCOMPLETE][10] ([i915#2782]) -> [PASS][11]
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-snb-2600/igt@i915_selftest@live@hangcheck.html
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-snb-2600/igt@i915_selftest@live@hangcheck.html

  * igt@kms_chamelium@hdmi-hpd-fast:
    - fi-icl-u2:          [DMESG-WARN][12] ([i915#2868]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-icl-u2/igt@kms_chamelium@hdmi-hpd-fast.html

  
#### Warnings ####

  * igt@i915_selftest@live@execlists:
    - fi-cfl-8109u:       [INCOMPLETE][14] ([i915#3462]) -> [DMESG-FAIL][15] ([i915#3462])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-cfl-8109u/igt@i915_selftest@live@execlists.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-cfl-8109u/igt@i915_selftest@live@execlists.html
    - fi-icl-u2:          [DMESG-FAIL][16] ([i915#3462]) -> [INCOMPLETE][17] ([i915#2782] / [i915#3462])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-icl-u2/igt@i915_selftest@live@execlists.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-icl-u2/igt@i915_selftest@live@execlists.html

  * igt@runner@aborted:
    - fi-cfl-8109u:       [FAIL][18] ([i915#3363]) -> [FAIL][19] ([i915#2426] / [i915#3363])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-cfl-8109u/igt@runner@aborted.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-cfl-8109u/igt@runner@aborted.html
    - fi-icl-u2:          [FAIL][20] ([i915#2426] / [i915#2782] / [i915#3363]) -> [FAIL][21] ([i915#2782] / [i915#3363])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-icl-u2/igt@runner@aborted.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-icl-u2/igt@runner@aborted.html
    - fi-glk-dsi:         [FAIL][22] ([i915#3363] / [k.org#202321]) -> [FAIL][23] ([i915#2426] / [i915#3363] / [k.org#202321])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-glk-dsi/igt@runner@aborted.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-glk-dsi/igt@runner@aborted.html
    - fi-bdw-5557u:       [FAIL][24] ([i915#2426] / [i915#3462]) -> [FAIL][25] ([i915#3462])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-bdw-5557u/igt@runner@aborted.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-bdw-5557u/igt@runner@aborted.html
    - fi-kbl-7500u:       [FAIL][26] ([i915#1436] / [i915#2426] / [i915#3363]) -> [FAIL][27] ([i915#1436] / [i915#3363])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-kbl-7500u/igt@runner@aborted.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-kbl-7500u/igt@runner@aborted.html
    - fi-cml-u2:          [FAIL][28] ([i915#2082] / [i915#2426] / [i915#3363] / [i915#3462]) -> [FAIL][29] ([i915#3363] / [i915#3462])
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-cml-u2/igt@runner@aborted.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-cml-u2/igt@runner@aborted.html
    - fi-cfl-guc:         [FAIL][30] ([i915#3363]) -> [FAIL][31] ([i915#2426] / [i915#3363])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-cfl-guc/igt@runner@aborted.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-cfl-guc/igt@runner@aborted.html
    - fi-kbl-7567u:       [FAIL][32] ([i915#1436] / [i915#3363]) -> [FAIL][33] ([i915#1436] / [i915#2426] / [i915#3363])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/fi-kbl-7567u/igt@runner@aborted.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/fi-kbl-7567u/igt@runner@aborted.html

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436
  [i915#1888]: https://gitlab.freedesktop.org/drm/intel/issues/1888
  [i915#2082]: https://gitlab.freedesktop.org/drm/intel/issues/2082
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2283]: https://gitlab.freedesktop.org/drm/intel/issues/2283
  [i915#2426]: https://gitlab.freedesktop.org/drm/intel/issues/2426
  [i915#2782]: https://gitlab.freedesktop.org/drm/intel/issues/2782
  [i915#2868]: https://gitlab.freedesktop.org/drm/intel/issues/2868
  [i915#3012]: https://gitlab.freedesktop.org/drm/intel/issues/3012
  [i915#3276]: https://gitlab.freedesktop.org/drm/intel/issues/3276
  [i915#3277]: https://gitlab.freedesktop.org/drm/intel/issues/3277
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3283]: https://gitlab.freedesktop.org/drm/intel/issues/3283
  [i915#3363]: https://gitlab.freedesktop.org/drm/intel/issues/3363
  [i915#3462]: https://gitlab.freedesktop.org/drm/intel/issues/3462
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3542]: https://gitlab.freedesktop.org/drm/intel/issues/3542
  [i915#3544]: https://gitlab.freedesktop.org/drm/intel/issues/3544
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#541]: https://gitlab.freedesktop.org/drm/intel/issues/541
  [k.org#202321]: https://bugzilla.kernel.org/show_bug.cgi?id=202321


Participating hosts (44 -> 39)
------------------------------

  Additional (1): fi-rkl-11500t 
  Missing    (6): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-dg1-1 fi-kbl-8809g fi-bdw-samus 


Build changes
-------------

  * CI: CI-20190529 -> None
  * IGT: IGT_6103 -> IGTPW_5904

  CI-20190529: 20190529
  CI_DRM_10196: 1588f8e61fe15d12826ca07d41c0a108a26006cc @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_5904: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/index.html
  IGT_6103: 3aa79e55e73d4a49a5222e5dfde486b800a29fe7 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git



== Testlist changes ==

+igt@kms_addfb_basic@invalid-smem-bo-on-discrete
+igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0
+igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180
+igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0
+igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip
+igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip
+igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip
+igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip
+igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip
+igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip
+igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip
+igt@kms_dither@fb-8bpc-vs-panel-6bpc
+igt@kms_dither@fb-8bpc-vs-panel-8bpc
+igt@kms_dither@fb-16bpc-vs-panel-12bpc

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/index.html

[-- Attachment #1.2: Type: text/html, Size: 15200 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering
  2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
                   ` (10 preceding siblings ...)
  2021-06-09 13:54 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering Patchwork
@ 2021-06-09 15:23 ` Patchwork
  11 siblings, 0 replies; 26+ messages in thread
From: Patchwork @ 2021-06-09 15:23 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev


[-- Attachment #1.1: Type: text/plain, Size: 30305 bytes --]

== Series Details ==

Series: series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering
URL   : https://patchwork.freedesktop.org/series/91247/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_10196_full -> IGTPW_5904_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/index.html

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_5904_full:

### IGT changes ###

#### Possible regressions ####

  * {igt@kms_addfb_basic@invalid-smem-bo-on-discrete} (NEW):
    - shard-tglb:         NOTRUN -> [FAIL][1]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb6/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-kbl:          NOTRUN -> [FAIL][2]
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl4/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-iclb:         NOTRUN -> [FAIL][3]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb1/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * {igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip} (NEW):
    - shard-snb:          NOTRUN -> [FAIL][4] +4 similar issues
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-snb2/igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip.html

  * {igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip} (NEW):
    - shard-apl:          NOTRUN -> [FAIL][5] +6 similar issues
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl3/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html
    - shard-glk:          NOTRUN -> [FAIL][6] +10 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk8/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip.html

  * {igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip} (NEW):
    - shard-tglb:         NOTRUN -> [SKIP][7] +16 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip.html

  * {igt@kms_dither@fb-16bpc-vs-panel-12bpc@edp-1-pipe-a} (NEW):
    - shard-iclb:         NOTRUN -> [SKIP][8] +8 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb7/igt@kms_dither@fb-16bpc-vs-panel-12bpc@edp-1-pipe-a.html

  
New tests
---------

  New tests have been introduced between CI_DRM_10196_full and IGTPW_5904_full:

### New IGT tests (66) ###

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - Statuses : 5 fail(s)
    - Exec time: [0.01, 0.04] s

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-0:
    - Statuses : 5 pass(s)
    - Exec time: [1.03, 2.02] s

  * igt@kms_big_fb@linear-max-hw-stride-32bpp-rotate-180:
    - Statuses : 6 pass(s)
    - Exec time: [1.03, 1.99] s

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-0:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@linear-max-hw-stride-64bpp-rotate-180:
    - Statuses : 6 pass(s)
    - Exec time: [1.55, 3.34] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0:
    - Statuses : 6 pass(s)
    - Exec time: [1.03, 1.91] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - Statuses : 5 pass(s)
    - Exec time: [0.52, 1.57] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - Statuses : 2 pass(s) 3 skip(s)
    - Exec time: [0.03, 1.57] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - Statuses : 4 fail(s) 2 pass(s)
    - Exec time: [0.06, 0.60] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180:
    - Statuses : 5 pass(s)
    - Exec time: [1.02, 1.93] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - Statuses : 5 pass(s)
    - Exec time: [0.48, 1.36] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - Statuses : 2 pass(s) 3 skip(s)
    - Exec time: [0.02, 1.49] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - Statuses : 4 fail(s) 2 pass(s)
    - Exec time: [0.02, 0.59] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0:
    - Statuses : 5 pass(s)
    - Exec time: [1.67, 3.56] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - Statuses : 5 pass(s)
    - Exec time: [0.98, 4.92] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - Statuses : 2 pass(s) 4 skip(s)
    - Exec time: [0.06, 2.37] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - Statuses : 3 fail(s) 2 pass(s)
    - Exec time: [0.04, 3.00] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180:
    - Statuses : 6 pass(s)
    - Exec time: [1.57, 3.24] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - Statuses : 1 pass(s)
    - Exec time: [1.14] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@x-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - Statuses : 3 fail(s) 2 pass(s)
    - Exec time: [0.07, 2.84] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0:
    - Statuses : 5 pass(s)
    - Exec time: [1.23, 2.17] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - Statuses : 5 pass(s)
    - Exec time: [0.67, 1.81] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - Statuses : 2 pass(s) 4 skip(s)
    - Exec time: [0.0, 1.72] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - Statuses : 3 fail(s) 2 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.40] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180:
    - Statuses : 4 pass(s) 1 skip(s)
    - Exec time: [0.0, 2.17] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - Statuses : 4 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.82] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - Statuses : 2 fail(s) 2 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.17] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0:
    - Statuses : 5 pass(s)
    - Exec time: [1.66, 3.38] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - Statuses : 4 pass(s) 1 skip(s)
    - Exec time: [0.0, 5.99] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - Statuses : 2 pass(s) 3 skip(s)
    - Exec time: [0.00, 3.52] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - Statuses : 3 fail(s) 2 pass(s) 1 skip(s)
    - Exec time: [0.0, 6.08] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - Statuses : 4 pass(s)
    - Exec time: [1.03, 6.03] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - Statuses : 2 pass(s) 3 skip(s)
    - Exec time: [0.0, 3.91] s

  * igt@kms_big_fb@y-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - Statuses : 3 fail(s) 2 pass(s) 1 skip(s)
    - Exec time: [0.0, 5.91] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0:
    - Statuses : 4 pass(s) 2 skip(s)
    - Exec time: [0.0, 2.49] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-async-flip:
    - Statuses : 3 pass(s) 2 skip(s)
    - Exec time: [0.0, 3.08] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip:
    - Statuses : 1 pass(s) 4 skip(s)
    - Exec time: [0.0, 1.67] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - Statuses : 2 fail(s) 1 pass(s) 2 skip(s)
    - Exec time: [0.0, 1.12] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180:
    - Statuses : 3 pass(s) 2 skip(s)
    - Exec time: [0.0, 2.41] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - Statuses : 4 pass(s) 2 skip(s)
    - Exec time: [0.0, 3.42] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - Statuses : 1 pass(s) 4 skip(s)
    - Exec time: [0.0, 1.57] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip-async-flip:
    - Statuses : 3 fail(s) 1 pass(s) 1 skip(s)
    - Exec time: [0.0, 1.04] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip:
    - Statuses : 6 skip(s)
    - Exec time: [0.0] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-hflip-async-flip:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-async-flip:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip:
    - Statuses : 5 skip(s)
    - Exec time: [0.0] s

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-180-hflip-async-flip:
    - Statuses : 4 skip(s)
    - Exec time: [0.0] s

  * igt@kms_dither@fb-16bpc-vs-panel-12bpc:
    - Statuses : 1 skip(s)
    - Exec time: [0.0] s

  * igt@kms_dither@fb-16bpc-vs-panel-12bpc@dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.04, 0.09] s

  * igt@kms_dither@fb-16bpc-vs-panel-12bpc@edp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.04] s

  * igt@kms_dither@fb-16bpc-vs-panel-12bpc@hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.22] s

  * igt@kms_dither@fb-16bpc-vs-panel-12bpc@hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.21] s

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc:
    - Statuses : 2 skip(s)
    - Exec time: [0.0, 0.00] s

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@dp-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.16] s

  * igt@kms_dither@fb-8bpc-vs-panel-6bpc@edp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [1.16, 1.21] s

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc:
    - Statuses :
    - Exec time: [None] s

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@dp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [0.17, 0.18] s

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@edp-1-pipe-a:
    - Statuses : 2 skip(s)
    - Exec time: [1.16, 1.17] s

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@hdmi-a-1-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.35] s

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@hdmi-a-2-pipe-a:
    - Statuses : 1 skip(s)
    - Exec time: [0.23] s

  

Known issues
------------

  Here are the changes found in IGTPW_5904_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_create@create-massive:
    - shard-apl:          NOTRUN -> [DMESG-WARN][9] ([i915#3002])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl7/igt@gem_create@create-massive.html

  * igt@gem_ctx_persistence@engines-mixed:
    - shard-snb:          NOTRUN -> [SKIP][10] ([fdo#109271] / [i915#1099]) +6 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-snb7/igt@gem_ctx_persistence@engines-mixed.html

  * igt@gem_eio@unwedge-stress:
    - shard-tglb:         [PASS][11] -> [TIMEOUT][12] ([i915#2369] / [i915#3063])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-tglb6/igt@gem_eio@unwedge-stress.html
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@gem_eio@unwedge-stress.html
    - shard-snb:          NOTRUN -> [FAIL][13] ([i915#3354])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-snb5/igt@gem_eio@unwedge-stress.html

  * igt@gem_exec_fair@basic-deadline:
    - shard-kbl:          [PASS][14] -> [FAIL][15] ([i915#2846])
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-kbl3/igt@gem_exec_fair@basic-deadline.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl4/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-none-rrul@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][16] ([i915#2852])
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb3/igt@gem_exec_fair@basic-none-rrul@rcs0.html
    - shard-tglb:         NOTRUN -> [FAIL][17] ([i915#2842]) +1 similar issue
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb2/igt@gem_exec_fair@basic-none-rrul@rcs0.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-iclb:         [PASS][18] -> [FAIL][19] ([i915#2842])
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-iclb6/igt@gem_exec_fair@basic-none-share@rcs0.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb5/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-kbl:          NOTRUN -> [FAIL][20] ([i915#2842])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl4/igt@gem_exec_fair@basic-none-solo@rcs0.html
    - shard-glk:          NOTRUN -> [FAIL][21] ([i915#2842])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk8/igt@gem_exec_fair@basic-none-solo@rcs0.html
    - shard-iclb:         NOTRUN -> [FAIL][22] ([i915#2842])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb1/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace@rcs0:
    - shard-kbl:          [PASS][23] -> [FAIL][24] ([i915#2842])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-kbl7/igt@gem_exec_fair@basic-pace@rcs0.html
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl3/igt@gem_exec_fair@basic-pace@rcs0.html
    - shard-tglb:         [PASS][25] -> [FAIL][26] ([i915#2876])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-tglb1/igt@gem_exec_fair@basic-pace@rcs0.html
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb6/igt@gem_exec_fair@basic-pace@rcs0.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          [PASS][27] -> [FAIL][28] ([i915#2842]) +1 similar issue
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-glk2/igt@gem_exec_fair@basic-throttle@rcs0.html
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk6/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
    - shard-snb:          NOTRUN -> [SKIP][29] ([fdo#109271]) +529 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-snb5/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html

  * igt@gem_exec_params@no-blt:
    - shard-tglb:         NOTRUN -> [SKIP][30] ([fdo#109283]) +1 similar issue
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb8/igt@gem_exec_params@no-blt.html

  * igt@gem_exec_params@no-vebox:
    - shard-iclb:         NOTRUN -> [SKIP][31] ([fdo#109283]) +2 similar issues
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb7/igt@gem_exec_params@no-vebox.html

  * igt@gem_exec_whisper@basic-queues-forked-all:
    - shard-glk:          [PASS][32] -> [DMESG-WARN][33] ([i915#118] / [i915#95])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-glk6/igt@gem_exec_whisper@basic-queues-forked-all.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk2/igt@gem_exec_whisper@basic-queues-forked-all.html

  * igt@gem_huc_copy@huc-copy:
    - shard-kbl:          NOTRUN -> [SKIP][34] ([fdo#109271] / [i915#2190])
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl6/igt@gem_huc_copy@huc-copy.html

  * igt@gem_media_vme:
    - shard-tglb:         NOTRUN -> [SKIP][35] ([i915#284])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb7/igt@gem_media_vme.html

  * igt@gem_mmap_gtt@cpuset-big-copy:
    - shard-glk:          [PASS][36] -> [FAIL][37] ([i915#307])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-glk8/igt@gem_mmap_gtt@cpuset-big-copy.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk7/igt@gem_mmap_gtt@cpuset-big-copy.html

  * igt@gem_pwrite@basic-exhaustion:
    - shard-iclb:         NOTRUN -> [WARN][38] ([i915#2658])
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb5/igt@gem_pwrite@basic-exhaustion.html

  * igt@gem_userptr_blits@invalid-mmap-offset-unsync:
    - shard-iclb:         NOTRUN -> [SKIP][39] ([i915#3297]) +1 similar issue
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb1/igt@gem_userptr_blits@invalid-mmap-offset-unsync.html

  * igt@gem_userptr_blits@unsync-unmap-after-close:
    - shard-tglb:         NOTRUN -> [SKIP][40] ([i915#3297])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb3/igt@gem_userptr_blits@unsync-unmap-after-close.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-apl:          NOTRUN -> [FAIL][41] ([i915#3318])
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl3/igt@gem_userptr_blits@vma-merge.html
    - shard-iclb:         NOTRUN -> [FAIL][42] ([i915#3318])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb5/igt@gem_userptr_blits@vma-merge.html
    - shard-glk:          NOTRUN -> [FAIL][43] ([i915#3318])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk8/igt@gem_userptr_blits@vma-merge.html
    - shard-kbl:          NOTRUN -> [FAIL][44] ([i915#3318])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl1/igt@gem_userptr_blits@vma-merge.html
    - shard-tglb:         NOTRUN -> [FAIL][45] ([i915#3318])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb3/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@allowed-all:
    - shard-iclb:         NOTRUN -> [SKIP][46] ([fdo#112306]) +1 similar issue
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb4/igt@gen9_exec_parse@allowed-all.html

  * igt@gen9_exec_parse@cmd-crossing-page:
    - shard-tglb:         NOTRUN -> [SKIP][47] ([fdo#112306]) +1 similar issue
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb5/igt@gen9_exec_parse@cmd-crossing-page.html

  * igt@i915_hangman@engine-error@vecs0:
    - shard-kbl:          NOTRUN -> [SKIP][48] ([fdo#109271]) +218 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl2/igt@i915_hangman@engine-error@vecs0.html

  * igt@i915_pm_dc@dc6-dpms:
    - shard-kbl:          NOTRUN -> [FAIL][49] ([i915#454])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl3/igt@i915_pm_dc@dc6-dpms.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp:
    - shard-apl:          NOTRUN -> [SKIP][50] ([fdo#109271] / [i915#1937])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl3/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-tglb:         NOTRUN -> [SKIP][51] ([fdo#109289] / [fdo#111719])
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb6/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress:
    - shard-iclb:         NOTRUN -> [SKIP][52] ([fdo#110892])
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb1/igt@i915_pm_rpm@modeset-non-lpsp-stress.html

  * igt@i915_query@query-topology-known-pci-ids:
    - shard-tglb:         NOTRUN -> [SKIP][53] ([fdo#109303])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@i915_query@query-topology-known-pci-ids.html
    - shard-iclb:         NOTRUN -> [SKIP][54] ([fdo#109303])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb6/igt@i915_query@query-topology-known-pci-ids.html

  * igt@kms_big_fb@linear-32bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][55] ([fdo#110725] / [fdo#111614]) +2 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb6/igt@kms_big_fb@linear-32bpp-rotate-90.html
    - shard-tglb:         NOTRUN -> [SKIP][56] ([fdo#111614]) +1 similar issue
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@kms_big_fb@linear-32bpp-rotate-90.html

  * igt@kms_big_fb@yf-tiled-64bpp-rotate-0:
    - shard-iclb:         NOTRUN -> [SKIP][57] ([fdo#110723])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb6/igt@kms_big_fb@yf-tiled-64bpp-rotate-0.html

  * {igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip} (NEW):
    - shard-kbl:          NOTRUN -> [FAIL][58] ([fdo#109052]) +8 similar issues
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl2/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * {igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0} (NEW):
    - shard-apl:          NOTRUN -> [SKIP][59] ([fdo#109271]) +273 similar issues
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl6/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0.html

  * igt@kms_chamelium@dp-hpd-storm-disable:
    - shard-glk:          NOTRUN -> [SKIP][60] ([fdo#109271] / [fdo#111827]) +7 similar issues
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk9/igt@kms_chamelium@dp-hpd-storm-disable.html

  * igt@kms_chamelium@hdmi-hpd-for-each-pipe:
    - shard-kbl:          NOTRUN -> [SKIP][61] ([fdo#109271] / [fdo#111827]) +17 similar issues
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl4/igt@kms_chamelium@hdmi-hpd-for-each-pipe.html

  * igt@kms_color_chamelium@pipe-b-ctm-red-to-blue:
    - shard-iclb:         NOTRUN -> [SKIP][62] ([fdo#109284] / [fdo#111827]) +9 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb2/igt@kms_color_chamelium@pipe-b-ctm-red-to-blue.html

  * igt@kms_color_chamelium@pipe-d-ctm-limited-range:
    - shard-iclb:         NOTRUN -> [SKIP][63] ([fdo#109278] / [fdo#109284] / [fdo#111827]) +1 similar issue
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb1/igt@kms_color_chamelium@pipe-d-ctm-limited-range.html

  * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
    - shard-tglb:         NOTRUN -> [SKIP][64] ([fdo#109284] / [fdo#111827]) +7 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb3/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html

  * igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes:
    - shard-snb:          NOTRUN -> [SKIP][65] ([fdo#109271] / [fdo#111827]) +33 similar issues
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-snb6/igt@kms_color_chamelium@pipe-invalid-ctm-matrix-sizes.html

  * igt@kms_color_chamelium@pipe-invalid-degamma-lut-sizes:
    - shard-apl:          NOTRUN -> [SKIP][66] ([fdo#109271] / [fdo#111827]) +20 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl2/igt@kms_color_chamelium@pipe-invalid-degamma-lut-sizes.html

  * igt@kms_content_protection@atomic-dpms:
    - shard-apl:          NOTRUN -> [TIMEOUT][67] ([i915#1319]) +1 similar issue
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl3/igt@kms_content_protection@atomic-dpms.html
    - shard-kbl:          NOTRUN -> [TIMEOUT][68] ([i915#1319]) +1 similar issue
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl2/igt@kms_content_protection@atomic-dpms.html

  * igt@kms_content_protection@content_type_change:
    - shard-iclb:         NOTRUN -> [SKIP][69] ([fdo#109300] / [fdo#111066])
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb5/igt@kms_content_protection@content_type_change.html

  * igt@kms_content_protection@uevent:
    - shard-kbl:          NOTRUN -> [FAIL][70] ([i915#2105])
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl3/igt@kms_content_protection@uevent.html
    - shard-apl:          NOTRUN -> [FAIL][71] ([i915#2105])
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl2/igt@kms_content_protection@uevent.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x512-onscreen:
    - shard-tglb:         NOTRUN -> [SKIP][72] ([fdo#109279] / [i915#3359])
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb5/igt@kms_cursor_crc@pipe-a-cursor-512x512-onscreen.html
    - shard-iclb:         NOTRUN -> [SKIP][73] ([fdo#109278] / [fdo#109279])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb4/igt@kms_cursor_crc@pipe-a-cursor-512x512-onscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-32x32-offscreen:
    - shard-tglb:         NOTRUN -> [SKIP][74] ([i915#3319]) +2 similar issues
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb5/igt@kms_cursor_crc@pipe-b-cursor-32x32-offscreen.html

  * igt@kms_cursor_crc@pipe-b-cursor-max-size-sliding:
    - shard-tglb:         NOTRUN -> [SKIP][75] ([i915#3359])
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@kms_cursor_crc@pipe-b-cursor-max-size-sliding.html

  * igt@kms_cursor_crc@pipe-c-cursor-size-change:
    - shard-glk:          [PASS][76] -> [FAIL][77] ([i915#3444])
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-glk1/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk5/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
    - shard-apl:          [PASS][78] -> [FAIL][79] ([i915#3444])
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-apl6/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl2/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
    - shard-kbl:          [PASS][80] -> [FAIL][81] ([i915#3444])
   [80]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-kbl6/igt@kms_cursor_crc@pipe-c-cursor-size-change.html
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl3/igt@kms_cursor_crc@pipe-c-cursor-size-change.html

  * igt@kms_cursor_crc@pipe-d-cursor-32x10-offscreen:
    - shard-iclb:         NOTRUN -> [SKIP][82] ([fdo#109278]) +20 similar issues
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb8/igt@kms_cursor_crc@pipe-d-cursor-32x10-offscreen.html

  * igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy:
    - shard-iclb:         NOTRUN -> [SKIP][83] ([fdo#109274] / [fdo#109278]) +2 similar issues
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb2/igt@kms_cursor_legacy@2x-flip-vs-cursor-legacy.html

  * igt@kms_dp_dsc@basic-dsc-enable-edp:
    - shard-iclb:         NOTRUN -> [CRASH][84] ([i915#3494])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb2/igt@kms_dp_dsc@basic-dsc-enable-edp.html
    - shard-tglb:         NOTRUN -> [CRASH][85] ([i915#3494])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb3/igt@kms_dp_dsc@basic-dsc-enable-edp.html

  * igt@kms_flip@2x-nonexisting-fb:
    - shard-iclb:         NOTRUN -> [SKIP][86] ([fdo#109274]) +4 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb3/igt@kms_flip@2x-nonexisting-fb.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs:
    - shard-apl:          NOTRUN -> [SKIP][87] ([fdo#109271] / [i915#2672])
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-apl2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-32bpp-ytilegen12rcccs.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile:
    - shard-kbl:          NOTRUN -> [SKIP][88] ([fdo#109271] / [i915#2642])
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-kbl2/igt@kms_flip_scaled_crc@flip-32bpp-ytileccs-to-64bpp-ytile.html

  * igt@kms_flip_tiling@flip-changes-tiling-yf:
    - shard-tglb:         NOTRUN -> [SKIP][89] ([fdo#111615])
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@kms_flip_tiling@flip-changes-tiling-yf.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt:
    - shard-glk:          [PASS][90] -> [FAIL][91] ([i915#49])
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_10196/shard-glk2/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk4/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-shrfb-draw-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff:
    - shard-tglb:         NOTRUN -> [SKIP][92] ([fdo#111825]) +14 similar issues
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb1/igt@kms_frontbuffer_tracking@fbc-2p-scndscrn-cur-indfb-onoff.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt:
    - shard-iclb:         NOTRUN -> [SKIP][93] ([fdo#109280]) +18 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb8/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-shrfb-pgflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-suspend:
    - shard-glk:          NOTRUN -> [SKIP][94] ([fdo#109271]) +56 similar issues
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-glk6/igt@kms_frontbuffer_tracking@fbcpsr-suspend.html

  * igt@kms_hdr@static-toggle-dpms:
    - shard-tglb:         NOTRUN -> [SKIP][95] ([i915#1187])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb3/igt@kms_hdr@static-toggle-dpms.html
    - shard-iclb:         NOTRUN -> [SKIP][96] ([i915#1187])
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-iclb5/igt@kms_hdr@static-toggle-dpms.html

  * igt@kms_invalid_dotclock:
    - shard-tglb:         NOTRUN -> [SKIP][97] ([fdo#110577])
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/shard-tglb5/igt@kms_invalid_dotclock.html
    - shard-iclb:         NOTRUN -> [SKIP][98] ([fdo#109310])
   [98]: https://intel-gfx-ci.01.

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_5904/index.html

[-- Attachment #1.2: Type: text/html, Size: 35150 bytes --]

[-- Attachment #2: Type: text/plain, Size: 154 bytes --]

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once venkata.sai.patnana
@ 2021-06-10  6:07   ` Karthik B S
  0 siblings, 0 replies; 26+ messages in thread
From: Karthik B S @ 2021-06-10  6:07 UTC (permalink / raw)
  To: venkata.sai.patnana, igt-dev

On 6/9/2021 5:47 PM, venkata.sai.patnana@intel.com wrote:
> From: Patnana Venkata Sai <venkata.sai.patnana@intel.com>
>
> Instead of doing a debugfs_simple_read and then
> a debugfs_read(), lets read the debugfs node just once.
> We anyway get the suitable return from the following
> strstr operation
>
> Signed-off-by: Patnana Venkata Sai <venkata.sai.patnana@intel.com>

LGTM.

Reviewed-by: Karthik B S <karthik.b.s@intel.com>

> Cc: Karthik B S <karthik.b.s@intel.com>
> Cc: Vandita Kulkarni <vandita.kulkarni@intel.com>
> Cc: Navare Manasi D <manasi.d.navare@intel.com>
> ---
>   tests/kms_dp_dsc.c | 2 --
>   1 file changed, 2 deletions(-)
>
> diff --git a/tests/kms_dp_dsc.c b/tests/kms_dp_dsc.c
> index 2446fd82bb..8bd2102447 100644
> --- a/tests/kms_dp_dsc.c
> +++ b/tests/kms_dp_dsc.c
> @@ -80,8 +80,6 @@ static bool is_dp_dsc_supported(data_t *data)
>   
>   	strcpy(file_name, data->conn_name);
>   	strcat(file_name, "/i915_dsc_fec_support");
> -	igt_require(igt_debugfs_simple_read(data->debugfs_fd, file_name, buf,
> -					    sizeof(buf)) > 0);
>   	igt_debugfs_read(data->drm_fd, file_name, buf);
>   
>   	return strstr(buf, "DSC_Sink_Support: yes");


_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test venkata.sai.patnana
@ 2021-06-10  6:14   ` Karthik B S
  0 siblings, 0 replies; 26+ messages in thread
From: Karthik B S @ 2021-06-10  6:14 UTC (permalink / raw)
  To: venkata.sai.patnana, igt-dev; +Cc: Juha-Pekka Heikkilä

On 6/9/2021 5:47 PM, venkata.sai.patnana@intel.com wrote:
> From: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>
>
> test async flip with fbs which are using maximum hw supported stride
> lenghts. Do crc test flipping between fbs which are having same content
> and then async flip fbs with different content.
>
> Cc: Karthik B S <karthik.b.s@intel.com>
> Signed-off-by: Juha-Pekka Heikkilä <juha-pekka.heikkila@intel.com>

Reviewed-by: Karthik B S <karthik.b.s@intel.com>

> ---
>   tests/kms_big_fb.c | 147 ++++++++++++++++++++++++++++++++++++++++++---
>   1 file changed, 140 insertions(+), 7 deletions(-)
>
> diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
> index 65565127fd..89ea0f23e2 100644
> --- a/tests/kms_big_fb.c
> +++ b/tests/kms_big_fb.c
> @@ -39,7 +39,7 @@ typedef struct {
>   	igt_output_t *output;
>   	igt_plane_t *plane;
>   	igt_pipe_crc_t *pipe_crc;
> -	struct igt_fb small_fb, big_fb;
> +	struct igt_fb small_fb, big_fb, big_fb_flip[2];
>   	uint32_t format;
>   	uint64_t modifier;
>   	int width, height;
> @@ -51,10 +51,13 @@ typedef struct {
>   	struct buf_ops *bops;
>   	struct intel_bb *ibb;
>   	bool max_hw_stride_test;
> +	bool async_flip_test;
>   	int hw_stride;
>   	int max_hw_fb_width;
> +	double planeclearrgb[3];
>   	uint32_t format_override;
>   	uint32_t stride_override;
> +	uint32_t async_flip_support;
>   } data_t;
>   
>   static struct intel_buf *init_buf(data_t *data,
> @@ -113,7 +116,10 @@ static void setup_fb(data_t *data, struct igt_fb *newfb, uint32_t width,
>   	}
>   
>   	cr = igt_get_cairo_ctx(data->drm_fd, newfb);
> -	igt_paint_color(cr, 0, 0, newfb->width, newfb->height, 0, 0, 0);
> +	igt_paint_color(cr, 0, 0, newfb->width, newfb->height,
> +			data->planeclearrgb[0],
> +			data->planeclearrgb[1],
> +			data->planeclearrgb[2]);
>   	igt_put_cairo_ctx(cr);
>   
>   	igt_assert(drmIoctl(data->drm_fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f) == 0);
> @@ -243,7 +249,7 @@ static void prep_fb(data_t *data)
>   	if (data->big_fb.fb_id)
>   		return;
>   
> -	if (data->hw_stride == 0) {
> +	if (!data->max_hw_stride_test) {
>   		igt_create_fb(data->drm_fd,
>   			data->big_fb_width, data->big_fb_height,
>   			data->format, data->modifier,
> @@ -252,7 +258,7 @@ static void prep_fb(data_t *data)
>   		setup_fb(data, &data->big_fb, data->big_fb_width,
>   			 data->big_fb_height, data->format, data->modifier,
>   			 data->hw_stride);
> -		igt_info("using stride length %d\n", data->hw_stride);
> +		igt_debug("using stride length %d\n", data->hw_stride);
>   	}
>   
>   	generate_pattern(data, &data->big_fb, 640, 480);
> @@ -474,11 +480,107 @@ static bool test_pipe(data_t *data)
>   	return ret;
>   }
>   
> +static bool
> +max_hw_stride_async_flip_test(data_t *data)
> +{
> +	uint32_t ret, startframe;
> +	const uint32_t w = data->output->config.default_mode.hdisplay,
> +		       h = data->output->config.default_mode.vdisplay;
> +	igt_plane_t *primary;
> +	igt_crc_t compare_crc, async_crc;
> +
> +	igt_require(data->display.is_atomic);
> +	igt_output_set_pipe(data->output, data->pipe);
> +
> +	primary = igt_output_get_plane_type(data->output, DRM_PLANE_TYPE_PRIMARY);
> +
> +	if (igt_plane_has_prop(primary, IGT_PLANE_ROTATION))
> +		igt_plane_set_rotation(primary, data->rotation);
> +
> +	igt_display_commit2(&data->display, COMMIT_ATOMIC);
> +
> +	setup_fb(data, &data->big_fb, data->big_fb_width, data->big_fb_height,
> +		 data->format, data->modifier, data->hw_stride);
> +	generate_pattern(data, &data->big_fb, 640, 480);
> +
> +	data->planeclearrgb[1] = 1.0;
> +
> +	setup_fb(data, &data->big_fb_flip[0], data->big_fb_width,
> +		 data->big_fb_height, data->format, data->modifier,
> +		 data->hw_stride);
> +
> +	data->planeclearrgb[1] = 0.0;
> +
> +	setup_fb(data, &data->big_fb_flip[1], data->big_fb_width,
> +		 data->big_fb_height, data->format, data->modifier,
> +		 data->hw_stride);
> +	generate_pattern(data, &data->big_fb_flip[1], 640, 480);
> +
> +	data->pipe_crc = igt_pipe_crc_new(data->drm_fd, data->pipe,
> +					  INTEL_PIPE_CRC_SOURCE_AUTO);
> +	igt_pipe_crc_start(data->pipe_crc);
> +
> +	igt_set_timeout(5, "Async pageflipping loop got stuck!\n");
> +	for (int i = 0; i < 2; i++) {
> +		igt_plane_set_fb(primary, &data->big_fb);
> +		igt_fb_set_size(&data->big_fb, primary, w, h);
> +		igt_plane_set_size(primary, w, h);
> +		igt_display_commit_atomic(&data->display,
> +					  DRM_MODE_ATOMIC_ALLOW_MODESET, NULL);
> +
> +		igt_wait_for_vblank(data->drm_fd, data->display.pipes[primary->pipe->pipe].crtc_offset);
> +		startframe = kmstest_get_vblank(data->drm_fd, data->pipe, 0) + 1;
> +
> +		for (int j = 0; j < 2; j++) {
> +			do {
> +				ret = drmModePageFlip(data->drm_fd, data->output->config.crtc->crtc_id,
> +						      data->big_fb_flip[i].fb_id,
> +						      DRM_MODE_PAGE_FLIP_ASYNC, NULL);
> +			} while (ret == -EBUSY);
> +			igt_assert(ret == 0);
> +
> +			do {
> +				ret = drmModePageFlip(data->drm_fd, data->output->config.crtc->crtc_id,
> +						      data->big_fb.fb_id,
> +						      DRM_MODE_PAGE_FLIP_ASYNC, NULL);
> +			} while (ret == -EBUSY);
> +			igt_assert(ret == 0);
> +		}
> +
> +		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
> +					   startframe, &compare_crc);
> +		igt_pipe_crc_get_for_frame(data->drm_fd, data->pipe_crc,
> +					   startframe + 1, &async_crc);
> +
> +		igt_assert_f(kmstest_get_vblank(data->drm_fd, data->pipe, 0) -
> +			     startframe == 1, "lost frames\n");
> +
> +		igt_assert_f(igt_check_crc_equal(&compare_crc, &async_crc)^(i^1),
> +			     "CRC failure with async flip, crc %s match for checked round\n",
> +			     i?"should":"shouldn't");
> +	}
> +	igt_reset_timeout();
> +
> +	igt_pipe_crc_free(data->pipe_crc);
> +	igt_output_set_pipe(data->output, PIPE_NONE);
> +	igt_remove_fb(data->drm_fd, &data->big_fb);
> +	igt_remove_fb(data->drm_fd, &data->big_fb_flip[0]);
> +	igt_remove_fb(data->drm_fd, &data->big_fb_flip[1]);
> +	return true;
> +}
> +
>   static void test_scanout(data_t *data)
>   {
> +	igt_output_t *output;
> +
>   	if (data->max_hw_stride_test) {
>   		data->big_fb_width = data->max_hw_fb_width;
> -		data->big_fb_height = data->max_hw_fb_width;
> +		data->big_fb_height = 0;
> +
> +		for_each_connected_output(&data->display, output) {
> +			if (data->big_fb_height < output->config.default_mode.vdisplay * 2)
> +				data->big_fb_height = output->config.default_mode.vdisplay * 2;
> +		}
>   	} else {
>   		data->big_fb_width = data->max_fb_width;
>   		data->big_fb_height = data->max_fb_height;
> @@ -488,8 +590,13 @@ static void test_scanout(data_t *data)
>   		    data->format, data->modifier);
>   
>   	for_each_pipe_with_valid_output(&data->display, data->pipe, data->output) {
> -		if (test_pipe(data))
> -			return;
> +		if (data->async_flip_test) {
> +			if (max_hw_stride_async_flip_test(data))
> +				return;
> +		} else {
> +			if (test_pipe(data))
> +				return;
> +		}
>   		break;
>   	}
>   
> @@ -699,6 +806,7 @@ igt_main
>   {
>   	igt_fixture {
>   		drmModeResPtr res;
> +		struct drm_get_cap cap = { .capability = DRM_CAP_ASYNC_PAGE_FLIP };
>   
>   		data.drm_fd = drm_open_driver_master(DRIVER_INTEL);
>   
> @@ -743,7 +851,15 @@ igt_main
>   		data.bops = buf_ops_create(data.drm_fd);
>   		data.ibb = intel_bb_create(data.drm_fd, 4096);
>   
> +		data.planeclearrgb[0] = 0.0;
> +		data.planeclearrgb[1] = 0.0;
> +		data.planeclearrgb[2] = 0.0;
> +
>   		data.max_hw_stride_test = false;
> +		data.async_flip_test = false;
> +
> +		igt_ioctl(data.drm_fd, DRM_IOCTL_GET_CAP, &cap);
> +		data.async_flip_support = cap.value;
>   	}
>   
>   	/*
> @@ -861,6 +977,23 @@ igt_main
>   						igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
>   						test_scanout(&data);
>   					}
> +
> +					// async flip doesn't support linear fbs.
> +					if (modifiers[i].modifier == DRM_FORMAT_MOD_LINEAR)
> +						continue;
> +
> +					data.async_flip_test = true;
> +					igt_describe("test async flip on maximum hardware supported stride length for given bpp and modifiers.");
> +					igt_subtest_f("%s-max-hw-stride-%dbpp-rotate-%d%s-async-flip", modifiers[i].name,
> +						formats[j].bpp, rotations[k].angle, fliptab[l].flipname) {
> +							igt_require(data.format == DRM_FORMAT_C8 ||
> +								igt_fb_supported_format(data.format));
> +							igt_require(igt_display_has_format_mod(&data.display, data.format, data.modifier));
> +							igt_require_f(data.async_flip_support, "Async Flip is not supported\n");
> +							data.max_hw_fb_width = min(data.hw_stride / (formats[j].bpp >> 3), data.max_fb_width);
> +							test_scanout(&data);
> +					}
> +					data.async_flip_test = false;
>   				}
>   
>   				igt_fixture


_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind venkata.sai.patnana
@ 2021-06-10  7:32   ` Janusz Krzysztofik
  0 siblings, 0 replies; 26+ messages in thread
From: Janusz Krzysztofik @ 2021-06-10  7:32 UTC (permalink / raw)
  To: igt-dev, venkata.sai.patnana; +Cc: Kai Vehmanen

On środa, 9 czerwca 2021 14:17:26 CEST venkata.sai.patnana@intel.com wrote:
> From: Uma Shankar <uma.shankar@intel.com>
> 
> Unload the snd module before unbinding i915. Audio holds a wakeref which
> triggers a warning otherwise, resulting in below warning and test failure.
> Currently HSW/BDW and DG1 are the platforms affected, can be extended to
> other platforms as well.
> 
> <4> [137.001006] ------------[ cut here ]------------
> <4> [137.001010] i915 0000:00:02.0: i915 raw-wakerefs=1 wakelocks=1 on cleanup
> <4> [137.001076] WARNING: CPU: 0 PID: 1417 at drivers/gpu/drm/i915/intel_runtime_pm.c:619 intel_runtime_pm_driver_release+0x56/0x60 [i915]
> <4> [137.001078] Modules linked in: snd_hda_intel i915 snd_hda_codec_hdmi mei_hdcp intel_pmt_telemetry intel_pmt_core x86_pkg_temp_thermal coretemp smsc75xx crct10dif_pclmul usbnet crc32_pclmul mii ghash_clmulni_intel kvm_intel e1000e snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core ptp pps_core mei_me snd_pcm mei prime_numbers intel_pmt [last unloaded: i915]
> <4> [137.001095] CPU: 0 PID: 1417 Comm: kworker/u16:7 Tainted: G U 5.9.0-g79478e23b1878-DII_3204+ #1
> <4> [137.001097] Hardware name: Intel Corporation Tiger Lake Client Platform/TigerLake U DDR4 SODIMM RVP, BIOS TGLSFWI1.R00.3197.A00.2005110542 05/11/2020
> <4> [137.001102] Workqueue: events_unbound async_run_entry_fn
> <4> [137.001140] RIP: 0010:intel_runtime_pm_driver_release+0x56/0x60 [i915]
> <4> [137.001142] Code: fd 10 4c 8b 67 50 4d 85 e4 75 03 4c 8b 27 e8 91 59 58 e1 45 89 e8 89 e9 4c 89 e2 48 89 c6 48 c7 c7 b0 f3 48 a0 e8 55 25 ef e0 <0f> 0b eb b5 66 0f 1f 44 00 00 48 8b 87 88 45 ff ff b9 02 00 00 00
> <4> [137.001144] RSP: 0018:ffffc900007dbd68 EFLAGS: 00010286
> <4> [137.001147] RAX: 0000000000000000 RBX: ffff88847338bea8 RCX: 0000000000000001
> <4> [137.001148] RDX: 0000000080000001 RSI: ffffffff823efa86 RDI: 00000000ffffffff
> <4> [137.001150] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001
> <4> [137.001152] R10: 000000009bda34df R11: 00000000e2a8a89a R12: ffff88849b209880
> <4> [137.001153] R13: 0000000000000001 R14: ffff88847338bea8 R15: ffff88847338fcc0
> <4> [137.001155] FS: 0000000000000000(0000) GS:ffff8884a0600000(0000) knlGS:0000000000000000
> <4> [137.001157] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> <4> [137.001159] CR2: 00007fc03597dd88 CR3: 0000000006610005 CR4: 0000000000770ef0
> <4> [137.001160] PKRU: 55555554
> <4> [137.001162] Call Trace:
> <4> [137.001199] i915_drm_suspend_late+0x102/0x120 [i915]
> <4> [137.001204] ? pci_pm_poweroff_late+0x30/0x30
> <4> [137.001209] dpm_run_callback+0x61/0x270
> <4> [137.001214] __device_suspend_late+0x8b/0x180
> <4> [137.001217] async_suspend_late+0x15/0x90
> <4> [137.001220] async_run_entry_fn+0x34/0x160
> <4> [137.001224] process_one_work+0x26c/0x5c0
> <4> [137.001231] worker_thread+0x37/0x380
> <4> [137.001235] ? process_one_work+0x5c0/0x5c0
> <4> [137.001238] kthread+0x149/0x170
> <4> [137.001241] ? kthread_park+0x80/0x80
> <4> [137.001246] ret_from_fork+0x1f/0x30
> <4> [137.001256] irq event stamp: 2329
> 
> Cc: Kai Vehmanen <kai.vehmanen@linux.intel.com>
> Cc: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  tests/device_reset.c | 61 +++++++++++++++++++++++++++++++++-----------
>  1 file changed, 46 insertions(+), 15 deletions(-)
> 
> diff --git a/tests/device_reset.c b/tests/device_reset.c
> index eef707330c..e6a468e6fa 100644
> --- a/tests/device_reset.c
> +++ b/tests/device_reset.c
> @@ -5,11 +5,13 @@
>  #include <fcntl.h>
>  #include <sys/ioctl.h>
>  #include <sys/stat.h>
> +#include <signal.h>
>  
>  #include "i915/gem.h"
>  #include "igt.h"
>  #include "igt_device_scan.h"
>  #include "igt_sysfs.h"
> +#include "igt_kmod.h"
>  
>  IGT_TEST_DESCRIPTION("Examine behavior of a driver on device sysfs reset");
>  
> @@ -28,6 +30,7 @@ struct device_fds {
>  		int drv_dir;
>  	} fds;
>  	char dev_bus_addr[DEV_BUS_ADDR_LEN];
> +	bool snd_unload;
>  };
>  
>  static int __open_sysfs_dir(int fd, const char* path)
> @@ -82,6 +85,7 @@ static void init_device_fds(struct device_fds *dev)
>  {
>  	char dev_path[PATH_MAX];
>  	char *addr_pos;
> +	uint32_t devid;
>  
>  	igt_debug("open device\n");
>  	/**
> @@ -91,9 +95,18 @@ static void init_device_fds(struct device_fds *dev)
>  	 */
>  	dev->fds.dev = __drm_open_driver(DRIVER_ANY);
>  	igt_assert_fd(dev->fds.dev);
> -	if (is_i915_device(dev->fds.dev))
> +	if (is_i915_device(dev->fds.dev)) {
>  		igt_require_gem(dev->fds.dev);
>  
> +		devid = intel_get_drm_devid(dev->fds.dev);
> +		if ((IS_HASWELL(devid) || IS_BROADWELL(devid) ||
> +		     IS_DG1(devid)) &&
> +		     (igt_kmod_is_loaded("snd_hda_intel"))) {
> +			igt_debug("Enable WA to unload snd driver\n");
> +			dev->snd_unload = true;
> +		}
> +	}
> +
>  	igt_assert(device_sysfs_path(dev->fds.dev, dev_path));
>  	addr_pos = strrchr(dev_path, '/');
>  	igt_assert(addr_pos);
> @@ -164,6 +177,34 @@ static bool is_sysfs_reset_supported(int fd)
>  /* Unbind the driver from the device */
>  static void driver_unbind(struct device_fds *dev)
>  {
> +	/**
> +	 * FIXME: Unbinding the i915 driver on affected platforms with
> +	 * audio results in a kernel WARN on "i915 raw-wakerefs=1
> +	 * wakelocks=1 on cleanup". The below CI friendly user level
> +	 * workaround to unload and de-couple audio from IGT testing,
> +	 * prevents the warning from appearing. Drop this hack as soon
> +	 * as this is fixed in the kernel. unbind/re-bind validation
> +	 * on audio side is not robust and we could have potential
> +	 * failures blocking display CI, currently this seems to the

s/to the/to be the/

Acked-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>

Thanks,
Janusz


> +	 * safest and easiest way out.
> +	 */
> +	if (dev->snd_unload) {
> +		igt_terminate_process(SIGTERM, "alsactl");
> +
> +		/* unbind snd_hda_intel */
> +		kick_snd_hda_intel();
> +
> +		if (igt_kmod_unload("snd_hda_intel", 0)) {
> +			dev->snd_unload = false;
> +			igt_warn("Could not unload snd_hda_intel\n");
> +			igt_kmod_list_loaded();
> +			igt_lsof("/dev/snd");
> +			igt_skip("Audio is in use, skipping\n");
> +		} else {
> +			igt_warn("Preventively unloaded snd_hda_intel\n");
> +		}
> +	}
> +
>  	igt_debug("unbind the driver from the device\n");
>  	igt_assert(igt_sysfs_set(dev->fds.drv_dir, "unbind",
>  		   dev->dev_bus_addr));
> @@ -175,6 +216,9 @@ static void driver_bind(struct device_fds *dev)
>  	igt_debug("rebind the driver to the device\n");
>  	igt_abort_on_f(!igt_sysfs_set(dev->fds.drv_dir, "bind",
>  		       dev->dev_bus_addr), "driver rebind failed");
> +
> +	if (dev->snd_unload)
> +		igt_kmod_load("snd_hda_intel", NULL);
>  }
>  
>  /* Initiate device reset */
> @@ -235,19 +279,6 @@ static void unbind_reset_rebind(struct device_fds *dev)
>  	igt_debug("close the device\n");
>  	close_if_opened(&dev->fds.dev);
>  
> -	/**
> -	 * FIXME: Unbinding the i915 driver on some platforms with Azalia audio
> -	 * results in a kernel WARN on "i915 raw-wakerefs=1 wakelocks=1 on cleanup".
> -	 * The below CI friendly user level workaround prevents the warning from
> -	 * appearing. Drop this hack as soon as this is fixed in the kernel.
> -	 */
> -	if (is_i915_device(dev->fds.dev)) {
> -		uint32_t devid = intel_get_drm_devid(dev->fds.dev);
> -		if (igt_warn_on_f(IS_HASWELL(devid) || IS_BROADWELL(devid),
> -		    "Manually enabling audio PM to work around a kernel WARN\n"))
> -			igt_pm_enable_audio_runtime_pm();
> -	}
> -
>  	driver_unbind(dev);
>  
>  	initiate_device_reset(dev);
> @@ -257,7 +288,7 @@ static void unbind_reset_rebind(struct device_fds *dev)
>  
>  igt_main
>  {
> -	struct device_fds dev = { .fds = {-1, -1, -1}, .dev_bus_addr = {0}};
> +	struct device_fds dev = { .fds = {-1, -1, -1}, .dev_bus_addr = {0}, };
>  
>  	igt_fixture {
>  		char dev_path[PATH_MAX];
> 




_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: Unload snd driver before i915 unbind
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: " venkata.sai.patnana
@ 2021-06-10  7:37   ` Janusz Krzysztofik
  0 siblings, 0 replies; 26+ messages in thread
From: Janusz Krzysztofik @ 2021-06-10  7:37 UTC (permalink / raw)
  To: igt-dev, venkata.sai.patnana; +Cc: Kai Vehmanen

On środa, 9 czerwca 2021 14:17:27 CEST venkata.sai.patnana@intel.com wrote:
> From: Uma Shankar <uma.shankar@intel.com>
> 
> Unload the snd module before unbinding i915. Audio holds a wakeref
> which triggers a warning otherwise, resulting in below warning and
> test failure. Currently HSW/BDW and DG1 are the platforms affected,
> can be extended to other platforms as well.
> 
> <4> [137.001006] ------------[ cut here ]------------
> <4> [137.001010] i915 0000:00:02.0: i915 raw-wakerefs=1 wakelocks=1 on cleanup
> <4> [137.001076] WARNING: CPU: 0 PID: 1417 at drivers/gpu/drm/i915/intel_runtime_pm.c:619 intel_runtime_pm_driver_release+0x56/0x60 [i915]
> <4> [137.001078] Modules linked in: snd_hda_intel i915 snd_hda_codec_hdmi mei_hdcp intel_pmt_telemetry intel_pmt_core x86_pkg_temp_thermal coretemp smsc75xx crct10dif_pclmul usbnet crc32_pclmul mii ghash_clmulni_intel kvm_intel e1000e snd_intel_dspcfg snd_hda_codec snd_hwdep snd_hda_core ptp pps_core mei_me snd_pcm mei prime_numbers intel_pmt [last unloaded: i915]
> <4> [137.001095] CPU: 0 PID: 1417 Comm: kworker/u16:7 Tainted: G U 5.9.0-g79478e23b1878-DII_3204+ #1
> <4> [137.001097] Hardware name: Intel Corporation Tiger Lake Client Platform/TigerLake U DDR4 SODIMM RVP, BIOS TGLSFWI1.R00.3197.A00.2005110542 05/11/2020
> <4> [137.001102] Workqueue: events_unbound async_run_entry_fn
> <4> [137.001140] RIP: 0010:intel_runtime_pm_driver_release+0x56/0x60 [i915]
> <4> [137.001142] Code: fd 10 4c 8b 67 50 4d 85 e4 75 03 4c 8b 27 e8 91 59 58 e1 45 89 e8 89 e9 4c 89 e2 48 89 c6 48 c7 c7 b0 f3 48 a0 e8 55 25 ef e0 <0f> 0b eb b5 66 0f 1f 44 00 00 48 8b 87 88 45 ff ff b9 02 00 00 00
> <4> [137.001144] RSP: 0018:ffffc900007dbd68 EFLAGS: 00010286
> <4> [137.001147] RAX: 0000000000000000 RBX: ffff88847338bea8 RCX: 0000000000000001
> <4> [137.001148] RDX: 0000000080000001 RSI: ffffffff823efa86 RDI: 00000000ffffffff
> <4> [137.001150] RBP: 0000000000000001 R08: 0000000000000001 R09: 0000000000000001
> <4> [137.001152] R10: 000000009bda34df R11: 00000000e2a8a89a R12: ffff88849b209880
> <4> [137.001153] R13: 0000000000000001 R14: ffff88847338bea8 R15: ffff88847338fcc0
> <4> [137.001155] FS: 0000000000000000(0000) GS:ffff8884a0600000(0000) knlGS:0000000000000000
> <4> [137.001157] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> <4> [137.001159] CR2: 00007fc03597dd88 CR3: 0000000006610005 CR4: 0000000000770ef0
> <4> [137.001160] PKRU: 55555554
> <4> [137.001162] Call Trace:
> <4> [137.001199] i915_drm_suspend_late+0x102/0x120 [i915]
> <4> [137.001204] ? pci_pm_poweroff_late+0x30/0x30
> <4> [137.001209] dpm_run_callback+0x61/0x270
> <4> [137.001214] __device_suspend_late+0x8b/0x180
> <4> [137.001217] async_suspend_late+0x15/0x90
> <4> [137.001220] async_run_entry_fn+0x34/0x160
> <4> [137.001224] process_one_work+0x26c/0x5c0
> <4> [137.001231] worker_thread+0x37/0x380
> <4> [137.001235] ? process_one_work+0x5c0/0x5c0
> <4> [137.001238] kthread+0x149/0x170
> <4> [137.001241] ? kthread_park+0x80/0x80
> <4> [137.001246] ret_from_fork+0x1f/0x30
> <4> [137.001256] irq event stamp: 2329
> 
> Cc: Kai Vehmanen <kai.vehmanen@linux.intel.com>
> Cc: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
> Signed-off-by: Uma Shankar <uma.shankar@intel.com>
> ---
>  tests/core_hotunplug.c | 53 +++++++++++++++++++++++++++++++-----------
>  1 file changed, 40 insertions(+), 13 deletions(-)
> 
> diff --git a/tests/core_hotunplug.c b/tests/core_hotunplug.c
> index a639cfb4b4..878efcc7bf 100644
> --- a/tests/core_hotunplug.c
> +++ b/tests/core_hotunplug.c
> @@ -29,6 +29,7 @@
>  #include <sys/stat.h>
>  #include <sys/types.h>
>  #include <unistd.h>
> +#include <signal.h>
>  
>  #include "i915/gem.h"
>  #include "i915/gem_create.h"
> @@ -53,6 +54,7 @@ struct hotunplug {
>  	const char *failure;
>  	bool need_healthcheck;
>  	bool has_intel_perf;
> +	bool snd_unload;
>  };
>  
>  /* Helpers */
> @@ -138,6 +140,34 @@ static void prepare(struct hotunplug *priv)
>  static void driver_unbind(struct hotunplug *priv, const char *prefix,
>  			  int timeout)
>  {
> +	/**
> +	 * FIXME: Unbinding the i915 driver on affected platforms with
> +	 * audio results in a kernel WARN on "i915 raw-wakerefs=1
> +	 * wakelocks=1 on cleanup". The below CI friendly user level
> +	 * workaround to unload and de-couple audio from IGT testing,
> +	 * prevents the warning from appearing. Drop this hack as soon
> +	 * as this is fixed in the kernel. unbind/re-bind validation
> +	 * on audio side is not robust and we could have potential
> +	 * failures blocking display CI, currently this seems to the

s/to the/to be the/

Acked-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>

Thanks,
Janusz

> +	 * safest and easiest way out.
> +	 */
> +	if (priv->snd_unload) {
> +		igt_terminate_process(SIGTERM, "alsactl");
> +
> +		/* unbind snd_hda_intel */
> +		kick_snd_hda_intel();
> +
> +		if (igt_kmod_unload("snd_hda_intel", 0)) {
> +			priv->snd_unload = false;
> +			igt_warn("Could not unload snd_hda_intel\n");
> +			igt_kmod_list_loaded();
> +			igt_lsof("/dev/snd");
> +			igt_skip("Audio is in use, skipping\n");
> +		} else {
> +			igt_warn("Preventively unloaded snd_hda_intel\n");
> +		}
> +	}
> +
>  	local_debug("%sunbinding the driver from the device\n", prefix);
>  	priv->failure = "Driver unbind failure!";
>  
> @@ -166,6 +196,9 @@ static void driver_bind(struct hotunplug *priv, int timeout)
>  	igt_fail_on_f(faccessat(priv->fd.sysfs_drv, priv->dev_bus_addr,
>  				F_OK, 0),
>  		      "Rebound device not present!\n");
> +
> +	if (priv->snd_unload)
> +		igt_kmod_load("snd_hda_intel", NULL);
>  }
>  
>  /* Remove (virtually unplug) the device from its bus */
> @@ -574,6 +607,7 @@ igt_main
>  		.failure	= NULL,
>  		.need_healthcheck = true,
>  		.has_intel_perf = false,
> +		.snd_unload	= false,
>  	};
>  
>  	igt_fixture {
> @@ -585,23 +619,16 @@ igt_main
>  		if (is_i915_device(fd_drm)) {
>  			uint32_t devid = intel_get_drm_devid(fd_drm);
>  
> +			if ((IS_HASWELL(devid) || IS_BROADWELL(devid) ||
> +			     IS_DG1(devid)) && (igt_kmod_is_loaded("snd_hda_intel"))) {
> +				igt_debug("Enable WA to unload snd driver\n");
> +				priv.snd_unload = true;
> +			}
> +
>  			gem_quiescent_gpu(fd_drm);
>  			igt_require_gem(fd_drm);
>  
>  			priv.has_intel_perf = local_i915_perf_healthcheck(fd_drm);
> -
> -			/**
> -			 * FIXME: Unbinding the i915 driver on some Haswell
> -			 * platforms with Azalia audio results in a kernel WARN
> -			 * on "i915 raw-wakerefs=1 wakelocks=1 on cleanup".  The
> -			 * below CI friendly user level workaround prevents the
> -			 * warning from appearing.  Drop this hack as soon as
> -			 * this is fixed in the kernel.
> -			 */
> -			if (igt_warn_on_f(IS_HASWELL(devid) ||
> -					  IS_BROADWELL(devid),
> -			    "Manually enabling audio PM to work around a kernel WARN\n"))
> -				igt_pm_enable_audio_runtime_pm();
>  		}
>  
>  		/* Make sure subtests always reopen the same device */
> 




_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present venkata.sai.patnana
@ 2021-06-10  7:41   ` Petri Latvala
  0 siblings, 0 replies; 26+ messages in thread
From: Petri Latvala @ 2021-06-10  7:41 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev, Nischal Varide

On Wed, Jun 09, 2021 at 05:47:25PM +0530, venkata.sai.patnana@intel.com wrote:
> From: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> 
> As Dither_CC1 debugfs changes are not preset on older platforms, we need
> not to abort the test. So if the debugfs is not present, just consider
> the value as zero.
> 
> Cc: Uma Shankar <uma.shankar@intel.com>
> Cc: Nischal Varide <nischal.varide@intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Signed-off-by: Bhanuprakash Modem <bhanuprakash.modem@intel.com>
> ---
>  tests/kms_dither.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/kms_dither.c b/tests/kms_dither.c
> index 1ff07914f4..b1f0503a6c 100644
> --- a/tests/kms_dither.c
> +++ b/tests/kms_dither.c
> @@ -107,8 +107,11 @@ static dither_status_t get_dither_state(data_t *data)
>  	igt_assert(start_loc = strstr(buf, "Dither: "));
>  	igt_assert_eq(sscanf(start_loc, "Dither: %u", &status.legacy), 1);
>  
> -	igt_assert(start_loc = strstr(buf, "Dither_CC1: "));
> -	igt_assert_eq(sscanf(start_loc, "Dither_CC1: %u", &status.cc1), 1);
> +	start_loc = strstr(buf, "Dither_CC1: ");
> +	if (!start_loc)
> +		status.cc1 = 0;
> +	else
> +		igt_assert_eq(sscanf(start_loc, "Dither_CC1: %u", &status.cc1), 1);


Squash this in the earlier patch that introduces the code changed here.


-- 
Petri Latvala



>  
>  	return status;
>  }
> -- 
> 2.25.1
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode venkata.sai.patnana
@ 2021-06-10  7:42   ` Petri Latvala
  0 siblings, 0 replies; 26+ messages in thread
From: Petri Latvala @ 2021-06-10  7:42 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev, Mohammed Khajapasha

On Wed, Jun 09, 2021 at 05:47:28PM +0530, venkata.sai.patnana@intel.com wrote:
> From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> 
> Skip prune stale mode test when 1400x1050 mode is not set
> in mode list for pruning. Some platforms have PLL programming
> restrictions that will force the driver to prune modes
> using less-common link rates.
> 
> Cc: Matt Roper <matthew.d.roper@intel.com>
> Cc: Petri Latvala <petri.latvala@intel.com>
> Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>

Reviewed-by: Petri Latvala <petri.latvala@intel.com>

> ---
>  tests/kms_force_connector_basic.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/tests/kms_force_connector_basic.c b/tests/kms_force_connector_basic.c
> index a79cad03ab..3b0146fe97 100644
> --- a/tests/kms_force_connector_basic.c
> +++ b/tests/kms_force_connector_basic.c
> @@ -316,7 +316,7 @@ igt_main_args("", long_opts, help_str, opt_handler, NULL)
>  			    temp->modes[i].vdisplay == 1050)
>  				break;
>  		}
> -		igt_assert_f(i != temp->count_modes, "1400x1050 not on mode list\n");
> +		igt_require_f(i != temp->count_modes, "1400x1050 not on mode list\n");
>  
>  		drmModeFreeConnector(temp);
>  
> -- 
> 2.25.1
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete venkata.sai.patnana
@ 2021-06-10  7:54   ` Petri Latvala
  2021-06-10 12:31   ` Ruhl, Michael J
  1 sibling, 0 replies; 26+ messages in thread
From: Petri Latvala @ 2021-06-10  7:54 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev, Mohammed Khajapasha

On Wed, Jun 09, 2021 at 05:47:29PM +0530, venkata.sai.patnana@intel.com wrote:
> From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> 
> Create framebuffer object from lmem for discrete file descriptor
> The framebuffer backing object should be from local memory for discrete.
> 
> Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
> Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> ---
>  lib/ioctl_wrappers.c | 22 ++++++++++++++++++++++
>  lib/ioctl_wrappers.h |  1 +
>  tests/kms_big_fb.c   |  7 ++++---
>  tests/kms_getfb.c    |  2 +-
>  4 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
> index 619d288a8a..48526d29cf 100644
> --- a/lib/ioctl_wrappers.c
> +++ b/lib/ioctl_wrappers.c
> @@ -594,6 +594,28 @@ void gem_sync(int fd, uint32_t handle)
>  	errno = 0;
>  }
>  
> +/**
> + * gem_buffer_create_fb_obj:
> + * @fd: open i915 drm file descriptor
> + * @size: desired size of the buffer
> + *
> + * This wraps the GEM_CREATE ioctl, which allocates a new gem buffer object of
> + * @size from file descriptor specific region
> + *
> + * Returns: The file-private handle of the created buffer object
> + */
> +uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size)
> +{
> +	uint32_t handle;
> +
> +	if (gem_has_lmem(fd))
> +		handle = gem_create_in_memory_regions(fd, size, REGION_LMEM(0));
> +	else
> +		handle = gem_create(fd, size);
> +
> +	return handle;
> +}
> +
>  /**
>   * __gem_execbuf:
>   * @fd: open i915 drm file descriptor
> diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
> index 36640e302f..a8274a3f48 100644
> --- a/lib/ioctl_wrappers.h
> +++ b/lib/ioctl_wrappers.h
> @@ -79,6 +79,7 @@ int __gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
>  void gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
>  int gem_wait(int fd, uint32_t handle, int64_t *timeout_ns);
>  void gem_sync(int fd, uint32_t handle);
> +uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size);
>  void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>  int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>  void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
> diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
> index 81bf054299..0ea076706f 100644
> --- a/tests/kms_big_fb.c
> +++ b/tests/kms_big_fb.c
> @@ -470,7 +470,8 @@ test_size_overflow(data_t *data)
>  	igt_require(data->max_fb_width >= 16383 &&
>  		    data->max_fb_height >= 16383);
>  
> -	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
> +	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
> +
>  	igt_require(bo);
>  
>  	ret = __kms_addfb(data->drm_fd, bo,
> @@ -508,7 +509,7 @@ test_size_offset_overflow(data_t *data)
>  					       DRM_FORMAT_NV12,
>  					       data->modifier));
>  
> -	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
> +	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
>  	igt_require(bo);
>  
>  	offsets[0] = 0;
> @@ -567,7 +568,7 @@ test_addfb(data_t *data)
>  			 format, data->modifier,
>  			 &size, &strides[0]);
>  
> -	bo = gem_create(data->drm_fd, size);
> +	bo = gem_buffer_create_fb_obj(data->drm_fd, size);
>  	igt_require(bo);
>  
>  	if (intel_display_ver(data->devid) < 4)
> diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
> index 14be74d6e8..75f5f30c88 100644
> --- a/tests/kms_getfb.c
> +++ b/tests/kms_getfb.c
> @@ -128,7 +128,7 @@ static void get_ccs_fb(int fd, struct drm_mode_fb_cmd2 *ret)
>  		size += add.pitches[1] * ALIGN(ALIGN(add.height, 16) / 16, 32);
>  	}
>  
> -	add.handles[0] = gem_create(fd, size);
> +	add.handles[0] = gem_buffer_create_fb_obj(fd, size);
>  	igt_require(add.handles[0] != 0);
>  	add.handles[1] = add.handles[0];

All calls to gem_create_fb_obj are in code paths that make sure the fd
is for an intel device, ok.

Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test " venkata.sai.patnana
@ 2021-06-10  8:08   ` Petri Latvala
  2021-06-10  8:20     ` Petri Latvala
  2021-06-10 12:30   ` Ruhl, Michael J
  1 sibling, 1 reply; 26+ messages in thread
From: Petri Latvala @ 2021-06-10  8:08 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev, Mohammed Khajapasha, Latvala

On Wed, Jun 09, 2021 at 05:47:30PM +0530, venkata.sai.patnana@intel.com wrote:
> From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> 
> Add invalid buffer object test case for discrete, to validate
> IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
> gem objects should be from local memory for discrete.
> 
> Cc: Latvala, Petri <petri.latvala@intel.com>
> Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
> Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> ---
>  tests/kms_addfb_basic.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> index 1fb18d668f..aac74a7568 100644
> --- a/tests/kms_addfb_basic.c
> +++ b/tests/kms_addfb_basic.c
> @@ -40,6 +40,7 @@
>  
>  #include "igt_rand.h"
>  #include "igt_device.h"
> +#include "i915/intel_memory_region.h"
>  
>  uint32_t gem_bo;
>  uint32_t gem_bo_small;
> @@ -146,6 +147,21 @@ static void invalid_tests(int fd)
>  		igt_assert(f.modifier[0] == 0);
>  	}
>  
> +	igt_subtest("invalid-smem-bo-on-discrete") {
> +		int devid;
> +		uint32_t handle, stride;
> +		uint64_t size;
> +
> +		igt_require_intel(fd);
> +		devid = intel_get_drm_devid(fd);
> +		igt_require(gem_has_lmem(devid));
> +		igt_calc_fb_size(fd, f.width, f.height,
> +				DRM_FORMAT_XRGB8888, 0, &size, &stride);
> +		handle = gem_create_in_memory_regions(fd, size, REGION_SMEM);
> +		f.handles[0] = handle;
> +		do_ioctl_err(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f, EREMOTE);
> +	}

Add docs to this with igt_describe().

-- 
Petri Latvala



> +
>  	igt_describe("Check if addfb2 call works for legacy formats");
>  	igt_subtest("legacy-format") {
>  		struct {
> -- 
> 2.25.1
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-10  8:08   ` Petri Latvala
@ 2021-06-10  8:20     ` Petri Latvala
  0 siblings, 0 replies; 26+ messages in thread
From: Petri Latvala @ 2021-06-10  8:20 UTC (permalink / raw)
  To: venkata.sai.patnana; +Cc: igt-dev, Mohammed Khajapasha, Latvala

On Thu, Jun 10, 2021 at 11:08:14AM +0300, Petri Latvala wrote:
> On Wed, Jun 09, 2021 at 05:47:30PM +0530, venkata.sai.patnana@intel.com wrote:
> > From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> > 
> > Add invalid buffer object test case for discrete, to validate
> > IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
> > gem objects should be from local memory for discrete.
> > 
> > Cc: Latvala, Petri <petri.latvala@intel.com>
> > Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
> > Signed-off-by: Mohammed Khajapasha <mohammed.khajapasha@intel.com>


Oh and change "Latvala, Petri" to "Petri Latvala". The comma confuses
git.


--
Petri Latvala
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test " venkata.sai.patnana
  2021-06-10  8:08   ` Petri Latvala
@ 2021-06-10 12:30   ` Ruhl, Michael J
  2021-06-10 12:46     ` Petri Latvala
  1 sibling, 1 reply; 26+ messages in thread
From: Ruhl, Michael J @ 2021-06-10 12:30 UTC (permalink / raw)
  To: Patnana, Venkata Sai, igt-dev; +Cc: Mohammed Khajapasha, Latvala, Petri

>-----Original Message-----
>From: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>
>Sent: Wednesday, June 9, 2021 8:18 AM
>To: igt-dev@lists.freedesktop.org
>Cc: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>; Mohammed
>Khajapasha <mohammed.khajapasha@intel.com>; Latvala; Latvala, Petri
><petri.latvala@intel.com>; Ruhl, Michael J <michael.j.ruhl@intel.com>
>Subject: [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object
>test for discrete
>
>From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
>
>Add invalid buffer object test case for discrete, to validate
>IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
>gem objects should be from local memory for discrete.
>
>Cc: Latvala, Petri <petri.latvala@intel.com>
>Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
>Signed-off-by: Mohammed Khajapasha
><mohammed.khajapasha@intel.com>
>---
> tests/kms_addfb_basic.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
>diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
>index 1fb18d668f..aac74a7568 100644
>--- a/tests/kms_addfb_basic.c
>+++ b/tests/kms_addfb_basic.c
>@@ -40,6 +40,7 @@
>
> #include "igt_rand.h"
> #include "igt_device.h"
>+#include "i915/intel_memory_region.h"
>
> uint32_t gem_bo;
> uint32_t gem_bo_small;
>@@ -146,6 +147,21 @@ static void invalid_tests(int fd)
> 		igt_assert(f.modifier[0] == 0);
> 	}
>
>+	igt_subtest("invalid-smem-bo-on-discrete") {
>+		int devid;
>+		uint32_t handle, stride;
>+		uint64_t size;
>+
>+		igt_require_intel(fd);
>+		devid = intel_get_drm_devid(fd);

This will only work on if the discrete card is the only card on the system.

Is there a better way to:

1) identify discrete cards and/or
2) specifically select a discrete card for testing?

Otherwise this test might never get past the next requirement.

Mike

>+		igt_require(gem_has_lmem(devid));
>+		igt_calc_fb_size(fd, f.width, f.height,
>+				DRM_FORMAT_XRGB8888, 0, &size, &stride);
>+		handle = gem_create_in_memory_regions(fd, size,
>REGION_SMEM);
>+		f.handles[0] = handle;
>+		do_ioctl_err(fd, LOCAL_DRM_IOCTL_MODE_ADDFB2, &f,
>EREMOTE);
>+	}
>+
> 	igt_describe("Check if addfb2 call works for legacy formats");
> 	igt_subtest("legacy-format") {
> 		struct {
>--
>2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete
  2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete venkata.sai.patnana
  2021-06-10  7:54   ` Petri Latvala
@ 2021-06-10 12:31   ` Ruhl, Michael J
  1 sibling, 0 replies; 26+ messages in thread
From: Ruhl, Michael J @ 2021-06-10 12:31 UTC (permalink / raw)
  To: Patnana, Venkata Sai, igt-dev; +Cc: Mohammed Khajapasha

>-----Original Message-----
>From: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>
>Sent: Wednesday, June 9, 2021 8:17 AM
>To: igt-dev@lists.freedesktop.org
>Cc: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>; Mohammed
>Khajapasha <mohammed.khajapasha@intel.com>; Ruhl, Michael J
><michael.j.ruhl@intel.com>
>Subject: [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for
>discrete
>
>From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
>
>Create framebuffer object from lmem for discrete file descriptor
>The framebuffer backing object should be from local memory for discrete.

Acked-by: Michael J. Ruhl <michael.j.ruhl@intel.com>

m

>Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
>Signed-off-by: Mohammed Khajapasha
><mohammed.khajapasha@intel.com>
>---
> lib/ioctl_wrappers.c | 22 ++++++++++++++++++++++
> lib/ioctl_wrappers.h |  1 +
> tests/kms_big_fb.c   |  7 ++++---
> tests/kms_getfb.c    |  2 +-
> 4 files changed, 28 insertions(+), 4 deletions(-)
>
>diff --git a/lib/ioctl_wrappers.c b/lib/ioctl_wrappers.c
>index 619d288a8a..48526d29cf 100644
>--- a/lib/ioctl_wrappers.c
>+++ b/lib/ioctl_wrappers.c
>@@ -594,6 +594,28 @@ void gem_sync(int fd, uint32_t handle)
> 	errno = 0;
> }
>
>+/**
>+ * gem_buffer_create_fb_obj:
>+ * @fd: open i915 drm file descriptor
>+ * @size: desired size of the buffer
>+ *
>+ * This wraps the GEM_CREATE ioctl, which allocates a new gem buffer
>object of
>+ * @size from file descriptor specific region
>+ *
>+ * Returns: The file-private handle of the created buffer object
>+ */
>+uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size)
>+{
>+	uint32_t handle;
>+
>+	if (gem_has_lmem(fd))
>+		handle = gem_create_in_memory_regions(fd, size,
>REGION_LMEM(0));
>+	else
>+		handle = gem_create(fd, size);
>+
>+	return handle;
>+}
>+
> /**
>  * __gem_execbuf:
>  * @fd: open i915 drm file descriptor
>diff --git a/lib/ioctl_wrappers.h b/lib/ioctl_wrappers.h
>index 36640e302f..a8274a3f48 100644
>--- a/lib/ioctl_wrappers.h
>+++ b/lib/ioctl_wrappers.h
>@@ -79,6 +79,7 @@ int __gem_set_domain(int fd, uint32_t handle, uint32_t
>read, uint32_t write);
> void gem_set_domain(int fd, uint32_t handle, uint32_t read, uint32_t write);
> int gem_wait(int fd, uint32_t handle, int64_t *timeout_ns);
> void gem_sync(int fd, uint32_t handle);
>+uint32_t gem_buffer_create_fb_obj(int fd, uint64_t size);
> void gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
> int __gem_execbuf_wr(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
> void gem_execbuf(int fd, struct drm_i915_gem_execbuffer2 *execbuf);
>diff --git a/tests/kms_big_fb.c b/tests/kms_big_fb.c
>index 81bf054299..0ea076706f 100644
>--- a/tests/kms_big_fb.c
>+++ b/tests/kms_big_fb.c
>@@ -470,7 +470,8 @@ test_size_overflow(data_t *data)
> 	igt_require(data->max_fb_width >= 16383 &&
> 		    data->max_fb_height >= 16383);
>
>-	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
>+	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
>+
> 	igt_require(bo);
>
> 	ret = __kms_addfb(data->drm_fd, bo,
>@@ -508,7 +509,7 @@ test_size_offset_overflow(data_t *data)
> 					       DRM_FORMAT_NV12,
> 					       data->modifier));
>
>-	bo = gem_create(data->drm_fd, (1ULL << 32) - 4096);
>+	bo = gem_buffer_create_fb_obj(data->drm_fd, (1ULL << 32) - 4096);
> 	igt_require(bo);
>
> 	offsets[0] = 0;
>@@ -567,7 +568,7 @@ test_addfb(data_t *data)
> 			 format, data->modifier,
> 			 &size, &strides[0]);
>
>-	bo = gem_create(data->drm_fd, size);
>+	bo = gem_buffer_create_fb_obj(data->drm_fd, size);
> 	igt_require(bo);
>
> 	if (intel_display_ver(data->devid) < 4)
>diff --git a/tests/kms_getfb.c b/tests/kms_getfb.c
>index 14be74d6e8..75f5f30c88 100644
>--- a/tests/kms_getfb.c
>+++ b/tests/kms_getfb.c
>@@ -128,7 +128,7 @@ static void get_ccs_fb(int fd, struct
>drm_mode_fb_cmd2 *ret)
> 		size += add.pitches[1] * ALIGN(ALIGN(add.height, 16) / 16,
>32);
> 	}
>
>-	add.handles[0] = gem_create(fd, size);
>+	add.handles[0] = gem_buffer_create_fb_obj(fd, size);
> 	igt_require(add.handles[0] != 0);
> 	add.handles[1] = add.handles[0];
>
>--
>2.25.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-10 12:30   ` Ruhl, Michael J
@ 2021-06-10 12:46     ` Petri Latvala
  2021-06-10 12:50       ` Ruhl, Michael J
  0 siblings, 1 reply; 26+ messages in thread
From: Petri Latvala @ 2021-06-10 12:46 UTC (permalink / raw)
  To: Ruhl, Michael J; +Cc: igt-dev, Mohammed Khajapasha

On Thu, Jun 10, 2021 at 03:30:46PM +0300, Ruhl, Michael J wrote:
> >-----Original Message-----
> >From: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>
> >Sent: Wednesday, June 9, 2021 8:18 AM
> >To: igt-dev@lists.freedesktop.org
> >Cc: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>; Mohammed
> >Khajapasha <mohammed.khajapasha@intel.com>; Latvala; Latvala, Petri
> ><petri.latvala@intel.com>; Ruhl, Michael J <michael.j.ruhl@intel.com>
> >Subject: [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object
> >test for discrete
> >
> >From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
> >
> >Add invalid buffer object test case for discrete, to validate
> >IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
> >gem objects should be from local memory for discrete.
> >
> >Cc: Latvala, Petri <petri.latvala@intel.com>
> >Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
> >Signed-off-by: Mohammed Khajapasha
> ><mohammed.khajapasha@intel.com>
> >---
> > tests/kms_addfb_basic.c | 16 ++++++++++++++++
> > 1 file changed, 16 insertions(+)
> >
> >diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
> >index 1fb18d668f..aac74a7568 100644
> >--- a/tests/kms_addfb_basic.c
> >+++ b/tests/kms_addfb_basic.c
> >@@ -40,6 +40,7 @@
> >
> > #include "igt_rand.h"
> > #include "igt_device.h"
> >+#include "i915/intel_memory_region.h"
> >
> > uint32_t gem_bo;
> > uint32_t gem_bo_small;
> >@@ -146,6 +147,21 @@ static void invalid_tests(int fd)
> > 		igt_assert(f.modifier[0] == 0);
> > 	}
> >
> >+	igt_subtest("invalid-smem-bo-on-discrete") {
> >+		int devid;
> >+		uint32_t handle, stride;
> >+		uint64_t size;
> >+
> >+		igt_require_intel(fd);
> >+		devid = intel_get_drm_devid(fd);
> 
> This will only work on if the discrete card is the only card on the system.
> 
> Is there a better way to:
> 
> 1) identify discrete cards and/or
> 2) specifically select a discrete card for testing?

The test does not select the device to use. The admin _running_ the
test does that, with IGT_DEVICE.

With that done, mapping of results will be

non-intel: skip
intel integrated: skip
intel discrete: actually tested

which looks correct. We're trying to test what happens specifically
if the used device is intel discrete, skip otherwise.


-- 
Petri Latvala
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test for discrete
  2021-06-10 12:46     ` Petri Latvala
@ 2021-06-10 12:50       ` Ruhl, Michael J
  0 siblings, 0 replies; 26+ messages in thread
From: Ruhl, Michael J @ 2021-06-10 12:50 UTC (permalink / raw)
  To: Latvala, Petri; +Cc: igt-dev, Mohammed Khajapasha

>-----Original Message-----
>From: Latvala, Petri <petri.latvala@intel.com>
>Sent: Thursday, June 10, 2021 8:47 AM
>To: Ruhl, Michael J <michael.j.ruhl@intel.com>
>Cc: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>; igt-
>dev@lists.freedesktop.org; Mohammed Khajapasha
><mohammed.khajapasha@intel.com>
>Subject: Re: [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer
>object test for discrete
>
>On Thu, Jun 10, 2021 at 03:30:46PM +0300, Ruhl, Michael J wrote:
>> >-----Original Message-----
>> >From: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>
>> >Sent: Wednesday, June 9, 2021 8:18 AM
>> >To: igt-dev@lists.freedesktop.org
>> >Cc: Patnana, Venkata Sai <venkata.sai.patnana@intel.com>; Mohammed
>> >Khajapasha <mohammed.khajapasha@intel.com>; Latvala; Latvala, Petri
>> ><petri.latvala@intel.com>; Ruhl, Michael J <michael.j.ruhl@intel.com>
>> >Subject: [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer
>object
>> >test for discrete
>> >
>> >From: Mohammed Khajapasha <mohammed.khajapasha@intel.com>
>> >
>> >Add invalid buffer object test case for discrete, to validate
>> >IOCTL_MODE_ADDFB2 ioctl for LMEM, the framebuffer backing
>> >gem objects should be from local memory for discrete.
>> >
>> >Cc: Latvala, Petri <petri.latvala@intel.com>
>> >Cc: Michael J. Ruhl <michael.j.ruhl@intel.com>
>> >Signed-off-by: Mohammed Khajapasha
>> ><mohammed.khajapasha@intel.com>
>> >---
>> > tests/kms_addfb_basic.c | 16 ++++++++++++++++
>> > 1 file changed, 16 insertions(+)
>> >
>> >diff --git a/tests/kms_addfb_basic.c b/tests/kms_addfb_basic.c
>> >index 1fb18d668f..aac74a7568 100644
>> >--- a/tests/kms_addfb_basic.c
>> >+++ b/tests/kms_addfb_basic.c
>> >@@ -40,6 +40,7 @@
>> >
>> > #include "igt_rand.h"
>> > #include "igt_device.h"
>> >+#include "i915/intel_memory_region.h"
>> >
>> > uint32_t gem_bo;
>> > uint32_t gem_bo_small;
>> >@@ -146,6 +147,21 @@ static void invalid_tests(int fd)
>> > 		igt_assert(f.modifier[0] == 0);
>> > 	}
>> >
>> >+	igt_subtest("invalid-smem-bo-on-discrete") {
>> >+		int devid;
>> >+		uint32_t handle, stride;
>> >+		uint64_t size;
>> >+
>> >+		igt_require_intel(fd);
>> >+		devid = intel_get_drm_devid(fd);
>>
>> This will only work on if the discrete card is the only card on the system.
>>
>> Is there a better way to:
>>
>> 1) identify discrete cards and/or
>> 2) specifically select a discrete card for testing?
>
>The test does not select the device to use. The admin _running_ the
>test does that, with IGT_DEVICE.

Ok, that makes sense.

I believe you (Petri) had a comment that should be addressed,
but from my perspective

Acked-by: Michael J. Ruhl <michael.j.ruhl@intel.com>

>With that done, mapping of results will be
>
>non-intel: skip
>intel integrated: skip
>intel discrete: actually tested
>
>which looks correct. We're trying to test what happens specifically
>if the used device is intel discrete, skip otherwise.

>
>--
>Petri Latvala
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2021-06-10 12:50 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-09 12:17 [igt-dev] [PATCH i-g-t 01/11] tests/kms_dither: New IGT to validate crtc Dithering venkata.sai.patnana
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 02/11] tests/kms_dither: Validate dither after CC blocks venkata.sai.patnana
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 03/11] tests/kms_dither: Dont assert if debugfs is not present venkata.sai.patnana
2021-06-10  7:41   ` Petri Latvala
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 04/11] tests/device_reset: Unload snd driver before i915 unbind venkata.sai.patnana
2021-06-10  7:32   ` Janusz Krzysztofik
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 05/11] tests/core_hotunplug: " venkata.sai.patnana
2021-06-10  7:37   ` Janusz Krzysztofik
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 06/11] tests/kms_force_connector_basic: Skip prune stale mode venkata.sai.patnana
2021-06-10  7:42   ` Petri Latvala
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 07/11] tests/kms: Create buffer object from LMEM for discrete venkata.sai.patnana
2021-06-10  7:54   ` Petri Latvala
2021-06-10 12:31   ` Ruhl, Michael J
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 08/11] tests/kms_addfb_basic: Add invalid buffer object test " venkata.sai.patnana
2021-06-10  8:08   ` Petri Latvala
2021-06-10  8:20     ` Petri Latvala
2021-06-10 12:30   ` Ruhl, Michael J
2021-06-10 12:46     ` Petri Latvala
2021-06-10 12:50       ` Ruhl, Michael J
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 09/11] tests/kms_dp_dsc: Read the debugfs only once venkata.sai.patnana
2021-06-10  6:07   ` Karthik B S
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 10/11] tests/kms_big_fb: Add max HW stride length tests venkata.sai.patnana
2021-06-09 12:17 ` [igt-dev] [PATCH i-g-t 11/11] tests/kms_big_fb: Add max hw stride lenght async flip test venkata.sai.patnana
2021-06-10  6:14   ` Karthik B S
2021-06-09 13:54 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,01/11] tests/kms_dither: New IGT to validate crtc Dithering Patchwork
2021-06-09 15:23 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.