All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers
@ 2022-04-05 19:12 José Roberto de Souza
  2022-04-05 19:12 ` [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests José Roberto de Souza
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: José Roberto de Souza @ 2022-04-05 19:12 UTC (permalink / raw)
  To: igt-dev

Due to recent refactors in i915, it completely changed
i915_drrs_status breaking all DRRS tests in kms_frontbuffer_tracking
so here adding DRRS helpers to a separate file so it can be used by
kms_frontbuffer_tracking and any future tests.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 lib/igt_drrs.c  | 151 ++++++++++++++++++++++++++++++++++++++++++++++++
 lib/igt_drrs.h  |  31 ++++++++++
 lib/meson.build |   1 +
 3 files changed, 183 insertions(+)
 create mode 100644 lib/igt_drrs.c
 create mode 100644 lib/igt_drrs.h

diff --git a/lib/igt_drrs.c b/lib/igt_drrs.c
new file mode 100644
index 0000000000..8c424c32e3
--- /dev/null
+++ b/lib/igt_drrs.c
@@ -0,0 +1,151 @@
+/*
+ * Copyright © 2022 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "drmtest.h"
+#include "igt_drrs.h"
+
+#define DRRS_ENABLE_STR "DRRS Enabled: "
+#define DRRS_ACTIVE_STR "DRRS Active: "
+#define DRRS_REFRESH_RATE_STR "DRRS refresh rate: "
+
+struct drrs_status {
+	bool enabled;
+	bool active;
+	bool low_refresh_rate;
+};
+
+static bool is_yes_or_no(char *ch)
+{
+	return strncmp(ch, "yes", 3) == 0;
+}
+
+static const char *yes_or_no(bool r)
+{
+	return r ? "yes" : "no";
+}
+
+static bool parse(int debugfs_fd, enum pipe pipe, struct drrs_status *status)
+{
+	char buf[1024], search[16], *ch;
+	int ret;
+
+	ret = igt_debugfs_simple_read(debugfs_fd, "i915_drrs_status", buf,
+				      sizeof(buf));
+	if (ret < 0) {
+		igt_info("Could not read i915_drrs_status: %s\n",
+			 strerror(-ret));
+		return false;
+	}
+
+	snprintf(search, sizeof(search), ":pipe %s]:", kmstest_pipe_name(pipe));
+	ch = strstr(buf, search);
+	if (!ch)
+		return false;
+
+	ch = strstr(buf, DRRS_ENABLE_STR);
+	if (!ch)
+		return false;
+	ch += sizeof(DRRS_ENABLE_STR);
+	status->enabled = is_yes_or_no(ch);
+
+	ch = strstr(buf, DRRS_ACTIVE_STR);
+	if (!ch)
+		return false;
+	ch += sizeof(DRRS_ACTIVE_STR);
+	status->active = is_yes_or_no(ch);
+
+	ch = strstr(buf, DRRS_REFRESH_RATE_STR);
+	if (!ch)
+		return false;
+	ch += sizeof(DRRS_REFRESH_RATE_STR);
+	status->low_refresh_rate = strncmp(ch, "low", 3) == 0;
+
+	return true;
+}
+
+bool drrs_is_enabled(int debugfs_fd, enum pipe pipe)
+{
+	struct drrs_status status;
+	bool ret;
+
+	ret = parse(debugfs_fd, pipe, &status);
+	if (!ret)
+		return false;
+
+	return status.enabled;
+}
+
+bool drrs_is_active(int debugfs_fd, enum pipe pipe)
+{
+	struct drrs_status status;
+	bool ret;
+
+	ret = parse(debugfs_fd, pipe, &status);
+	if (!ret)
+		return false;
+
+	return status.active;
+}
+
+bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe)
+{
+	struct drrs_status status;
+	bool ret;
+
+	ret = parse(debugfs_fd, pipe, &status);
+	if (!ret)
+		return false;
+
+	return status.low_refresh_rate;
+}
+
+bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len)
+{
+	struct drrs_status status;
+	int ret, used = 0;
+
+	ret = parse(debugfs_fd, pipe, &status);
+	if (!ret)
+		return false;
+
+	ret = snprintf(buf, len - used, DRRS_ENABLE_STR "%s\n",
+		       yes_or_no(status.enabled));
+	if (ret < 0 || ret >= (len - used))
+		return false;
+	used += ret;
+	buf += ret;
+
+	ret = snprintf(buf, len - used, DRRS_ACTIVE_STR "%s\n",
+		       yes_or_no(status.active));
+	if (ret < 0 || ret >= (len - used))
+		return false;
+	used += ret;
+	buf += ret;
+
+	ret = snprintf(buf, len - used, DRRS_REFRESH_RATE_STR "%s\n",
+		       status.low_refresh_rate ? "low" : "high");
+	if (ret < 0 || ret >= (len - used))
+		return false;
+
+	return true;
+}
\ No newline at end of file
diff --git a/lib/igt_drrs.h b/lib/igt_drrs.h
new file mode 100644
index 0000000000..ff79fb20fb
--- /dev/null
+++ b/lib/igt_drrs.h
@@ -0,0 +1,31 @@
+/*
+ * Copyright © 2022 Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#pragma once
+
+#include "igt_kms.h"
+
+bool drrs_is_enabled(int debugfs_fd, enum pipe pipe);
+bool drrs_is_active(int debugfs_fd, enum pipe pipe);
+bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe);
+bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len);
diff --git a/lib/meson.build b/lib/meson.build
index ccee7a5965..3176b27813 100644
--- a/lib/meson.build
+++ b/lib/meson.build
@@ -77,6 +77,7 @@ lib_sources = [
 	'igt_dummyload.c',
 	'igt_store.c',
 	'uwildmat/uwildmat.c',
+	'igt_drrs.c',
 	'igt_kmod.c',
 	'igt_panfrost.c',
 	'igt_v3d.c',
-- 
2.35.1

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

* [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests
  2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
@ 2022-04-05 19:12 ` José Roberto de Souza
  2022-04-06  7:33   ` Petri Latvala
  2022-04-05 20:17 ` [igt-dev] ✗ GitLab.Pipeline: warning for series starting with [i-g-t,1/2] lib: Add DRRS helpers Patchwork
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 10+ messages in thread
From: José Roberto de Souza @ 2022-04-05 19:12 UTC (permalink / raw)
  To: igt-dev

Due to recent refactors in i915, it completely changed
i915_drrs_status breaking all DRRS subtests, so here using
the newly added DRRS helpers to fix it.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
---
 tests/i915/kms_frontbuffer_tracking.c | 57 +++------------------------
 1 file changed, 5 insertions(+), 52 deletions(-)

diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
index 814ddb46ce..59ba6cfc11 100644
--- a/tests/i915/kms_frontbuffer_tracking.c
+++ b/tests/i915/kms_frontbuffer_tracking.c
@@ -34,6 +34,7 @@
 #include "i915/gem_create.h"
 #include "igt.h"
 #include "igt_sysfs.h"
+#include "igt_drrs.h"
 #include "igt_psr.h"
 
 IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
@@ -723,13 +724,6 @@ static void set_mode_for_params(struct modeset_params *params)
 	igt_display_commit(&drm.display);
 }
 
-static void __debugfs_read(const char *param, char *buf, int len)
-{
-	len = igt_debugfs_simple_read(drm.debugfs, param, buf, len);
-	if (len < 0)
-		igt_assert(len == -ENOENT || len == -ENODEV);
-}
-
 static int __debugfs_write(const char *param, char *buf, int len)
 {
 	return igt_sysfs_write(drm.debugfs, param, buf, len - 1);
@@ -790,47 +784,11 @@ static void drrs_set(unsigned int val)
 		igt_assert_f(ret == (sizeof(buf) - 1), "debugfs_write failed");
 }
 
-static bool is_drrs_high(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
-
-	debugfs_read("i915_drrs_status", buf);
-	return strstr(buf, "DRRS_HIGH_RR");
-}
-
-static bool is_drrs_low(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
-
-	debugfs_read("i915_drrs_status", buf);
-	return strstr(buf, "DRRS_LOW_RR");
-}
-
-static bool is_drrs_supported(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
-
-	debugfs_read("i915_drrs_status", buf);
-	return strcasestr(buf, "DRRS Supported: Yes");
-}
-
-static bool is_drrs_inactive(void)
-{
-	char buf[MAX_DRRS_STATUS_BUF_LEN];
-
-	debugfs_read("i915_drrs_status", buf);
-
-	if (strstr(buf, "DRRS_State: "))
-		return false;
-
-	return true;
-}
-
 static void drrs_print_status(void)
 {
 	char buf[MAX_DRRS_STATUS_BUF_LEN];
 
-	debugfs_read("i915_drrs_status", buf);
+	drrs_write_status(drm.debugfs, prim_mode_params.pipe, buf, sizeof(buf));
 	igt_info("DRRS STATUS :\n%s\n", buf);
 }
 
@@ -951,7 +909,7 @@ static bool fbc_wait_until_enabled(void)
 
 static bool drrs_wait_until_rr_switch_to_low(void)
 {
-	return igt_wait(is_drrs_low(), 5000, 1);
+	return igt_wait(drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe), 5000, 1);
 }
 
 #define fbc_enable() igt_set_module_param_int(drm.fd, "enable_fbc", 1)
@@ -1460,11 +1418,6 @@ static void setup_drrs(void)
 		return;
 	}
 
-	if (!is_drrs_supported()) {
-		igt_info("Can't test DRRS: Not supported.\n");
-		return;
-	}
-
 	drrs.can_test = true;
 }
 
@@ -1607,7 +1560,7 @@ static void do_status_assertions(int flags)
 	}
 
 	if (flags & ASSERT_DRRS_HIGH) {
-		if (!is_drrs_high()) {
+		if (drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe)) {
 			drrs_print_status();
 			igt_assert_f(false, "DRRS HIGH\n");
 		}
@@ -1617,7 +1570,7 @@ static void do_status_assertions(int flags)
 			igt_assert_f(false, "DRRS LOW\n");
 		}
 	} else if (flags & ASSERT_DRRS_INACTIVE) {
-		if (!is_drrs_inactive()) {
+		if (drrs_is_active(drm.debugfs, prim_mode_params.pipe)) {
 			drrs_print_status();
 			igt_assert_f(false, "DRRS INACTIVE\n");
 		}
-- 
2.35.1

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

* [igt-dev] ✗ GitLab.Pipeline: warning for series starting with [i-g-t,1/2] lib: Add DRRS helpers
  2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
  2022-04-05 19:12 ` [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests José Roberto de Souza
@ 2022-04-05 20:17 ` Patchwork
  2022-04-05 20:42 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2022-04-05 20:17 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: igt-dev

== Series Details ==

Series: series starting with [i-g-t,1/2] lib: Add DRRS helpers
URL   : https://patchwork.freedesktop.org/series/102219/
State : warning

== Summary ==

Pipeline status: FAILED.

see https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/551234 for the overview.

test:ninja-test-armhf has failed (https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/jobs/20747485):
  Ok:                   22
  Expected Fail:         3
  Fail:                288
  Unexpected Pass:       0
  Skipped:               0
  Timeout:               0
  
  Full log written to /builds/gfx-ci/igt-ci-tags/build/meson-logs/testlog.txt
  section_end:1649189827:step_script
  section_start:1649189827:upload_artifacts_on_failure
  Uploading artifacts for failed job
  Uploading artifacts...
  build: found 1724 matching files and directories   
  Uploading artifacts as "archive" to coordinator... 201 Created  id=20747485 responseStatus=201 Created token=PGuA9xDD
  section_end:1649189836:upload_artifacts_on_failure
  section_start:1649189836:cleanup_file_variables
  Cleaning up project directory and file based variables
  section_end:1649189837:cleanup_file_variables
  ERROR: Job failed: exit code 1

== Logs ==

For more details see: https://gitlab.freedesktop.org/gfx-ci/igt-ci-tags/-/pipelines/551234

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

* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/2] lib: Add DRRS helpers
  2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
  2022-04-05 19:12 ` [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests José Roberto de Souza
  2022-04-05 20:17 ` [igt-dev] ✗ GitLab.Pipeline: warning for series starting with [i-g-t,1/2] lib: Add DRRS helpers Patchwork
@ 2022-04-05 20:42 ` Patchwork
  2022-04-06  2:03 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  2022-04-13 19:59 ` [igt-dev] [PATCH i-g-t 1/2] " Ville Syrjälä
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2022-04-05 20:42 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 2571 bytes --]

== Series Details ==

Series: series starting with [i-g-t,1/2] lib: Add DRRS helpers
URL   : https://patchwork.freedesktop.org/series/102219/
State : success

== Summary ==

CI Bug Log - changes from IGT_6411 -> IGTPW_6877
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (37 -> 35)
------------------------------

  Missing    (2): fi-bsw-cyan fi-bdw-samus 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_suspend@basic-s3@smem:
    - fi-rkl-11600:       [PASS][1] -> [INCOMPLETE][2] ([i915#5127])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/fi-rkl-11600/igt@gem_exec_suspend@basic-s3@smem.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/fi-rkl-11600/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@kms_flip@basic-flip-vs-dpms@a-edp1:
    - fi-tgl-u2:          [PASS][3] -> [DMESG-WARN][4] ([i915#402])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/fi-tgl-u2/igt@kms_flip@basic-flip-vs-dpms@a-edp1.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/fi-tgl-u2/igt@kms_flip@basic-flip-vs-dpms@a-edp1.html

  
#### Possible fixes ####

  * igt@kms_flip@basic-flip-vs-modeset@a-edp1:
    - fi-tgl-u2:          [DMESG-WARN][5] ([i915#402]) -> [PASS][6]
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/fi-tgl-u2/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/fi-tgl-u2/igt@kms_flip@basic-flip-vs-modeset@a-edp1.html

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

  [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982
  [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402
  [i915#5127]: https://gitlab.freedesktop.org/drm/intel/issues/5127


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

  * CI: CI-20190529 -> None
  * IGT: IGT_6411 -> IGTPW_6877

  CI-20190529: 20190529
  CI_DRM_11458: 7b4967c734a7c99ff69154d062a071181021e49d @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_6877: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/index.html
  IGT_6411: 987678ecf2d6930981af93f719e4575c91886959 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 3231 bytes --]

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

* [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/2] lib: Add DRRS helpers
  2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
                   ` (2 preceding siblings ...)
  2022-04-05 20:42 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
@ 2022-04-06  2:03 ` Patchwork
  2022-04-13 19:59 ` [igt-dev] [PATCH i-g-t 1/2] " Ville Syrjälä
  4 siblings, 0 replies; 10+ messages in thread
From: Patchwork @ 2022-04-06  2:03 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: igt-dev

[-- Attachment #1: Type: text/plain, Size: 30273 bytes --]

== Series Details ==

Series: series starting with [i-g-t,1/2] lib: Add DRRS helpers
URL   : https://patchwork.freedesktop.org/series/102219/
State : success

== Summary ==

CI Bug Log - changes from IGT_6411_full -> IGTPW_6877_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (7 -> 6)
------------------------------

  Missing    (1): shard-skl 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@feature_discovery@display-3x:
    - shard-iclb:         NOTRUN -> [SKIP][1] ([i915#1839]) +2 similar issues
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@feature_discovery@display-3x.html

  * igt@gem_ccs@block-copy-inplace:
    - shard-iclb:         NOTRUN -> [SKIP][2] ([i915#5327])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb4/igt@gem_ccs@block-copy-inplace.html
    - shard-tglb:         NOTRUN -> [SKIP][3] ([i915#3555] / [i915#5325])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@gem_ccs@block-copy-inplace.html

  * igt@gem_create@create-massive:
    - shard-kbl:          NOTRUN -> [DMESG-WARN][4] ([i915#4991])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl3/igt@gem_create@create-massive.html
    - shard-apl:          NOTRUN -> [DMESG-WARN][5] ([i915#4991])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl2/igt@gem_create@create-massive.html

  * igt@gem_ctx_persistence@engines-cleanup:
    - shard-snb:          NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#1099])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-snb4/igt@gem_ctx_persistence@engines-cleanup.html

  * igt@gem_ctx_sseu@mmap-args:
    - shard-tglb:         NOTRUN -> [SKIP][7] ([i915#280])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb6/igt@gem_ctx_sseu@mmap-args.html

  * igt@gem_exec_balancer@parallel-balancer:
    - shard-iclb:         [PASS][8] -> [SKIP][9] ([i915#4525])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-iclb4/igt@gem_exec_balancer@parallel-balancer.html
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@gem_exec_balancer@parallel-balancer.html

  * igt@gem_exec_balancer@parallel-ordering:
    - shard-iclb:         NOTRUN -> [SKIP][10] ([i915#4525])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@gem_exec_balancer@parallel-ordering.html
    - shard-tglb:         NOTRUN -> [DMESG-FAIL][11] ([i915#5076])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb2/igt@gem_exec_balancer@parallel-ordering.html
    - shard-kbl:          NOTRUN -> [DMESG-FAIL][12] ([i915#5076])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl7/igt@gem_exec_balancer@parallel-ordering.html

  * igt@gem_exec_fair@basic-none-share@rcs0:
    - shard-iclb:         NOTRUN -> [FAIL][13] ([i915#2842])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb7/igt@gem_exec_fair@basic-none-share@rcs0.html
    - shard-glk:          NOTRUN -> [FAIL][14] ([i915#2842]) +1 similar issue
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk6/igt@gem_exec_fair@basic-none-share@rcs0.html

  * igt@gem_exec_fair@basic-none@vecs0:
    - shard-apl:          [PASS][15] -> [FAIL][16] ([i915#2842])
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-apl6/igt@gem_exec_fair@basic-none@vecs0.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl1/igt@gem_exec_fair@basic-none@vecs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - shard-tglb:         [PASS][17] -> [FAIL][18] ([i915#2842])
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-tglb6/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_flush@basic-batch-kernel-default-cmd:
    - shard-iclb:         NOTRUN -> [SKIP][19] ([fdo#109313])
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb1/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html
    - shard-tglb:         NOTRUN -> [SKIP][20] ([fdo#109313])
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@gem_exec_flush@basic-batch-kernel-default-cmd.html

  * igt@gem_exec_params@secure-non-master:
    - shard-tglb:         NOTRUN -> [SKIP][21] ([fdo#112283])
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb6/igt@gem_exec_params@secure-non-master.html
    - shard-iclb:         NOTRUN -> [SKIP][22] ([fdo#112283])
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb7/igt@gem_exec_params@secure-non-master.html

  * igt@gem_huc_copy@huc-copy:
    - shard-apl:          NOTRUN -> [SKIP][23] ([fdo#109271] / [i915#2190])
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl6/igt@gem_huc_copy@huc-copy.html
    - shard-glk:          NOTRUN -> [SKIP][24] ([fdo#109271] / [i915#2190])
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk7/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-verify:
    - shard-apl:          NOTRUN -> [SKIP][25] ([fdo#109271] / [i915#4613])
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl4/igt@gem_lmem_swapping@parallel-random-verify.html

  * igt@gem_lmem_swapping@random:
    - shard-iclb:         NOTRUN -> [SKIP][26] ([i915#4613])
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@gem_lmem_swapping@random.html

  * igt@gem_pxp@create-protected-buffer:
    - shard-iclb:         NOTRUN -> [SKIP][27] ([i915#4270]) +1 similar issue
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb4/igt@gem_pxp@create-protected-buffer.html

  * igt@gem_pxp@verify-pxp-execution-after-suspend-resume:
    - shard-tglb:         NOTRUN -> [SKIP][28] ([i915#4270]) +1 similar issue
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@gem_pxp@verify-pxp-execution-after-suspend-resume.html

  * igt@gem_render_copy@y-tiled-to-vebox-linear:
    - shard-iclb:         NOTRUN -> [SKIP][29] ([i915#768]) +3 similar issues
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb4/igt@gem_render_copy@y-tiled-to-vebox-linear.html

  * igt@gem_userptr_blits@dmabuf-sync:
    - shard-kbl:          NOTRUN -> [SKIP][30] ([fdo#109271] / [i915#3323])
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl4/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-iclb:         NOTRUN -> [SKIP][31] ([i915#3323])
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@gem_userptr_blits@dmabuf-sync.html
    - shard-tglb:         NOTRUN -> [SKIP][32] ([i915#3323])
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@gem_userptr_blits@dmabuf-sync.html

  * igt@gem_userptr_blits@unsync-unmap-cycles:
    - shard-tglb:         NOTRUN -> [SKIP][33] ([i915#3297]) +2 similar issues
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb1/igt@gem_userptr_blits@unsync-unmap-cycles.html
    - shard-iclb:         NOTRUN -> [SKIP][34] ([i915#3297]) +2 similar issues
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb5/igt@gem_userptr_blits@unsync-unmap-cycles.html

  * igt@gem_userptr_blits@vma-merge:
    - shard-snb:          NOTRUN -> [FAIL][35] ([i915#2724])
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-snb4/igt@gem_userptr_blits@vma-merge.html
    - shard-apl:          NOTRUN -> [FAIL][36] ([i915#3318])
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl3/igt@gem_userptr_blits@vma-merge.html
    - shard-glk:          NOTRUN -> [FAIL][37] ([i915#3318])
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk5/igt@gem_userptr_blits@vma-merge.html

  * igt@gen9_exec_parse@batch-invalid-length:
    - shard-iclb:         NOTRUN -> [SKIP][38] ([i915#2856]) +3 similar issues
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@gen9_exec_parse@batch-invalid-length.html

  * igt@gen9_exec_parse@bb-secure:
    - shard-tglb:         NOTRUN -> [SKIP][39] ([i915#2527] / [i915#2856]) +2 similar issues
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@gen9_exec_parse@bb-secure.html

  * igt@i915_pm_dc@dc9-dpms:
    - shard-iclb:         [PASS][40] -> [SKIP][41] ([i915#4281])
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-iclb1/igt@i915_pm_dc@dc9-dpms.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@i915_pm_dc@dc9-dpms.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp:
    - shard-kbl:          NOTRUN -> [SKIP][42] ([fdo#109271] / [i915#1937])
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl6/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html
    - shard-apl:          NOTRUN -> [SKIP][43] ([fdo#109271] / [i915#1937])
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl2/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-dp.html

  * igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a:
    - shard-glk:          NOTRUN -> [SKIP][44] ([fdo#109271] / [i915#1937])
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk1/igt@i915_pm_lpsp@kms-lpsp@kms-lpsp-hdmi-a.html

  * igt@i915_pm_rc6_residency@media-rc6-accuracy:
    - shard-tglb:         NOTRUN -> [SKIP][45] ([fdo#109289] / [fdo#111719])
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@i915_pm_rc6_residency@media-rc6-accuracy.html
    - shard-iclb:         NOTRUN -> [SKIP][46] ([fdo#109289])
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb1/igt@i915_pm_rc6_residency@media-rc6-accuracy.html

  * igt@i915_pm_rpm@fences:
    - shard-iclb:         [PASS][47] -> [SKIP][48] ([i915#579])
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-iclb5/igt@i915_pm_rpm@fences.html
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb5/igt@i915_pm_rpm@fences.html

  * igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait:
    - shard-tglb:         NOTRUN -> [SKIP][49] ([fdo#111644] / [i915#1397] / [i915#2411])
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html
    - shard-iclb:         NOTRUN -> [SKIP][50] ([fdo#110892])
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb6/igt@i915_pm_rpm@modeset-non-lpsp-stress-no-wait.html

  * igt@i915_selftest@live@gt_lrc:
    - shard-iclb:         [PASS][51] -> [DMESG-WARN][52] ([i915#2867]) +6 similar issues
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-iclb4/igt@i915_selftest@live@gt_lrc.html
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb5/igt@i915_selftest@live@gt_lrc.html

  * igt@kms_addfb_basic@invalid-smem-bo-on-discrete:
    - shard-tglb:         NOTRUN -> [SKIP][53] ([i915#3826])
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb6/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html
    - shard-iclb:         NOTRUN -> [SKIP][54] ([i915#3826])
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb7/igt@kms_addfb_basic@invalid-smem-bo-on-discrete.html

  * igt@kms_big_fb@4-tiled-64bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][55] ([i915#5286]) +4 similar issues
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb5/igt@kms_big_fb@4-tiled-64bpp-rotate-90.html

  * igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0:
    - shard-tglb:         NOTRUN -> [SKIP][56] ([i915#5286]) +6 similar issues
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@kms_big_fb@4-tiled-max-hw-stride-32bpp-rotate-0.html

  * igt@kms_big_fb@linear-32bpp-rotate-180:
    - shard-glk:          [PASS][57] -> [DMESG-WARN][58] ([i915#118])
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-glk6/igt@kms_big_fb@linear-32bpp-rotate-180.html
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk5/igt@kms_big_fb@linear-32bpp-rotate-180.html

  * igt@kms_big_fb@x-tiled-8bpp-rotate-90:
    - shard-iclb:         NOTRUN -> [SKIP][59] ([fdo#110725] / [fdo#111614])
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@kms_big_fb@x-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-apl:          NOTRUN -> [SKIP][60] ([fdo#109271] / [i915#3777]) +1 similar issue
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl4/igt@kms_big_fb@x-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip:
    - shard-kbl:          NOTRUN -> [SKIP][61] ([fdo#109271] / [i915#3777]) +1 similar issue
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl4/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-0-hflip-async-flip.html

  * igt@kms_big_fb@yf-tiled-addfb-size-overflow:
    - shard-tglb:         NOTRUN -> [SKIP][62] ([fdo#111615]) +6 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@kms_big_fb@yf-tiled-addfb-size-overflow.html

  * igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip:
    - shard-glk:          NOTRUN -> [SKIP][63] ([fdo#109271] / [i915#3777])
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk8/igt@kms_big_fb@yf-tiled-max-hw-stride-32bpp-rotate-180-hflip.html

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

  * igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip:
    - shard-iclb:         NOTRUN -> [SKIP][65] ([fdo#110723]) +1 similar issue
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb4/igt@kms_big_fb@yf-tiled-max-hw-stride-64bpp-rotate-0-async-flip.html

  * igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc:
    - shard-iclb:         NOTRUN -> [SKIP][66] ([fdo#109278] / [i915#3886]) +8 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb1/igt@kms_ccs@pipe-a-bad-aux-stride-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][67] ([i915#3689] / [i915#3886]) +3 similar issues
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb6/igt@kms_ccs@pipe-a-bad-pixel-format-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc:
    - shard-kbl:          NOTRUN -> [SKIP][68] ([fdo#109271] / [i915#3886]) +9 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl3/igt@kms_ccs@pipe-a-crc-primary-rotation-180-y_tiled_gen12_rc_ccs_cc.html

  * igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][69] ([fdo#109271] / [i915#3886]) +8 similar issues
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl6/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_mc_ccs.html
    - shard-glk:          NOTRUN -> [SKIP][70] ([fdo#109271] / [i915#3886]) +5 similar issues
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk3/igt@kms_ccs@pipe-c-bad-rotation-90-y_tiled_gen12_mc_ccs.html

  * igt@kms_ccs@pipe-c-missing-ccs-buffer-yf_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][71] ([fdo#111615] / [i915#3689]) +3 similar issues
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@kms_ccs@pipe-c-missing-ccs-buffer-yf_tiled_ccs.html

  * igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs:
    - shard-tglb:         NOTRUN -> [SKIP][72] ([i915#3689]) +9 similar issues
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb1/igt@kms_ccs@pipe-d-crc-sprite-planes-basic-y_tiled_ccs.html

  * igt@kms_cdclk@plane-scaling:
    - shard-iclb:         NOTRUN -> [SKIP][73] ([i915#3742])
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@kms_cdclk@plane-scaling.html
    - shard-tglb:         NOTRUN -> [SKIP][74] ([i915#3742])
   [74]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_cdclk@plane-scaling.html

  * igt@kms_chamelium@dp-mode-timings:
    - shard-apl:          NOTRUN -> [SKIP][75] ([fdo#109271] / [fdo#111827]) +9 similar issues
   [75]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl2/igt@kms_chamelium@dp-mode-timings.html

  * igt@kms_chamelium@hdmi-hpd-with-enabled-mode:
    - shard-kbl:          NOTRUN -> [SKIP][76] ([fdo#109271] / [fdo#111827]) +11 similar issues
   [76]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl7/igt@kms_chamelium@hdmi-hpd-with-enabled-mode.html

  * igt@kms_chamelium@vga-hpd-enable-disable-mode:
    - shard-glk:          NOTRUN -> [SKIP][77] ([fdo#109271] / [fdo#111827]) +5 similar issues
   [77]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk6/igt@kms_chamelium@vga-hpd-enable-disable-mode.html

  * igt@kms_color@pipe-d-ctm-0-25:
    - shard-iclb:         NOTRUN -> [SKIP][78] ([fdo#109278] / [i915#1149]) +2 similar issues
   [78]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@kms_color@pipe-d-ctm-0-25.html

  * igt@kms_color_chamelium@pipe-b-ctm-0-5:
    - shard-tglb:         NOTRUN -> [SKIP][79] ([fdo#109284] / [fdo#111827]) +13 similar issues
   [79]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@kms_color_chamelium@pipe-b-ctm-0-5.html

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

  * igt@kms_color_chamelium@pipe-d-ctm-red-to-blue:
    - shard-snb:          NOTRUN -> [SKIP][81] ([fdo#109271] / [fdo#111827]) +6 similar issues
   [81]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-snb7/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html
    - shard-iclb:         NOTRUN -> [SKIP][82] ([fdo#109278] / [fdo#109284] / [fdo#111827])
   [82]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb6/igt@kms_color_chamelium@pipe-d-ctm-red-to-blue.html

  * igt@kms_content_protection@legacy:
    - shard-iclb:         NOTRUN -> [SKIP][83] ([fdo#109300] / [fdo#111066])
   [83]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@kms_content_protection@legacy.html
    - shard-kbl:          NOTRUN -> [TIMEOUT][84] ([i915#1319])
   [84]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl4/igt@kms_content_protection@legacy.html
    - shard-tglb:         NOTRUN -> [SKIP][85] ([i915#1063])
   [85]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_content_protection@legacy.html

  * igt@kms_cursor_crc@pipe-a-cursor-256x85-sliding:
    - shard-snb:          NOTRUN -> [SKIP][86] ([fdo#109271]) +103 similar issues
   [86]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-snb5/igt@kms_cursor_crc@pipe-a-cursor-256x85-sliding.html

  * igt@kms_cursor_crc@pipe-a-cursor-512x512-sliding:
    - shard-iclb:         NOTRUN -> [SKIP][87] ([fdo#109278] / [fdo#109279]) +3 similar issues
   [87]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@kms_cursor_crc@pipe-a-cursor-512x512-sliding.html

  * igt@kms_cursor_crc@pipe-b-cursor-512x170-onscreen:
    - shard-tglb:         NOTRUN -> [SKIP][88] ([fdo#109279] / [i915#3359]) +3 similar issues
   [88]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_cursor_crc@pipe-b-cursor-512x170-onscreen.html

  * igt@kms_cursor_crc@pipe-c-cursor-32x32-random:
    - shard-tglb:         NOTRUN -> [SKIP][89] ([i915#3319]) +3 similar issues
   [89]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_cursor_crc@pipe-c-cursor-32x32-random.html

  * igt@kms_cursor_crc@pipe-c-cursor-suspend:
    - shard-apl:          [PASS][90] -> [DMESG-WARN][91] ([i915#180]) +1 similar issue
   [90]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-apl8/igt@kms_cursor_crc@pipe-c-cursor-suspend.html
   [91]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl1/igt@kms_cursor_crc@pipe-c-cursor-suspend.html

  * igt@kms_cursor_crc@pipe-d-cursor-max-size-rapid-movement:
    - shard-tglb:         NOTRUN -> [SKIP][92] ([i915#3359]) +9 similar issues
   [92]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb2/igt@kms_cursor_crc@pipe-d-cursor-max-size-rapid-movement.html

  * igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge:
    - shard-iclb:         NOTRUN -> [SKIP][93] ([fdo#109278]) +47 similar issues
   [93]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@kms_cursor_edge_walk@pipe-d-256x256-left-edge.html

  * igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy:
    - shard-tglb:         NOTRUN -> [SKIP][94] ([fdo#109274] / [fdo#111825]) +11 similar issues
   [94]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb5/igt@kms_cursor_legacy@2x-long-cursor-vs-flip-legacy.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy:
    - shard-glk:          [PASS][95] -> [FAIL][96] ([i915#72])
   [95]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-glk8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html
   [96]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk9/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-legacy.html

  * igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size:
    - shard-iclb:         NOTRUN -> [SKIP][97] ([fdo#109274] / [fdo#109278]) +4 similar issues
   [97]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb7/igt@kms_cursor_legacy@cursorb-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size:
    - shard-glk:          [PASS][98] -> [FAIL][99] ([i915#2346] / [i915#533])
   [98]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html
   [99]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk8/igt@kms_cursor_legacy@flip-vs-cursor-atomic-transitions-varying-size.html

  * igt@kms_cursor_legacy@pipe-d-single-bo:
    - shard-kbl:          NOTRUN -> [SKIP][100] ([fdo#109271] / [i915#533]) +1 similar issue
   [100]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl4/igt@kms_cursor_legacy@pipe-d-single-bo.html

  * igt@kms_dither@fb-8bpc-vs-panel-8bpc@edp-1-pipe-a:
    - shard-tglb:         NOTRUN -> [SKIP][101] ([i915#3788])
   [101]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@kms_dither@fb-8bpc-vs-panel-8bpc@edp-1-pipe-a.html

  * igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled:
    - shard-tglb:         NOTRUN -> [SKIP][102] ([i915#5287]) +5 similar issues
   [102]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_draw_crc@draw-method-rgb565-mmap-gtt-4tiled.html

  * igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-4tiled:
    - shard-iclb:         NOTRUN -> [SKIP][103] ([i915#5287]) +3 similar issues
   [103]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb3/igt@kms_draw_crc@draw-method-xrgb2101010-mmap-gtt-4tiled.html

  * igt@kms_dsc@xrgb8888-dsc-compression:
    - shard-tglb:         NOTRUN -> [SKIP][104] ([i915#3828])
   [104]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@kms_dsc@xrgb8888-dsc-compression.html

  * igt@kms_flip@2x-flip-vs-suspend:
    - shard-iclb:         NOTRUN -> [SKIP][105] ([fdo#109274]) +6 similar issues
   [105]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb7/igt@kms_flip@2x-flip-vs-suspend.html

  * igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling:
    - shard-iclb:         [PASS][106] -> [SKIP][107] ([i915#3701])
   [106]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-iclb8/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html
   [107]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb2/igt@kms_flip_scaled_crc@flip-32bpp-ytile-to-64bpp-ytile-downscaling.html

  * igt@kms_force_connector_basic@force-load-detect:
    - shard-tglb:         NOTRUN -> [SKIP][108] ([fdo#109285])
   [108]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb1/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt:
    - shard-iclb:         NOTRUN -> [SKIP][109] ([fdo#109280]) +26 similar issues
   [109]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb5/igt@kms_frontbuffer_tracking@fbc-2p-shrfb-fliptrack-mmap-gtt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt:
    - shard-tglb:         NOTRUN -> [SKIP][110] ([fdo#109280] / [fdo#111825]) +37 similar issues
   [110]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb6/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-indfb-plflip-blt.html

  * igt@kms_hdr@bpc-switch-suspend@bpc-switch-suspend-dp-1-pipe-a:
    - shard-kbl:          [PASS][111] -> [FAIL][112] ([i915#1188])
   [111]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_6411/shard-kbl3/igt@kms_hdr@bpc-switch-suspend@bpc-switch-suspend-dp-1-pipe-a.html
   [112]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl1/igt@kms_hdr@bpc-switch-suspend@bpc-switch-suspend-dp-1-pipe-a.html

  * igt@kms_hdr@static-toggle-suspend:
    - shard-tglb:         NOTRUN -> [SKIP][113] ([i915#3555]) +1 similar issue
   [113]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb2/igt@kms_hdr@static-toggle-suspend.html

  * igt@kms_multipipe_modeset@basic-max-pipe-crc-check:
    - shard-tglb:         NOTRUN -> [SKIP][114] ([i915#1839]) +2 similar issues
   [114]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb1/igt@kms_multipipe_modeset@basic-max-pipe-crc-check.html

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence:
    - shard-apl:          NOTRUN -> [SKIP][115] ([fdo#109271] / [i915#533]) +1 similar issue
   [115]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl6/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence.html
    - shard-glk:          NOTRUN -> [SKIP][116] ([fdo#109271] / [i915#533])
   [116]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk2/igt@kms_pipe_crc_basic@nonblocking-crc-pipe-d-frame-sequence.html

  * igt@kms_plane_alpha_blend@pipe-a-alpha-7efc:
    - shard-kbl:          NOTRUN -> [FAIL][117] ([fdo#108145] / [i915#265]) +1 similar issue
   [117]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl1/igt@kms_plane_alpha_blend@pipe-a-alpha-7efc.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-7efc:
    - shard-apl:          NOTRUN -> [FAIL][118] ([fdo#108145] / [i915#265])
   [118]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl8/igt@kms_plane_alpha_blend@pipe-b-alpha-7efc.html

  * igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb:
    - shard-apl:          NOTRUN -> [FAIL][119] ([i915#265])
   [119]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-apl7/igt@kms_plane_alpha_blend@pipe-b-alpha-transparent-fb.html

  * igt@kms_plane_alpha_blend@pipe-d-alpha-opaque-fb:
    - shard-glk:          NOTRUN -> [SKIP][120] ([fdo#109271]) +77 similar issues
   [120]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-glk6/igt@kms_plane_alpha_blend@pipe-d-alpha-opaque-fb.html

  * igt@kms_plane_lowres@pipe-a-tiling-y:
    - shard-iclb:         NOTRUN -> [SKIP][121] ([i915#3536]) +1 similar issue
   [121]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb1/igt@kms_plane_lowres@pipe-a-tiling-y.html

  * igt@kms_plane_lowres@pipe-d-tiling-4:
    - shard-tglb:         NOTRUN -> [SKIP][122] ([i915#5288]) +1 similar issue
   [122]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb1/igt@kms_plane_lowres@pipe-d-tiling-4.html

  * igt@kms_plane_lowres@pipe-d-tiling-y:
    - shard-tglb:         NOTRUN -> [SKIP][123] ([i915#3536]) +3 similar issues
   [123]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb7/igt@kms_plane_lowres@pipe-d-tiling-y.html

  * igt@kms_plane_scaling@downscale-with-rotation-factor-0-25@pipe-a-edp-1-downscale-with-rotation:
    - shard-iclb:         NOTRUN -> [SKIP][124] ([i915#5176]) +11 similar issues
   [124]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb8/igt@kms_plane_scaling@downscale-with-rotation-factor-0-25@pipe-a-edp-1-downscale-with-rotation.html

  * igt@kms_plane_scaling@downscale-with-rotation-factor-0-5@pipe-a-dp-1-downscale-with-rotation:
    - shard-kbl:          NOTRUN -> [SKIP][125] ([fdo#109271]) +193 similar issues
   [125]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-kbl4/igt@kms_plane_scaling@downscale-with-rotation-factor-0-5@pipe-a-dp-1-downscale-with-rotation.html

  * igt@kms_plane_scaling@downscale-with-rotation-factor-0-5@pipe-b-edp-1-downscale-with-rotation:
    - shard-tglb:         NOTRUN -> [SKIP][126] ([i915#5176]) +7 similar issues
   [126]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-tglb3/igt@kms_plane_scaling@downscale-with-rotation-factor-0-5@pipe-b-edp-1-downscale-with-rotation.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-edp-1-planes-upscale-downscale:
    - shard-iclb:         NOTRUN -> [SKIP][127] ([i915#5235]) +2 similar issues
   [127]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_6877/shard-iclb1/igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-a-edp-1-planes-upscale-downscale.html

  * igt@kms_plane_scaling@planes-upscale-20x20-downscale-factor-0-25@pipe-c-edp-1-planes-upscale-downscale:
    - s

== Logs ==

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

[-- Attachment #2: Type: text/html, Size: 33940 bytes --]

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

* Re: [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests
  2022-04-05 19:12 ` [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests José Roberto de Souza
@ 2022-04-06  7:33   ` Petri Latvala
  2022-04-13 19:46     ` Souza, Jose
  0 siblings, 1 reply; 10+ messages in thread
From: Petri Latvala @ 2022-04-06  7:33 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: igt-dev

On Tue, Apr 05, 2022 at 12:12:15PM -0700, José Roberto de Souza wrote:
> Due to recent refactors in i915, it completely changed
> i915_drrs_status breaking all DRRS subtests, so here using
> the newly added DRRS helpers to fix it.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  tests/i915/kms_frontbuffer_tracking.c | 57 +++------------------------
>  1 file changed, 5 insertions(+), 52 deletions(-)
> 
> diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
> index 814ddb46ce..59ba6cfc11 100644
> --- a/tests/i915/kms_frontbuffer_tracking.c
> +++ b/tests/i915/kms_frontbuffer_tracking.c
> @@ -34,6 +34,7 @@
>  #include "i915/gem_create.h"
>  #include "igt.h"
>  #include "igt_sysfs.h"
> +#include "igt_drrs.h"
>  #include "igt_psr.h"
>  
>  IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
> @@ -723,13 +724,6 @@ static void set_mode_for_params(struct modeset_params *params)
>  	igt_display_commit(&drm.display);
>  }
>  
> -static void __debugfs_read(const char *param, char *buf, int len)
> -{
> -	len = igt_debugfs_simple_read(drm.debugfs, param, buf, len);
> -	if (len < 0)
> -		igt_assert(len == -ENOENT || len == -ENODEV);
> -}
> -
>  static int __debugfs_write(const char *param, char *buf, int len)
>  {
>  	return igt_sysfs_write(drm.debugfs, param, buf, len - 1);
> @@ -790,47 +784,11 @@ static void drrs_set(unsigned int val)
>  		igt_assert_f(ret == (sizeof(buf) - 1), "debugfs_write failed");
>  }
>  
> -static bool is_drrs_high(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> -
> -	debugfs_read("i915_drrs_status", buf);
> -	return strstr(buf, "DRRS_HIGH_RR");
> -}
> -
> -static bool is_drrs_low(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> -
> -	debugfs_read("i915_drrs_status", buf);
> -	return strstr(buf, "DRRS_LOW_RR");
> -}
> -
> -static bool is_drrs_supported(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> -
> -	debugfs_read("i915_drrs_status", buf);
> -	return strcasestr(buf, "DRRS Supported: Yes");
> -}
> -
> -static bool is_drrs_inactive(void)
> -{
> -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> -
> -	debugfs_read("i915_drrs_status", buf);
> -
> -	if (strstr(buf, "DRRS_State: "))
> -		return false;
> -
> -	return true;
> -}
> -
>  static void drrs_print_status(void)
>  {
>  	char buf[MAX_DRRS_STATUS_BUF_LEN];
>  
> -	debugfs_read("i915_drrs_status", buf);
> +	drrs_write_status(drm.debugfs, prim_mode_params.pipe, buf, sizeof(buf));
>  	igt_info("DRRS STATUS :\n%s\n", buf);
>  }
>  
> @@ -951,7 +909,7 @@ static bool fbc_wait_until_enabled(void)
>  
>  static bool drrs_wait_until_rr_switch_to_low(void)
>  {
> -	return igt_wait(is_drrs_low(), 5000, 1);
> +	return igt_wait(drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe), 5000, 1);
>  }
>  
>  #define fbc_enable() igt_set_module_param_int(drm.fd, "enable_fbc", 1)
> @@ -1460,11 +1418,6 @@ static void setup_drrs(void)
>  		return;
>  	}
>  
> -	if (!is_drrs_supported()) {
> -		igt_info("Can't test DRRS: Not supported.\n");
> -		return;
> -	}
> -
>  	drrs.can_test = true;
>  }
>  
> @@ -1607,7 +1560,7 @@ static void do_status_assertions(int flags)
>  	}
>  
>  	if (flags & ASSERT_DRRS_HIGH) {
> -		if (!is_drrs_high()) {
> +		if (drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe)) {
>  			drrs_print_status();
>  			igt_assert_f(false, "DRRS HIGH\n");
>  		}
> @@ -1617,7 +1570,7 @@ static void do_status_assertions(int flags)
>  			igt_assert_f(false, "DRRS LOW\n");
>  		}
>  	} else if (flags & ASSERT_DRRS_INACTIVE) {
> -		if (!is_drrs_inactive()) {
> +		if (drrs_is_active(drm.debugfs, prim_mode_params.pipe)) {
>  			drrs_print_status();
>  			igt_assert_f(false, "DRRS INACTIVE\n");
>  		}

With how the DRRS state handling is moved to lib it's hard to read
from the patch series what actually changed in the kernel.

Does this now handle just the new semantics? Is the old one used in
any stable kernels?


-- 
Petri Latvala

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

* Re: [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests
  2022-04-06  7:33   ` Petri Latvala
@ 2022-04-13 19:46     ` Souza, Jose
  2022-04-14  9:42       ` Petri Latvala
  0 siblings, 1 reply; 10+ messages in thread
From: Souza, Jose @ 2022-04-13 19:46 UTC (permalink / raw)
  To: Latvala, Petri; +Cc: igt-dev@lists.freedesktop.org

On Wed, 2022-04-06 at 10:33 +0300, Petri Latvala wrote:
> On Tue, Apr 05, 2022 at 12:12:15PM -0700, José Roberto de Souza wrote:
> > Due to recent refactors in i915, it completely changed
> > i915_drrs_status breaking all DRRS subtests, so here using
> > the newly added DRRS helpers to fix it.
> > 
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  tests/i915/kms_frontbuffer_tracking.c | 57 +++------------------------
> >  1 file changed, 5 insertions(+), 52 deletions(-)
> > 
> > diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
> > index 814ddb46ce..59ba6cfc11 100644
> > --- a/tests/i915/kms_frontbuffer_tracking.c
> > +++ b/tests/i915/kms_frontbuffer_tracking.c
> > @@ -34,6 +34,7 @@
> >  #include "i915/gem_create.h"
> >  #include "igt.h"
> >  #include "igt_sysfs.h"
> > +#include "igt_drrs.h"
> >  #include "igt_psr.h"
> >  
> >  IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
> > @@ -723,13 +724,6 @@ static void set_mode_for_params(struct modeset_params *params)
> >  	igt_display_commit(&drm.display);
> >  }
> >  
> > -static void __debugfs_read(const char *param, char *buf, int len)
> > -{
> > -	len = igt_debugfs_simple_read(drm.debugfs, param, buf, len);
> > -	if (len < 0)
> > -		igt_assert(len == -ENOENT || len == -ENODEV);
> > -}
> > -
> >  static int __debugfs_write(const char *param, char *buf, int len)
> >  {
> >  	return igt_sysfs_write(drm.debugfs, param, buf, len - 1);
> > @@ -790,47 +784,11 @@ static void drrs_set(unsigned int val)
> >  		igt_assert_f(ret == (sizeof(buf) - 1), "debugfs_write failed");
> >  }
> >  
> > -static bool is_drrs_high(void)
> > -{
> > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > -
> > -	debugfs_read("i915_drrs_status", buf);
> > -	return strstr(buf, "DRRS_HIGH_RR");
> > -}
> > -
> > -static bool is_drrs_low(void)
> > -{
> > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > -
> > -	debugfs_read("i915_drrs_status", buf);
> > -	return strstr(buf, "DRRS_LOW_RR");
> > -}
> > -
> > -static bool is_drrs_supported(void)
> > -{
> > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > -
> > -	debugfs_read("i915_drrs_status", buf);
> > -	return strcasestr(buf, "DRRS Supported: Yes");
> > -}
> > -
> > -static bool is_drrs_inactive(void)
> > -{
> > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > -
> > -	debugfs_read("i915_drrs_status", buf);
> > -
> > -	if (strstr(buf, "DRRS_State: "))
> > -		return false;
> > -
> > -	return true;
> > -}
> > -
> >  static void drrs_print_status(void)
> >  {
> >  	char buf[MAX_DRRS_STATUS_BUF_LEN];
> >  
> > -	debugfs_read("i915_drrs_status", buf);
> > +	drrs_write_status(drm.debugfs, prim_mode_params.pipe, buf, sizeof(buf));
> >  	igt_info("DRRS STATUS :\n%s\n", buf);
> >  }
> >  
> > @@ -951,7 +909,7 @@ static bool fbc_wait_until_enabled(void)
> >  
> >  static bool drrs_wait_until_rr_switch_to_low(void)
> >  {
> > -	return igt_wait(is_drrs_low(), 5000, 1);
> > +	return igt_wait(drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe), 5000, 1);
> >  }
> >  
> >  #define fbc_enable() igt_set_module_param_int(drm.fd, "enable_fbc", 1)
> > @@ -1460,11 +1418,6 @@ static void setup_drrs(void)
> >  		return;
> >  	}
> >  
> > -	if (!is_drrs_supported()) {
> > -		igt_info("Can't test DRRS: Not supported.\n");
> > -		return;
> > -	}
> > -
> >  	drrs.can_test = true;
> >  }
> >  
> > @@ -1607,7 +1560,7 @@ static void do_status_assertions(int flags)
> >  	}
> >  
> >  	if (flags & ASSERT_DRRS_HIGH) {
> > -		if (!is_drrs_high()) {
> > +		if (drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe)) {
> >  			drrs_print_status();
> >  			igt_assert_f(false, "DRRS HIGH\n");
> >  		}
> > @@ -1617,7 +1570,7 @@ static void do_status_assertions(int flags)
> >  			igt_assert_f(false, "DRRS LOW\n");
> >  		}
> >  	} else if (flags & ASSERT_DRRS_INACTIVE) {
> > -		if (!is_drrs_inactive()) {
> > +		if (drrs_is_active(drm.debugfs, prim_mode_params.pipe)) {
> >  			drrs_print_status();
> >  			igt_assert_f(false, "DRRS INACTIVE\n");
> >  		}
> 
> With how the DRRS state handling is moved to lib it's hard to read
> from the patch series what actually changed in the kernel.

This is now the output:

gta@DUT4020-ADLP:~$ sudo more /sys/kernel/debug/dri/0/i915_drrs_status
[CRTC:80:pipe A]:
	DRRS Enabled: no
	DRRS Active: no
	Busy_frontbuffer_bits: 0x0
	DRRS refresh rate: high
[CRTC:131:pipe B]:
	DRRS Enabled: no
	DRRS Active: no
	Busy_frontbuffer_bits: 0x0
	DRRS refresh rate: high
[CRTC:182:pipe C]:
	DRRS Enabled: no
	DRRS Active: no
	Busy_frontbuffer_bits: 0x0
	DRRS refresh rate: high
[CRTC:233:pipe D]:
	DRRS Enabled: no
	DRRS Active: no
	Busy_frontbuffer_bits: 0x0
	DRRS refresh rate: high

So completely different than the old one

> 
> Does this now handle just the new semantics? Is the old one used in
> any stable kernels?

Semantics also have changed a bit, so stable kernels would be broken with the fix.

What should be done here?

> 
> 


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

* Re: [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers
  2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
                   ` (3 preceding siblings ...)
  2022-04-06  2:03 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
@ 2022-04-13 19:59 ` Ville Syrjälä
  2022-04-13 21:05   ` Souza, Jose
  4 siblings, 1 reply; 10+ messages in thread
From: Ville Syrjälä @ 2022-04-13 19:59 UTC (permalink / raw)
  To: José Roberto de Souza; +Cc: igt-dev

On Tue, Apr 05, 2022 at 12:12:14PM -0700, José Roberto de Souza wrote:
> Due to recent refactors in i915, it completely changed
> i915_drrs_status breaking all DRRS tests in kms_frontbuffer_tracking
> so here adding DRRS helpers to a separate file so it can be used by
> kms_frontbuffer_tracking and any future tests.
> 
> Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> ---
>  lib/igt_drrs.c  | 151 ++++++++++++++++++++++++++++++++++++++++++++++++
>  lib/igt_drrs.h  |  31 ++++++++++
>  lib/meson.build |   1 +
>  3 files changed, 183 insertions(+)
>  create mode 100644 lib/igt_drrs.c
>  create mode 100644 lib/igt_drrs.h
> 
> diff --git a/lib/igt_drrs.c b/lib/igt_drrs.c
> new file mode 100644
> index 0000000000..8c424c32e3
> --- /dev/null
> +++ b/lib/igt_drrs.c
> @@ -0,0 +1,151 @@
> +/*
> + * Copyright © 2022 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#include "drmtest.h"
> +#include "igt_drrs.h"
> +
> +#define DRRS_ENABLE_STR "DRRS Enabled: "
> +#define DRRS_ACTIVE_STR "DRRS Active: "
> +#define DRRS_REFRESH_RATE_STR "DRRS refresh rate: "
> +
> +struct drrs_status {
> +	bool enabled;
> +	bool active;
> +	bool low_refresh_rate;
> +};
> +
> +static bool is_yes_or_no(char *ch)
> +{
> +	return strncmp(ch, "yes", 3) == 0;
> +}
> +
> +static const char *yes_or_no(bool r)
> +{
> +	return r ? "yes" : "no";
> +}
> +
> +static bool parse(int debugfs_fd, enum pipe pipe, struct drrs_status *status)
> +{
> +	char buf[1024], search[16], *ch;
> +	int ret;
> +
> +	ret = igt_debugfs_simple_read(debugfs_fd, "i915_drrs_status", buf,
> +				      sizeof(buf));
> +	if (ret < 0) {
> +		igt_info("Could not read i915_drrs_status: %s\n",
> +			 strerror(-ret));
> +		return false;
> +	}
> +
> +	snprintf(search, sizeof(search), ":pipe %s]:", kmstest_pipe_name(pipe));

We should probably just move DRRS over to per-crtc/connector
debugfs files. Would avoid nasty stuff like this.

> +	ch = strstr(buf, search);
> +	if (!ch)
> +		return false;
> +
> +	ch = strstr(buf, DRRS_ENABLE_STR);
> +	if (!ch)
> +		return false;
> +	ch += sizeof(DRRS_ENABLE_STR);
> +	status->enabled = is_yes_or_no(ch);
> +
> +	ch = strstr(buf, DRRS_ACTIVE_STR);
> +	if (!ch)
> +		return false;
> +	ch += sizeof(DRRS_ACTIVE_STR);
> +	status->active = is_yes_or_no(ch);
> +
> +	ch = strstr(buf, DRRS_REFRESH_RATE_STR);
> +	if (!ch)
> +		return false;
> +	ch += sizeof(DRRS_REFRESH_RATE_STR);
> +	status->low_refresh_rate = strncmp(ch, "low", 3) == 0;
> +
> +	return true;
> +}
> +
> +bool drrs_is_enabled(int debugfs_fd, enum pipe pipe)
> +{
> +	struct drrs_status status;
> +	bool ret;
> +
> +	ret = parse(debugfs_fd, pipe, &status);
> +	if (!ret)
> +		return false;
> +
> +	return status.enabled;
> +}
> +
> +bool drrs_is_active(int debugfs_fd, enum pipe pipe)
> +{
> +	struct drrs_status status;
> +	bool ret;
> +
> +	ret = parse(debugfs_fd, pipe, &status);
> +	if (!ret)
> +		return false;
> +
> +	return status.active;
> +}
> +
> +bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe)
> +{
> +	struct drrs_status status;
> +	bool ret;
> +
> +	ret = parse(debugfs_fd, pipe, &status);
> +	if (!ret)
> +		return false;
> +
> +	return status.low_refresh_rate;
> +}
> +
> +bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len)
> +{
> +	struct drrs_status status;
> +	int ret, used = 0;
> +
> +	ret = parse(debugfs_fd, pipe, &status);
> +	if (!ret)
> +		return false;
> +
> +	ret = snprintf(buf, len - used, DRRS_ENABLE_STR "%s\n",
> +		       yes_or_no(status.enabled));
> +	if (ret < 0 || ret >= (len - used))
> +		return false;
> +	used += ret;
> +	buf += ret;
> +
> +	ret = snprintf(buf, len - used, DRRS_ACTIVE_STR "%s\n",
> +		       yes_or_no(status.active));
> +	if (ret < 0 || ret >= (len - used))
> +		return false;
> +	used += ret;
> +	buf += ret;
> +
> +	ret = snprintf(buf, len - used, DRRS_REFRESH_RATE_STR "%s\n",
> +		       status.low_refresh_rate ? "low" : "high");
> +	if (ret < 0 || ret >= (len - used))
> +		return false;
> +
> +	return true;
> +}
> \ No newline at end of file
> diff --git a/lib/igt_drrs.h b/lib/igt_drrs.h
> new file mode 100644
> index 0000000000..ff79fb20fb
> --- /dev/null
> +++ b/lib/igt_drrs.h
> @@ -0,0 +1,31 @@
> +/*
> + * Copyright © 2022 Intel Corporation
> + *
> + * Permission is hereby granted, free of charge, to any person obtaining a
> + * copy of this software and associated documentation files (the "Software"),
> + * to deal in the Software without restriction, including without limitation
> + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> + * and/or sell copies of the Software, and to permit persons to whom the
> + * Software is furnished to do so, subject to the following conditions:
> + *
> + * The above copyright notice and this permission notice (including the next
> + * paragraph) shall be included in all copies or substantial portions of the
> + * Software.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> + * IN THE SOFTWARE.
> + */
> +
> +#pragma once
> +
> +#include "igt_kms.h"
> +
> +bool drrs_is_enabled(int debugfs_fd, enum pipe pipe);
> +bool drrs_is_active(int debugfs_fd, enum pipe pipe);
> +bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe);
> +bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len);
> diff --git a/lib/meson.build b/lib/meson.build
> index ccee7a5965..3176b27813 100644
> --- a/lib/meson.build
> +++ b/lib/meson.build
> @@ -77,6 +77,7 @@ lib_sources = [
>  	'igt_dummyload.c',
>  	'igt_store.c',
>  	'uwildmat/uwildmat.c',
> +	'igt_drrs.c',
>  	'igt_kmod.c',
>  	'igt_panfrost.c',
>  	'igt_v3d.c',
> -- 
> 2.35.1

-- 
Ville Syrjälä
Intel

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

* Re: [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers
  2022-04-13 19:59 ` [igt-dev] [PATCH i-g-t 1/2] " Ville Syrjälä
@ 2022-04-13 21:05   ` Souza, Jose
  0 siblings, 0 replies; 10+ messages in thread
From: Souza, Jose @ 2022-04-13 21:05 UTC (permalink / raw)
  To: ville.syrjala@linux.intel.com; +Cc: igt-dev@lists.freedesktop.org

On Wed, 2022-04-13 at 22:59 +0300, Ville Syrjälä wrote:
> On Tue, Apr 05, 2022 at 12:12:14PM -0700, José Roberto de Souza wrote:
> > Due to recent refactors in i915, it completely changed
> > i915_drrs_status breaking all DRRS tests in kms_frontbuffer_tracking
> > so here adding DRRS helpers to a separate file so it can be used by
> > kms_frontbuffer_tracking and any future tests.
> > 
> > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > ---
> >  lib/igt_drrs.c  | 151 ++++++++++++++++++++++++++++++++++++++++++++++++
> >  lib/igt_drrs.h  |  31 ++++++++++
> >  lib/meson.build |   1 +
> >  3 files changed, 183 insertions(+)
> >  create mode 100644 lib/igt_drrs.c
> >  create mode 100644 lib/igt_drrs.h
> > 
> > diff --git a/lib/igt_drrs.c b/lib/igt_drrs.c
> > new file mode 100644
> > index 0000000000..8c424c32e3
> > --- /dev/null
> > +++ b/lib/igt_drrs.c
> > @@ -0,0 +1,151 @@
> > +/*
> > + * Copyright © 2022 Intel Corporation
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> > + * copy of this software and associated documentation files (the "Software"),
> > + * to deal in the Software without restriction, including without limitation
> > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > + * and/or sell copies of the Software, and to permit persons to whom the
> > + * Software is furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice (including the next
> > + * paragraph) shall be included in all copies or substantial portions of the
> > + * Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > + * IN THE SOFTWARE.
> > + */
> > +
> > +#include "drmtest.h"
> > +#include "igt_drrs.h"
> > +
> > +#define DRRS_ENABLE_STR "DRRS Enabled: "
> > +#define DRRS_ACTIVE_STR "DRRS Active: "
> > +#define DRRS_REFRESH_RATE_STR "DRRS refresh rate: "
> > +
> > +struct drrs_status {
> > +	bool enabled;
> > +	bool active;
> > +	bool low_refresh_rate;
> > +};
> > +
> > +static bool is_yes_or_no(char *ch)
> > +{
> > +	return strncmp(ch, "yes", 3) == 0;
> > +}
> > +
> > +static const char *yes_or_no(bool r)
> > +{
> > +	return r ? "yes" : "no";
> > +}
> > +
> > +static bool parse(int debugfs_fd, enum pipe pipe, struct drrs_status *status)
> > +{
> > +	char buf[1024], search[16], *ch;
> > +	int ret;
> > +
> > +	ret = igt_debugfs_simple_read(debugfs_fd, "i915_drrs_status", buf,
> > +				      sizeof(buf));
> > +	if (ret < 0) {
> > +		igt_info("Could not read i915_drrs_status: %s\n",
> > +			 strerror(-ret));
> > +		return false;
> > +	}
> > +
> > +	snprintf(search, sizeof(search), ":pipe %s]:", kmstest_pipe_name(pipe));
> 
> We should probably just move DRRS over to per-crtc/connector
> debugfs files. Would avoid nasty stuff like this.

yep, will do this then.

> 
> > +	ch = strstr(buf, search);
> > +	if (!ch)
> > +		return false;
> > +
> > +	ch = strstr(buf, DRRS_ENABLE_STR);
> > +	if (!ch)
> > +		return false;
> > +	ch += sizeof(DRRS_ENABLE_STR);
> > +	status->enabled = is_yes_or_no(ch);
> > +
> > +	ch = strstr(buf, DRRS_ACTIVE_STR);
> > +	if (!ch)
> > +		return false;
> > +	ch += sizeof(DRRS_ACTIVE_STR);
> > +	status->active = is_yes_or_no(ch);
> > +
> > +	ch = strstr(buf, DRRS_REFRESH_RATE_STR);
> > +	if (!ch)
> > +		return false;
> > +	ch += sizeof(DRRS_REFRESH_RATE_STR);
> > +	status->low_refresh_rate = strncmp(ch, "low", 3) == 0;
> > +
> > +	return true;
> > +}
> > +
> > +bool drrs_is_enabled(int debugfs_fd, enum pipe pipe)
> > +{
> > +	struct drrs_status status;
> > +	bool ret;
> > +
> > +	ret = parse(debugfs_fd, pipe, &status);
> > +	if (!ret)
> > +		return false;
> > +
> > +	return status.enabled;
> > +}
> > +
> > +bool drrs_is_active(int debugfs_fd, enum pipe pipe)
> > +{
> > +	struct drrs_status status;
> > +	bool ret;
> > +
> > +	ret = parse(debugfs_fd, pipe, &status);
> > +	if (!ret)
> > +		return false;
> > +
> > +	return status.active;
> > +}
> > +
> > +bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe)
> > +{
> > +	struct drrs_status status;
> > +	bool ret;
> > +
> > +	ret = parse(debugfs_fd, pipe, &status);
> > +	if (!ret)
> > +		return false;
> > +
> > +	return status.low_refresh_rate;
> > +}
> > +
> > +bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len)
> > +{
> > +	struct drrs_status status;
> > +	int ret, used = 0;
> > +
> > +	ret = parse(debugfs_fd, pipe, &status);
> > +	if (!ret)
> > +		return false;
> > +
> > +	ret = snprintf(buf, len - used, DRRS_ENABLE_STR "%s\n",
> > +		       yes_or_no(status.enabled));
> > +	if (ret < 0 || ret >= (len - used))
> > +		return false;
> > +	used += ret;
> > +	buf += ret;
> > +
> > +	ret = snprintf(buf, len - used, DRRS_ACTIVE_STR "%s\n",
> > +		       yes_or_no(status.active));
> > +	if (ret < 0 || ret >= (len - used))
> > +		return false;
> > +	used += ret;
> > +	buf += ret;
> > +
> > +	ret = snprintf(buf, len - used, DRRS_REFRESH_RATE_STR "%s\n",
> > +		       status.low_refresh_rate ? "low" : "high");
> > +	if (ret < 0 || ret >= (len - used))
> > +		return false;
> > +
> > +	return true;
> > +}
> > \ No newline at end of file
> > diff --git a/lib/igt_drrs.h b/lib/igt_drrs.h
> > new file mode 100644
> > index 0000000000..ff79fb20fb
> > --- /dev/null
> > +++ b/lib/igt_drrs.h
> > @@ -0,0 +1,31 @@
> > +/*
> > + * Copyright © 2022 Intel Corporation
> > + *
> > + * Permission is hereby granted, free of charge, to any person obtaining a
> > + * copy of this software and associated documentation files (the "Software"),
> > + * to deal in the Software without restriction, including without limitation
> > + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
> > + * and/or sell copies of the Software, and to permit persons to whom the
> > + * Software is furnished to do so, subject to the following conditions:
> > + *
> > + * The above copyright notice and this permission notice (including the next
> > + * paragraph) shall be included in all copies or substantial portions of the
> > + * Software.
> > + *
> > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> > + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> > + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
> > + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> > + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> > + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
> > + * IN THE SOFTWARE.
> > + */
> > +
> > +#pragma once
> > +
> > +#include "igt_kms.h"
> > +
> > +bool drrs_is_enabled(int debugfs_fd, enum pipe pipe);
> > +bool drrs_is_active(int debugfs_fd, enum pipe pipe);
> > +bool drrs_is_low_refresh_rate(int debugfs_fd, enum pipe pipe);
> > +bool drrs_write_status(int debugfs_fd, enum pipe pipe, char *buf, int len);
> > diff --git a/lib/meson.build b/lib/meson.build
> > index ccee7a5965..3176b27813 100644
> > --- a/lib/meson.build
> > +++ b/lib/meson.build
> > @@ -77,6 +77,7 @@ lib_sources = [
> >  	'igt_dummyload.c',
> >  	'igt_store.c',
> >  	'uwildmat/uwildmat.c',
> > +	'igt_drrs.c',
> >  	'igt_kmod.c',
> >  	'igt_panfrost.c',
> >  	'igt_v3d.c',
> > -- 
> > 2.35.1
> 


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

* Re: [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests
  2022-04-13 19:46     ` Souza, Jose
@ 2022-04-14  9:42       ` Petri Latvala
  0 siblings, 0 replies; 10+ messages in thread
From: Petri Latvala @ 2022-04-14  9:42 UTC (permalink / raw)
  To: Souza, Jose; +Cc: igt-dev@lists.freedesktop.org

On Wed, Apr 13, 2022 at 10:46:04PM +0300, Souza, Jose wrote:
> On Wed, 2022-04-06 at 10:33 +0300, Petri Latvala wrote:
> > On Tue, Apr 05, 2022 at 12:12:15PM -0700, José Roberto de Souza wrote:
> > > Due to recent refactors in i915, it completely changed
> > > i915_drrs_status breaking all DRRS subtests, so here using
> > > the newly added DRRS helpers to fix it.
> > > 
> > > Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
> > > Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
> > > ---
> > >  tests/i915/kms_frontbuffer_tracking.c | 57 +++------------------------
> > >  1 file changed, 5 insertions(+), 52 deletions(-)
> > > 
> > > diff --git a/tests/i915/kms_frontbuffer_tracking.c b/tests/i915/kms_frontbuffer_tracking.c
> > > index 814ddb46ce..59ba6cfc11 100644
> > > --- a/tests/i915/kms_frontbuffer_tracking.c
> > > +++ b/tests/i915/kms_frontbuffer_tracking.c
> > > @@ -34,6 +34,7 @@
> > >  #include "i915/gem_create.h"
> > >  #include "igt.h"
> > >  #include "igt_sysfs.h"
> > > +#include "igt_drrs.h"
> > >  #include "igt_psr.h"
> > >  
> > >  IGT_TEST_DESCRIPTION("Test the Kernel's frontbuffer tracking mechanism and "
> > > @@ -723,13 +724,6 @@ static void set_mode_for_params(struct modeset_params *params)
> > >  	igt_display_commit(&drm.display);
> > >  }
> > >  
> > > -static void __debugfs_read(const char *param, char *buf, int len)
> > > -{
> > > -	len = igt_debugfs_simple_read(drm.debugfs, param, buf, len);
> > > -	if (len < 0)
> > > -		igt_assert(len == -ENOENT || len == -ENODEV);
> > > -}
> > > -
> > >  static int __debugfs_write(const char *param, char *buf, int len)
> > >  {
> > >  	return igt_sysfs_write(drm.debugfs, param, buf, len - 1);
> > > @@ -790,47 +784,11 @@ static void drrs_set(unsigned int val)
> > >  		igt_assert_f(ret == (sizeof(buf) - 1), "debugfs_write failed");
> > >  }
> > >  
> > > -static bool is_drrs_high(void)
> > > -{
> > > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > > -
> > > -	debugfs_read("i915_drrs_status", buf);
> > > -	return strstr(buf, "DRRS_HIGH_RR");
> > > -}
> > > -
> > > -static bool is_drrs_low(void)
> > > -{
> > > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > > -
> > > -	debugfs_read("i915_drrs_status", buf);
> > > -	return strstr(buf, "DRRS_LOW_RR");
> > > -}
> > > -
> > > -static bool is_drrs_supported(void)
> > > -{
> > > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > > -
> > > -	debugfs_read("i915_drrs_status", buf);
> > > -	return strcasestr(buf, "DRRS Supported: Yes");
> > > -}
> > > -
> > > -static bool is_drrs_inactive(void)
> > > -{
> > > -	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > > -
> > > -	debugfs_read("i915_drrs_status", buf);
> > > -
> > > -	if (strstr(buf, "DRRS_State: "))
> > > -		return false;
> > > -
> > > -	return true;
> > > -}
> > > -
> > >  static void drrs_print_status(void)
> > >  {
> > >  	char buf[MAX_DRRS_STATUS_BUF_LEN];
> > >  
> > > -	debugfs_read("i915_drrs_status", buf);
> > > +	drrs_write_status(drm.debugfs, prim_mode_params.pipe, buf, sizeof(buf));
> > >  	igt_info("DRRS STATUS :\n%s\n", buf);
> > >  }
> > >  
> > > @@ -951,7 +909,7 @@ static bool fbc_wait_until_enabled(void)
> > >  
> > >  static bool drrs_wait_until_rr_switch_to_low(void)
> > >  {
> > > -	return igt_wait(is_drrs_low(), 5000, 1);
> > > +	return igt_wait(drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe), 5000, 1);
> > >  }
> > >  
> > >  #define fbc_enable() igt_set_module_param_int(drm.fd, "enable_fbc", 1)
> > > @@ -1460,11 +1418,6 @@ static void setup_drrs(void)
> > >  		return;
> > >  	}
> > >  
> > > -	if (!is_drrs_supported()) {
> > > -		igt_info("Can't test DRRS: Not supported.\n");
> > > -		return;
> > > -	}
> > > -
> > >  	drrs.can_test = true;
> > >  }
> > >  
> > > @@ -1607,7 +1560,7 @@ static void do_status_assertions(int flags)
> > >  	}
> > >  
> > >  	if (flags & ASSERT_DRRS_HIGH) {
> > > -		if (!is_drrs_high()) {
> > > +		if (drrs_is_low_refresh_rate(drm.debugfs, prim_mode_params.pipe)) {
> > >  			drrs_print_status();
> > >  			igt_assert_f(false, "DRRS HIGH\n");
> > >  		}
> > > @@ -1617,7 +1570,7 @@ static void do_status_assertions(int flags)
> > >  			igt_assert_f(false, "DRRS LOW\n");
> > >  		}
> > >  	} else if (flags & ASSERT_DRRS_INACTIVE) {
> > > -		if (!is_drrs_inactive()) {
> > > +		if (drrs_is_active(drm.debugfs, prim_mode_params.pipe)) {
> > >  			drrs_print_status();
> > >  			igt_assert_f(false, "DRRS INACTIVE\n");
> > >  		}
> > 
> > With how the DRRS state handling is moved to lib it's hard to read
> > from the patch series what actually changed in the kernel.
> 
> This is now the output:
> 
> gta@DUT4020-ADLP:~$ sudo more /sys/kernel/debug/dri/0/i915_drrs_status
> [CRTC:80:pipe A]:
> 	DRRS Enabled: no
> 	DRRS Active: no
> 	Busy_frontbuffer_bits: 0x0
> 	DRRS refresh rate: high
> [CRTC:131:pipe B]:
> 	DRRS Enabled: no
> 	DRRS Active: no
> 	Busy_frontbuffer_bits: 0x0
> 	DRRS refresh rate: high
> [CRTC:182:pipe C]:
> 	DRRS Enabled: no
> 	DRRS Active: no
> 	Busy_frontbuffer_bits: 0x0
> 	DRRS refresh rate: high
> [CRTC:233:pipe D]:
> 	DRRS Enabled: no
> 	DRRS Active: no
> 	Busy_frontbuffer_bits: 0x0
> 	DRRS refresh rate: high
> 
> So completely different than the old one
> 
> > 
> > Does this now handle just the new semantics? Is the old one used in
> > any stable kernels?
> 
> Semantics also have changed a bit, so stable kernels would be broken with the fix.
> 
> What should be done here?

A fallback to parse the old format would be neat.

If the DRRS stuff is moved to a different path (per-crtc), can the old
path use old format (if exists) and new path use new format?


-- 
Petri Latvala

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

end of thread, other threads:[~2022-04-14  9:42 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-04-05 19:12 [igt-dev] [PATCH i-g-t 1/2] lib: Add DRRS helpers José Roberto de Souza
2022-04-05 19:12 ` [igt-dev] [PATCH i-g-t 2/2] test: kms_frontbuffer_tracking: Fix DRRS subtests José Roberto de Souza
2022-04-06  7:33   ` Petri Latvala
2022-04-13 19:46     ` Souza, Jose
2022-04-14  9:42       ` Petri Latvala
2022-04-05 20:17 ` [igt-dev] ✗ GitLab.Pipeline: warning for series starting with [i-g-t,1/2] lib: Add DRRS helpers Patchwork
2022-04-05 20:42 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2022-04-06  2:03 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2022-04-13 19:59 ` [igt-dev] [PATCH i-g-t 1/2] " Ville Syrjälä
2022-04-13 21:05   ` Souza, Jose

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.