Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part
@ 2023-02-14  9:57 Vinod Govindapillai
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs Vinod Govindapillai
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Vinod Govindapillai @ 2023-02-14  9:57 UTC (permalink / raw)
  To: igt-dev

Some panels generate spurious HPDs during CI execution causing
random unexpected failures. There are two parts for handling
this issue - in driver and in IGT. This is for IGT.

IGT will set ignore long HPD debugfs entry to ignore long HPDs
in the driver. And then by force connect the active connectors,
we can avoid the detect hooks being executed from drm and hence
avoid random failures. The behavior is controlled using the
environment variable IGT_KMS_IGNORE_HPD. Set this var in CI
exections where panels that generate spurioud HPDs are used.

Vinod Govindapillai (2):
  lib/igt_debugfs: set provision to ignore long HPDs
  lib/igt_kms: handle spurious HPDs - IGT part

 lib/igt_debugfs.c | 22 ++++++++++++++++++++
 lib/igt_debugfs.h |  1 +
 lib/igt_kms.c     | 53 +++++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 74 insertions(+), 2 deletions(-)

-- 
2.34.1

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

* [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs
  2023-02-14  9:57 [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part Vinod Govindapillai
@ 2023-02-14  9:57 ` Vinod Govindapillai
  2023-03-08 18:36   ` Kamil Konieczny
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part Vinod Govindapillai
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 8+ messages in thread
From: Vinod Govindapillai @ 2023-02-14  9:57 UTC (permalink / raw)
  To: igt-dev

Add provision to ignore long HPDs as some displays generate
long HPDs even while connected. For some CI systems with
such displays it might be usefull to ignore such spurious
HPDs while executing testcases.

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 lib/igt_debugfs.c | 22 ++++++++++++++++++++++
 lib/igt_debugfs.h |  1 +
 2 files changed, 23 insertions(+)

diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 6de178d6..8d2d3144 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -411,6 +411,28 @@ bool igt_debugfs_search(int device, const char *filename, const char *substring)
 	return matched;
 }
 
+/**
+ * igt_ignore_long_hpd:
+ *
+ * Set / unset ignore long HPD events from the panels. Some panels
+ * generate long HPDs even while connected to the ports causing
+ * unexpected CI execution issues. Set this to ignore such unexpected
+ * long HPDs where we dont expect to disconnect the displays.
+ */
+void igt_ignore_long_hpd(int drm_fd, bool enable)
+{
+	int fd = igt_debugfs_open(drm_fd, "i915_ignore_long_hpd", O_WRONLY);
+
+	if (fd < 0) {
+		igt_debug("couldn't open ignore long hpd file\n");
+		return;
+	}
+
+	igt_assert_eq(write(fd, enable ? "1" : "0", 1), 1);
+
+	close(fd);
+}
+
 static void igt_hpd_storm_exit_handler(int sig)
 {
 	int fd = drm_open_driver(DRIVER_INTEL);
diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
index a883e2d4..fe23a5ef 100644
--- a/lib/igt_debugfs.h
+++ b/lib/igt_debugfs.h
@@ -72,6 +72,7 @@ void igt_hpd_storm_set_threshold(int fd, unsigned int threshold);
 void igt_hpd_storm_reset(int fd);
 bool igt_hpd_storm_detected(int fd);
 void igt_require_hpd_storm_ctl(int fd);
+void igt_ignore_long_hpd(int fd, bool enable);
 
 /*
  * Drop caches
-- 
2.34.1

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

* [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part
  2023-02-14  9:57 [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part Vinod Govindapillai
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs Vinod Govindapillai
@ 2023-02-14  9:57 ` Vinod Govindapillai
  2023-03-08 18:31   ` Kamil Konieczny
  2023-02-14 10:46 ` [igt-dev] ✓ Fi.CI.BAT: success for Handle spurious HPDs - IGT part (rev2) Patchwork
  2023-02-14 14:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 1 reply; 8+ messages in thread
From: Vinod Govindapillai @ 2023-02-14  9:57 UTC (permalink / raw)
  To: igt-dev

Some panels generate long HPDs during CI execution steps even
while connected to the system and cause unexpected CI execution
failures. In environments like CI, we don't expect to disconnect
the panels in the middle of the CI execution.

There are two parts to handle this case - display driver and IGT

1. In the display driver, based on a flag, long HPDs are
ignored. This flag can be set/unset using debugfs on systems
where such panels are connected.

2. In IGT, add provision to set ignore long HPD debugfs entry
on the driver and also set Force "on" the active connectors.
With force on, the connector's detect sequences will not get
initiated.

This patch handles the IGT part.

An enviroment variable "IGT_KMS_IGNORE_HPD" is added to
differentiate systems which require such spurious HPD handling.
If this variable is on, ignore long HPD debugs entry is set and
active connectors are set to force "on" state.

Many thanks to "Imre Deak" for the suggestions and support

v2: Minor updates in the comments.

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
---
 lib/igt_kms.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 51 insertions(+), 2 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 8c7dd85b..f99ab183 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -2390,6 +2390,51 @@ static bool igt_pipe_has_valid_output(igt_display_t *display, enum pipe pipe)
 	return false;
 }
 
+/**
+ * igt_handle_spurious_hpd:
+ * @display: a pointer to igt_display_t structure
+ *
+ * Handle environment variable "IGT_KMS_IGNORE_HPD" to manage the spurious
+ * HPD cases in CI systems where such spurious HPDs are generated by the
+ * panels without any specific reasons and cause CI execution failures.
+ *
+ * This will set the i915_ignore_long_hpd debugfs entry to 1 as a cue for
+ * the driver to start ignoring the HPDs.
+ *
+ * Also, this will set the active connectors' force status to "on"
+ * so that dp/hdmi_detect routines don't get called frequently.
+ *
+ * Force status is kept on after this until it is manually reset.
+ */
+static void igt_handle_spurious_hpd(igt_display_t *display)
+{
+	igt_output_t *output;
+
+	/* Proceed with spurious HPD handling only if the env var is set */
+	if (!getenv("IGT_KMS_IGNORE_HPD"))
+		return;
+
+	/* Set the ignore HPD for the driver */
+	igt_ignore_long_hpd(display->drm_fd, true);
+
+	for_each_connected_output(display, output) {
+		drmModeConnector *conn = output->config.connector;
+
+		if (!force_connector(display->drm_fd, conn, "on")) {
+			igt_info("Unable to force state on %s-%d\n",
+				 kmstest_connector_type_str(conn->connector_type),
+				 conn->connector_type_id);
+			continue;
+		}
+
+		igt_info("Force connector ON for %s-%d\n",
+			 kmstest_connector_type_str(conn->connector_type),
+			 conn->connector_type_id);
+	}
+
+	dump_forced_connectors();
+}
+
 /**
  * igt_display_require:
  * @display: a pointer to an initialized #igt_display_t structure
@@ -2713,11 +2758,15 @@ void igt_display_require(igt_display_t *display, int drm_fd)
 out:
 	LOG_UNINDENT(display);
 
-	if (display->n_pipes && display->n_outputs)
+	if (display->n_pipes && display->n_outputs) {
 		igt_enable_connectors(drm_fd);
-	else
+
+		igt_handle_spurious_hpd(display);
+	}
+	else {
 		igt_skip("No KMS driver or no outputs, pipes: %d, outputs: %d\n",
 			 display->n_pipes, display->n_outputs);
+	}
 }
 
 /**
-- 
2.34.1

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

* [igt-dev] ✓ Fi.CI.BAT: success for Handle spurious HPDs - IGT part (rev2)
  2023-02-14  9:57 [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part Vinod Govindapillai
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs Vinod Govindapillai
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part Vinod Govindapillai
@ 2023-02-14 10:46 ` Patchwork
  2023-02-14 14:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-02-14 10:46 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: igt-dev

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

== Series Details ==

Series: Handle spurious HPDs - IGT part (rev2)
URL   : https://patchwork.freedesktop.org/series/113820/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12736 -> IGTPW_8491
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (38 -> 37)
------------------------------

  Additional (1): fi-tgl-1115g4 
  Missing    (2): bat-kbl-2 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@debugfs_test@basic-hwmon:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][1] ([i915#7456])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@debugfs_test@basic-hwmon.html

  * igt@gem_huc_copy@huc-copy:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][2] ([i915#2190])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@gem_huc_copy@huc-copy.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][3] ([i915#4613]) +3 similar issues
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@i915_pm_backlight@basic-brightness:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][4] ([i915#7561])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@i915_pm_backlight@basic-brightness.html

  * igt@i915_suspend@basic-s3-without-i915:
    - fi-tgl-1115g4:      NOTRUN -> [INCOMPLETE][5] ([i915#7443])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@i915_suspend@basic-s3-without-i915.html

  * igt@kms_chamelium_edid@dp-edid-read:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][6] ([i915#7828]) +7 similar issues
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@kms_chamelium_edid@dp-edid-read.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][7] ([i915#4103])
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@kms_cursor_legacy@basic-busy-flip-before-cursor.html

  * igt@kms_force_connector_basic@force-load-detect:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][8] ([fdo#109285])
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_psr@cursor_plane_move:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][9] ([fdo#110189]) +3 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@kms_psr@cursor_plane_move.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][10] ([i915#3555])
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-userptr:
    - fi-tgl-1115g4:      NOTRUN -> [SKIP][11] ([fdo#109295] / [i915#3301])
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/fi-tgl-1115g4/igt@prime_vgem@basic-userptr.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@hangcheck:
    - {bat-dg2-11}:       [ABORT][12] ([i915#7913]) -> [PASS][13]
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/bat-dg2-11/igt@i915_selftest@live@hangcheck.html
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/bat-dg2-11/igt@i915_selftest@live@hangcheck.html

  * igt@i915_selftest@live@migrate:
    - {bat-adlp-6}:       [DMESG-FAIL][14] ([i915#7699]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/bat-adlp-6/igt@i915_selftest@live@migrate.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/bat-adlp-6/igt@i915_selftest@live@migrate.html

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

  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/intel/issues/5354
  [i915#6311]: https://gitlab.freedesktop.org/drm/intel/issues/6311
  [i915#7359]: https://gitlab.freedesktop.org/drm/intel/issues/7359
  [i915#7443]: https://gitlab.freedesktop.org/drm/intel/issues/7443
  [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7699]: https://gitlab.freedesktop.org/drm/intel/issues/7699
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#7913]: https://gitlab.freedesktop.org/drm/intel/issues/7913


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7160 -> IGTPW_8491

  CI-20190529: 20190529
  CI_DRM_12736: a2aa96584caf1f5ad2047cae0689b26d12c51d2f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8491: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/index.html
  IGT_7160: 45da871dd2684227e93a2fc002b87dfc58bd5fd9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* [igt-dev] ✓ Fi.CI.IGT: success for Handle spurious HPDs - IGT part (rev2)
  2023-02-14  9:57 [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part Vinod Govindapillai
                   ` (2 preceding siblings ...)
  2023-02-14 10:46 ` [igt-dev] ✓ Fi.CI.BAT: success for Handle spurious HPDs - IGT part (rev2) Patchwork
@ 2023-02-14 14:42 ` Patchwork
  3 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2023-02-14 14:42 UTC (permalink / raw)
  To: Vinod Govindapillai; +Cc: igt-dev

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

== Series Details ==

Series: Handle spurious HPDs - IGT part (rev2)
URL   : https://patchwork.freedesktop.org/series/113820/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_12736_full -> IGTPW_8491_full
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (11 -> 10)
------------------------------

  Missing    (1): shard-rkl0 

New tests
---------

  New tests have been introduced between CI_DRM_12736_full and IGTPW_8491_full:

### New IGT tests (1) ###

  * igt@kms_cursor_edge_walk@64x64-left-edge@pipe-b-edp-1:
    - Statuses : 1 pass(s)
    - Exec time: [0.0] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_fair@basic-deadline:
    - shard-apl:          NOTRUN -> [FAIL][1] ([i915#2846])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl1/igt@gem_exec_fair@basic-deadline.html

  * igt@gem_exec_fair@basic-throttle@rcs0:
    - shard-glk:          [PASS][2] -> [FAIL][3] ([i915#2842])
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-glk5/igt@gem_exec_fair@basic-throttle@rcs0.html
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-glk9/igt@gem_exec_fair@basic-throttle@rcs0.html

  * igt@gem_exec_schedule@wide@rcs0:
    - shard-glk:          [PASS][4] -> [FAIL][5] ([i915#6659])
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-glk6/igt@gem_exec_schedule@wide@rcs0.html
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-glk1/igt@gem_exec_schedule@wide@rcs0.html

  * igt@gem_lmem_swapping@smem-oom:
    - shard-apl:          NOTRUN -> [SKIP][6] ([fdo#109271] / [i915#4613]) +1 similar issue
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl4/igt@gem_lmem_swapping@smem-oom.html

  * igt@kms_ccs@pipe-a-crc-primary-rotation-180-4_tiled_dg2_rc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][7] ([fdo#109271]) +88 similar issues
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl4/igt@kms_ccs@pipe-a-crc-primary-rotation-180-4_tiled_dg2_rc_ccs.html

  * igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs:
    - shard-apl:          NOTRUN -> [SKIP][8] ([fdo#109271] / [i915#3886]) +2 similar issues
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl3/igt@kms_ccs@pipe-c-ccs-on-another-bo-y_tiled_gen12_mc_ccs.html

  * igt@kms_color@ctm-max@pipe-a-hdmi-a-1:
    - shard-snb:          NOTRUN -> [SKIP][9] ([fdo#109271]) +14 similar issues
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-snb1/igt@kms_color@ctm-max@pipe-a-hdmi-a-1.html

  * igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt:
    - shard-glk:          NOTRUN -> [SKIP][10] ([fdo#109271]) +3 similar issues
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-glk7/igt@kms_frontbuffer_tracking@fbcpsr-2p-scndscrn-pri-indfb-draw-mmap-gtt.html

  * igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-dp-1:
    - shard-apl:          NOTRUN -> [FAIL][11] ([i915#4573]) +1 similar issue
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl7/igt@kms_plane_alpha_blend@alpha-opaque-fb@pipe-a-dp-1.html

  * igt@kms_psr2_sf@primary-plane-update-sf-dmg-area:
    - shard-apl:          NOTRUN -> [SKIP][12] ([fdo#109271] / [i915#658])
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl4/igt@kms_psr2_sf@primary-plane-update-sf-dmg-area.html

  * igt@kms_writeback@writeback-invalid-parameters:
    - shard-apl:          NOTRUN -> [SKIP][13] ([fdo#109271] / [i915#2437])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl2/igt@kms_writeback@writeback-invalid-parameters.html

  
#### Possible fixes ####

  * igt@drm_fdinfo@idle@rcs0:
    - {shard-rkl}:        [FAIL][14] ([i915#7742]) -> [PASS][15]
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-1/igt@drm_fdinfo@idle@rcs0.html
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-3/igt@drm_fdinfo@idle@rcs0.html

  * igt@fbdev@info:
    - {shard-rkl}:        [SKIP][16] ([i915#2582]) -> [PASS][17] +1 similar issue
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-2/igt@fbdev@info.html
   [17]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-1/igt@fbdev@info.html
    - {shard-tglu}:       [SKIP][18] ([i915#2582]) -> [PASS][19]
   [18]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-tglu-6/igt@fbdev@info.html
   [19]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-tglu-7/igt@fbdev@info.html

  * igt@gem_ctx_exec@basic-nohangcheck:
    - {shard-rkl}:        [FAIL][20] ([i915#6268]) -> [PASS][21]
   [20]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-2/igt@gem_ctx_exec@basic-nohangcheck.html
   [21]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@gem_ctx_exec@basic-nohangcheck.html

  * igt@gem_ctx_persistence@engines-hang@bcs0:
    - {shard-rkl}:        [SKIP][22] ([i915#6252]) -> [PASS][23]
   [22]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-5/igt@gem_ctx_persistence@engines-hang@bcs0.html
   [23]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-2/igt@gem_ctx_persistence@engines-hang@bcs0.html

  * igt@gem_exec_fair@basic-none-solo@rcs0:
    - shard-apl:          [FAIL][24] ([i915#2842]) -> [PASS][25]
   [24]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-apl4/igt@gem_exec_fair@basic-none-solo@rcs0.html
   [25]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl1/igt@gem_exec_fair@basic-none-solo@rcs0.html

  * igt@gem_exec_fair@basic-pace-share@rcs0:
    - {shard-rkl}:        [FAIL][26] ([i915#2842]) -> [PASS][27] +1 similar issue
   [26]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-3/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [27]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-2/igt@gem_exec_fair@basic-pace-share@rcs0.html
    - {shard-tglu}:       [FAIL][28] ([i915#2842]) -> [PASS][29]
   [28]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-tglu-2/igt@gem_exec_fair@basic-pace-share@rcs0.html
   [29]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-tglu-5/igt@gem_exec_fair@basic-pace-share@rcs0.html

  * igt@gem_exec_reloc@basic-gtt-wc-noreloc:
    - {shard-rkl}:        [SKIP][30] ([i915#3281]) -> [PASS][31] +9 similar issues
   [30]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-6/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html
   [31]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@gem_exec_reloc@basic-gtt-wc-noreloc.html

  * igt@gem_exec_suspend@basic-s3@smem:
    - {shard-rkl}:        [ABORT][32] ([i915#5122]) -> [PASS][33]
   [32]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-4/igt@gem_exec_suspend@basic-s3@smem.html
   [33]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-2/igt@gem_exec_suspend@basic-s3@smem.html

  * igt@gem_pread@bench:
    - {shard-rkl}:        [SKIP][34] ([i915#3282]) -> [PASS][35] +1 similar issue
   [34]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-2/igt@gem_pread@bench.html
   [35]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@gem_pread@bench.html

  * igt@gen9_exec_parse@bb-start-far:
    - {shard-rkl}:        [SKIP][36] ([i915#2527]) -> [PASS][37] +2 similar issues
   [36]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-1/igt@gen9_exec_parse@bb-start-far.html
   [37]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@gen9_exec_parse@bb-start-far.html

  * igt@i915_pipe_stress@stress-xrgb8888-untiled:
    - {shard-rkl}:        [SKIP][38] ([i915#4098]) -> [PASS][39]
   [38]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-5/igt@i915_pipe_stress@stress-xrgb8888-untiled.html
   [39]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@i915_pipe_stress@stress-xrgb8888-untiled.html

  * igt@i915_pm_dc@dc5-psr:
    - {shard-rkl}:        [SKIP][40] ([i915#658]) -> [PASS][41]
   [40]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-3/igt@i915_pm_dc@dc5-psr.html
   [41]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@i915_pm_dc@dc5-psr.html

  * igt@i915_pm_rc6_residency@rc6-idle@bcs0:
    - {shard-dg1}:        [FAIL][42] ([i915#3591]) -> [PASS][43]
   [42]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-dg1-15/igt@i915_pm_rc6_residency@rc6-idle@bcs0.html
   [43]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-dg1-18/igt@i915_pm_rc6_residency@rc6-idle@bcs0.html

  * igt@i915_pm_rpm@drm-resources-equal:
    - {shard-rkl}:        [SKIP][44] ([fdo#109308]) -> [PASS][45]
   [44]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-4/igt@i915_pm_rpm@drm-resources-equal.html
   [45]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@i915_pm_rpm@drm-resources-equal.html

  * igt@i915_pm_sseu@full-enable:
    - {shard-rkl}:        [SKIP][46] ([i915#4387]) -> [PASS][47]
   [46]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-2/igt@i915_pm_sseu@full-enable.html
   [47]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@i915_pm_sseu@full-enable.html

  * igt@kms_big_fb@x-tiled-16bpp-rotate-180:
    - {shard-tglu}:       [SKIP][48] ([i915#1845] / [i915#7651]) -> [PASS][49] +9 similar issues
   [48]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-tglu-6/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html
   [49]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-tglu-5/igt@kms_big_fb@x-tiled-16bpp-rotate-180.html

  * igt@kms_cursor_crc@cursor-suspend@pipe-a-dp-1:
    - shard-apl:          [ABORT][50] -> [PASS][51]
   [50]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-apl2/igt@kms_cursor_crc@cursor-suspend@pipe-a-dp-1.html
   [51]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl1/igt@kms_cursor_crc@cursor-suspend@pipe-a-dp-1.html

  * igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic:
    - shard-glk:          [FAIL][52] ([i915#72]) -> [PASS][53]
   [52]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-glk8/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html
   [53]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-glk3/igt@kms_cursor_legacy@2x-long-flip-vs-cursor-atomic.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions:
    - shard-apl:          [FAIL][54] ([i915#2346]) -> [PASS][55]
   [54]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-apl3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html
   [55]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl2/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions.html

  * igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size:
    - shard-glk:          [FAIL][56] ([i915#2346]) -> [PASS][57]
   [56]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-glk3/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html
   [57]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-glk6/igt@kms_cursor_legacy@flip-vs-cursor@atomic-transitions-varying-size.html

  * igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1:
    - shard-apl:          [FAIL][58] ([i915#79]) -> [PASS][59]
   [58]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-apl6/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html
   [59]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl7/igt@kms_flip@flip-vs-expired-vblank-interruptible@a-dp1.html

  * igt@kms_flip@flip-vs-suspend@b-dp1:
    - shard-apl:          [ABORT][60] ([i915#180]) -> [PASS][61]
   [60]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-apl2/igt@kms_flip@flip-vs-suspend@b-dp1.html
   [61]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-apl7/igt@kms_flip@flip-vs-suspend@b-dp1.html

  * igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt:
    - {shard-tglu}:       [SKIP][62] ([i915#1849]) -> [PASS][63] +3 similar issues
   [62]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-tglu-6/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html
   [63]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-tglu-3/igt@kms_frontbuffer_tracking@fbc-1p-offscren-pri-indfb-draw-blt.html

  * igt@kms_frontbuffer_tracking@fbc-badstride:
    - {shard-rkl}:        [SKIP][64] ([i915#1849] / [i915#4098]) -> [PASS][65] +16 similar issues
   [64]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-4/igt@kms_frontbuffer_tracking@fbc-badstride.html
   [65]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@kms_frontbuffer_tracking@fbc-badstride.html

  * igt@kms_psr@cursor_render:
    - {shard-rkl}:        [SKIP][66] ([i915#1072]) -> [PASS][67] +2 similar issues
   [66]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-1/igt@kms_psr@cursor_render.html
   [67]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@kms_psr@cursor_render.html

  * igt@kms_vblank@pipe-b-query-idle:
    - {shard-rkl}:        [SKIP][68] ([i915#1845] / [i915#4098]) -> [PASS][69] +18 similar issues
   [68]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-5/igt@kms_vblank@pipe-b-query-idle.html
   [69]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@kms_vblank@pipe-b-query-idle.html

  * igt@prime_vgem@basic-fence-flip:
    - {shard-rkl}:        [SKIP][70] ([fdo#109295] / [i915#3708] / [i915#4098]) -> [PASS][71]
   [70]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-2/igt@prime_vgem@basic-fence-flip.html
   [71]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-6/igt@prime_vgem@basic-fence-flip.html

  * igt@prime_vgem@basic-write:
    - {shard-rkl}:        [SKIP][72] ([fdo#109295] / [i915#3291] / [i915#3708]) -> [PASS][73] +1 similar issue
   [72]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12736/shard-rkl-3/igt@prime_vgem@basic-write.html
   [73]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/shard-rkl-5/igt@prime_vgem@basic-write.html

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

  [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109274]: https://bugs.freedesktop.org/show_bug.cgi?id=109274
  [fdo#109279]: https://bugs.freedesktop.org/show_bug.cgi?id=109279
  [fdo#109280]: https://bugs.freedesktop.org/show_bug.cgi?id=109280
  [fdo#109283]: https://bugs.freedesktop.org/show_bug.cgi?id=109283
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109291]: https://bugs.freedesktop.org/show_bug.cgi?id=109291
  [fdo#109295]: https://bugs.freedesktop.org/show_bug.cgi?id=109295
  [fdo#109307]: https://bugs.freedesktop.org/show_bug.cgi?id=109307
  [fdo#109308]: https://bugs.freedesktop.org/show_bug.cgi?id=109308
  [fdo#109313]: https://bugs.freedesktop.org/show_bug.cgi?id=109313
  [fdo#109314]: https://bugs.freedesktop.org/show_bug.cgi?id=109314
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109506]: https://bugs.freedesktop.org/show_bug.cgi?id=109506
  [fdo#109642]: https://bugs.freedesktop.org/show_bug.cgi?id=109642
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110723]: https://bugs.freedesktop.org/show_bug.cgi?id=110723
  [fdo#111068]: https://bugs.freedesktop.org/show_bug.cgi?id=111068
  [fdo#111614]: https://bugs.freedesktop.org/show_bug.cgi?id=111614
  [fdo#111615]: https://bugs.freedesktop.org/show_bug.cgi?id=111615
  [fdo#111644]: https://bugs.freedesktop.org/show_bug.cgi?id=111644
  [fdo#111656]: https://bugs.freedesktop.org/show_bug.cgi?id=111656
  [fdo#111825]: https://bugs.freedesktop.org/show_bug.cgi?id=111825
  [fdo#111827]: https://bugs.freedesktop.org/show_bug.cgi?id=111827
  [fdo#112054]: https://bugs.freedesktop.org/show_bug.cgi?id=112054
  [fdo#112283]: https://bugs.freedesktop.org/show_bug.cgi?id=112283
  [i915#1072]: https://gitlab.freedesktop.org/drm/intel/issues/1072
  [i915#132]: https://gitlab.freedesktop.org/drm/intel/issues/132
  [i915#1397]: https://gitlab.freedesktop.org/drm/intel/issues/1397
  [i915#1755]: https://gitlab.freedesktop.org/drm/intel/issues/1755
  [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180
  [i915#1825]: https://gitlab.freedesktop.org/drm/intel/issues/1825
  [i915#1839]: https://gitlab.freedesktop.org/drm/intel/issues/1839
  [i915#1845]: https://gitlab.freedesktop.org/drm/intel/issues/1845
  [i915#1849]: https://gitlab.freedesktop.org/drm/intel/issues/1849
  [i915#2190]: https://gitlab.freedesktop.org/drm/intel/issues/2190
  [i915#2346]: https://gitlab.freedesktop.org/drm/intel/issues/2346
  [i915#2433]: https://gitlab.freedesktop.org/drm/intel/issues/2433
  [i915#2434]: https://gitlab.freedesktop.org/drm/intel/issues/2434
  [i915#2436]: https://gitlab.freedesktop.org/drm/intel/issues/2436
  [i915#2437]: https://gitlab.freedesktop.org/drm/intel/issues/2437
  [i915#2527]: https://gitlab.freedesktop.org/drm/intel/issues/2527
  [i915#2575]: https://gitlab.freedesktop.org/drm/intel/issues/2575
  [i915#2582]: https://gitlab.freedesktop.org/drm/intel/issues/2582
  [i915#2587]: https://gitlab.freedesktop.org/drm/intel/issues/2587
  [i915#2658]: https://gitlab.freedesktop.org/drm/intel/issues/2658
  [i915#2672]: https://gitlab.freedesktop.org/drm/intel/issues/2672
  [i915#2681]: https://gitlab.freedesktop.org/drm/intel/issues/2681
  [i915#2705]: https://gitlab.freedesktop.org/drm/intel/issues/2705
  [i915#280]: https://gitlab.freedesktop.org/drm/intel/issues/280
  [i915#284]: https://gitlab.freedesktop.org/drm/intel/issues/284
  [i915#2842]: https://gitlab.freedesktop.org/drm/intel/issues/2842
  [i915#2846]: https://gitlab.freedesktop.org/drm/intel/issues/2846
  [i915#2856]: https://gitlab.freedesktop.org/drm/intel/issues/2856
  [i915#2920]: https://gitlab.freedesktop.org/drm/intel/issues/2920
  [i915#3116]: https://gitlab.freedesktop.org/drm/intel/issues/3116
  [i915#3281]: https://gitlab.freedesktop.org/drm/intel/issues/3281
  [i915#3282]: https://gitlab.freedesktop.org/drm/intel/issues/3282
  [i915#3291]: https://gitlab.freedesktop.org/drm/intel/issues/3291
  [i915#3297]: https://gitlab.freedesktop.org/drm/intel/issues/3297
  [i915#3299]: https://gitlab.freedesktop.org/drm/intel/issues/3299
  [i915#3301]: https://gitlab.freedesktop.org/drm/intel/issues/3301
  [i915#3318]: https://gitlab.freedesktop.org/drm/intel/issues/3318
  [i915#3323]: https://gitlab.freedesktop.org/drm/intel/issues/3323
  [i915#3359]: https://gitlab.freedesktop.org/drm/intel/issues/3359
  [i915#3361]: https://gitlab.freedesktop.org/drm/intel/issues/3361
  [i915#3458]: https://gitlab.freedesktop.org/drm/intel/issues/3458
  [i915#3469]: https://gitlab.freedesktop.org/drm/intel/issues/3469
  [i915#3539]: https://gitlab.freedesktop.org/drm/intel/issues/3539
  [i915#3546]: https://gitlab.freedesktop.org/drm/intel/issues/3546
  [i915#3555]: https://gitlab.freedesktop.org/drm/intel/issues/3555
  [i915#3558]: https://gitlab.freedesktop.org/drm/intel/issues/3558
  [i915#3591]: https://gitlab.freedesktop.org/drm/intel/issues/3591
  [i915#3637]: https://gitlab.freedesktop.org/drm/intel/issues/3637
  [i915#3638]: https://gitlab.freedesktop.org/drm/intel/issues/3638
  [i915#3689]: https://gitlab.freedesktop.org/drm/intel/issues/3689
  [i915#3708]: https://gitlab.freedesktop.org/drm/intel/issues/3708
  [i915#3734]: https://gitlab.freedesktop.org/drm/intel/issues/3734
  [i915#3742]: https://gitlab.freedesktop.org/drm/intel/issues/3742
  [i915#3804]: https://gitlab.freedesktop.org/drm/intel/issues/3804
  [i915#3840]: https://gitlab.freedesktop.org/drm/intel/issues/3840
  [i915#3886]: https://gitlab.freedesktop.org/drm/intel/issues/3886
  [i915#3955]: https://gitlab.freedesktop.org/drm/intel/issues/3955
  [i915#3966]: https://gitlab.freedesktop.org/drm/intel/issues/3966
  [i915#3989]: https://gitlab.freedesktop.org/drm/intel/issues/3989
  [i915#4070]: https://gitlab.freedesktop.org/drm/intel/issues/4070
  [i915#4077]: https://gitlab.freedesktop.org/drm/intel/issues/4077
  [i915#4078]: https://gitlab.freedesktop.org/drm/intel/issues/4078
  [i915#4079]: https://gitlab.freedesktop.org/drm/intel/issues/4079
  [i915#4083]: https://gitlab.freedesktop.org/drm/intel/issues/4083
  [i915#4098]: https://gitlab.freedesktop.org/drm/intel/issues/4098
  [i915#4103]: https://gitlab.freedesktop.org/drm/intel/issues/4103
  [i915#4212]: https://gitlab.freedesktop.org/drm/intel/issues/4212
  [i915#4270]: https://gitlab.freedesktop.org/drm/intel/issues/4270
  [i915#4349]: https://gitlab.freedesktop.org/drm/intel/issues/4349
  [i915#4387]: https://gitlab.freedesktop.org/drm/intel/issues/4387
  [i915#4525]: https://gitlab.freedesktop.org/drm/intel/issues/4525
  [i915#4538]: https://gitlab.freedesktop.org/drm/intel/issues/4538
  [i915#454]: https://gitlab.freedesktop.org/drm/intel/issues/454
  [i915#4565]: https://gitlab.freedesktop.org/drm/intel/issues/4565
  [i915#4573]: https://gitlab.freedesktop.org/drm/intel/issues/4573
  [i915#4613]: https://gitlab.freedesktop.org/drm/intel/issues/4613
  [i915#4812]: https://gitlab.freedesktop.org/drm/intel/issues/4812
  [i915#4833]: https://gitlab.freedesktop.org/drm/intel/issues/4833
  [i915#4852]: https://gitlab.freedesktop.org/drm/intel/issues/4852
  [i915#4859]: https://gitlab.freedesktop.org/drm/intel/issues/4859
  [i915#4860]: https://gitlab.freedesktop.org/drm/intel/issues/4860
  [i915#4881]: https://gitlab.freedesktop.org/drm/intel/issues/4881
  [i915#4884]: https://gitlab.freedesktop.org/drm/intel/issues/4884
  [i915#4885]: https://gitlab.freedesktop.org/drm/intel/issues/4885
  [i915#4958]: https://gitlab.freedesktop.org/drm/intel/issues/4958
  [i915#5115]: https://gitlab.freedesktop.org/drm/intel/issues/5115
  [i915#5122]: https://gitlab.freedesktop.org/drm/intel/issues/5122
  [i915#5176]: https://gitlab.freedesktop.org/drm/intel/issues/5176
  [i915#5235]: https://gitlab.freedesktop.org/drm/intel/issues/5235
  [i915#5286]: https://gitlab.freedesktop.org/drm/intel/issues/5286
  [i915#5288]: https://gitlab.freedesktop.org/drm/intel/issues/5288
  [i915#5289]: https://gitlab.freedesktop.org/drm/intel/issues/5289
  [i915#5325]: https://gitlab.freedesktop.org/drm/intel/issues/5325
  [i915#533]: https://gitlab.freedesktop.org/drm/intel/issues/533
  [i915#5439]: https://gitlab.freedesktop.org/drm/intel/issues/5439
  [i915#5461]: https://gitlab.freedesktop.org/drm/intel/issues/5461
  [i915#5563]: https://gitlab.freedesktop.org/drm/intel/issues/5563
  [i915#5723]: https://gitlab.freedesktop.org/drm/intel/issues/5723
  [i915#6095]: https://gitlab.freedesktop.org/drm/intel/issues/6095
  [i915#6230]: https://gitlab.freedesktop.org/drm/intel/issues/6230
  [i915#6245]: https://gitlab.freedesktop.org/drm/intel/issues/6245
  [i915#6247]: https://gitlab.freedesktop.org/drm/intel/issues/6247
  [i915#6248]: https://gitlab.freedesktop.org/drm/intel/issues/6248
  [i915#6252]: https://gitlab.freedesktop.org/drm/intel/issues/6252
  [i915#6268]: https://gitlab.freedesktop.org/drm/intel/issues/6268
  [i915#6301]: https://gitlab.freedesktop.org/drm/intel/issues/6301
  [i915#6334]: https://gitlab.freedesktop.org/drm/intel/issues/6334
  [i915#6335]: https://gitlab.freedesktop.org/drm/intel/issues/6335
  [i915#6355]: https://gitlab.freedesktop.org/drm/intel/issues/6355
  [i915#6412]: https://gitlab.freedesktop.org/drm/intel/issues/6412
  [i915#6433]: https://gitlab.freedesktop.org/drm/intel/issues/6433
  [i915#6497]: https://gitlab.freedesktop.org/drm/intel/issues/6497
  [i915#6524]: https://gitlab.freedesktop.org/drm/intel/issues/6524
  [i915#658]: https://gitlab.freedesktop.org/drm/intel/issues/658
  [i915#6659]: https://gitlab.freedesktop.org/drm/intel/issues/6659
  [i915#6768]: https://gitlab.freedesktop.org/drm/intel/issues/6768
  [i915#6944]: https://gitlab.freedesktop.org/drm/intel/issues/6944
  [i915#6946]: https://gitlab.freedesktop.org/drm/intel/issues/6946
  [i915#6953]: https://gitlab.freedesktop.org/drm/intel/issues/6953
  [i915#7037]: https://gitlab.freedesktop.org/drm/intel/issues/7037
  [i915#7116]: https://gitlab.freedesktop.org/drm/intel/issues/7116
  [i915#7118]: https://gitlab.freedesktop.org/drm/intel/issues/7118
  [i915#7128]: https://gitlab.freedesktop.org/drm/intel/issues/7128
  [i915#72]: https://gitlab.freedesktop.org/drm/intel/issues/72
  [i915#7294]: https://gitlab.freedesktop.org/drm/intel/issues/7294
  [i915#7456]: https://gitlab.freedesktop.org/drm/intel/issues/7456
  [i915#7561]: https://gitlab.freedesktop.org/drm/intel/issues/7561
  [i915#7582]: https://gitlab.freedesktop.org/drm/intel/issues/7582
  [i915#7651]: https://gitlab.freedesktop.org/drm/intel/issues/7651
  [i915#7697]: https://gitlab.freedesktop.org/drm/intel/issues/7697
  [i915#7701]: https://gitlab.freedesktop.org/drm/intel/issues/7701
  [i915#7707]: https://gitlab.freedesktop.org/drm/intel/issues/7707
  [i915#7711]: https://gitlab.freedesktop.org/drm/intel/issues/7711
  [i915#7742]: https://gitlab.freedesktop.org/drm/intel/issues/7742
  [i915#7756]: https://gitlab.freedesktop.org/drm/intel/issues/7756
  [i915#7828]: https://gitlab.freedesktop.org/drm/intel/issues/7828
  [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79
  [i915#7949]: https://gitlab.freedesktop.org/drm/intel/issues/7949
  [i915#7957]: https://gitlab.freedesktop.org/drm/intel/issues/7957
  [i915#8152]: https://gitlab.freedesktop.org/drm/intel/issues/8152


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

  * CI: CI-20190529 -> None
  * IGT: IGT_7160 -> IGTPW_8491

  CI-20190529: 20190529
  CI_DRM_12736: a2aa96584caf1f5ad2047cae0689b26d12c51d2f @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_8491: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_8491/index.html
  IGT_7160: 45da871dd2684227e93a2fc002b87dfc58bd5fd9 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git

== Logs ==

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

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

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

* Re: [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part Vinod Govindapillai
@ 2023-03-08 18:31   ` Kamil Konieczny
  0 siblings, 0 replies; 8+ messages in thread
From: Kamil Konieczny @ 2023-03-08 18:31 UTC (permalink / raw)
  To: igt-dev

Hi Vinod,

please drop "- IGT part" from subject.

Regards,
Kamil

On 2023-02-14 at 11:57:24 +0200, Vinod Govindapillai wrote:
> Some panels generate long HPDs during CI execution steps even
> while connected to the system and cause unexpected CI execution
> failures. In environments like CI, we don't expect to disconnect
> the panels in the middle of the CI execution.
> 
> There are two parts to handle this case - display driver and IGT
> 
> 1. In the display driver, based on a flag, long HPDs are
> ignored. This flag can be set/unset using debugfs on systems
> where such panels are connected.
> 
> 2. In IGT, add provision to set ignore long HPD debugfs entry
> on the driver and also set Force "on" the active connectors.
> With force on, the connector's detect sequences will not get
> initiated.
> 
> This patch handles the IGT part.
> 
> An enviroment variable "IGT_KMS_IGNORE_HPD" is added to
> differentiate systems which require such spurious HPD handling.
> If this variable is on, ignore long HPD debugs entry is set and
> active connectors are set to force "on" state.
> 
> Many thanks to "Imre Deak" for the suggestions and support
> 
> v2: Minor updates in the comments.
> 
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
>  lib/igt_kms.c | 53 +++++++++++++++++++++++++++++++++++++++++++++++++--
>  1 file changed, 51 insertions(+), 2 deletions(-)
> 
> diff --git a/lib/igt_kms.c b/lib/igt_kms.c
> index 8c7dd85b..f99ab183 100644
> --- a/lib/igt_kms.c
> +++ b/lib/igt_kms.c
> @@ -2390,6 +2390,51 @@ static bool igt_pipe_has_valid_output(igt_display_t *display, enum pipe pipe)
>  	return false;
>  }
>  
> +/**
> + * igt_handle_spurious_hpd:
> + * @display: a pointer to igt_display_t structure
> + *
> + * Handle environment variable "IGT_KMS_IGNORE_HPD" to manage the spurious
> + * HPD cases in CI systems where such spurious HPDs are generated by the
> + * panels without any specific reasons and cause CI execution failures.
> + *
> + * This will set the i915_ignore_long_hpd debugfs entry to 1 as a cue for
> + * the driver to start ignoring the HPDs.
> + *
> + * Also, this will set the active connectors' force status to "on"
> + * so that dp/hdmi_detect routines don't get called frequently.
> + *
> + * Force status is kept on after this until it is manually reset.
> + */
> +static void igt_handle_spurious_hpd(igt_display_t *display)
> +{
> +	igt_output_t *output;
> +
> +	/* Proceed with spurious HPD handling only if the env var is set */
> +	if (!getenv("IGT_KMS_IGNORE_HPD"))
> +		return;
> +
> +	/* Set the ignore HPD for the driver */
> +	igt_ignore_long_hpd(display->drm_fd, true);
> +
> +	for_each_connected_output(display, output) {
> +		drmModeConnector *conn = output->config.connector;
> +
> +		if (!force_connector(display->drm_fd, conn, "on")) {
> +			igt_info("Unable to force state on %s-%d\n",
> +				 kmstest_connector_type_str(conn->connector_type),
> +				 conn->connector_type_id);
> +			continue;
> +		}
> +
> +		igt_info("Force connector ON for %s-%d\n",
> +			 kmstest_connector_type_str(conn->connector_type),
> +			 conn->connector_type_id);
> +	}
> +
> +	dump_forced_connectors();
> +}
> +
>  /**
>   * igt_display_require:
>   * @display: a pointer to an initialized #igt_display_t structure
> @@ -2713,11 +2758,15 @@ void igt_display_require(igt_display_t *display, int drm_fd)
>  out:
>  	LOG_UNINDENT(display);
>  
> -	if (display->n_pipes && display->n_outputs)
> +	if (display->n_pipes && display->n_outputs) {
>  		igt_enable_connectors(drm_fd);
> -	else
> +
> +		igt_handle_spurious_hpd(display);
> +	}
> +	else {
>  		igt_skip("No KMS driver or no outputs, pipes: %d, outputs: %d\n",
>  			 display->n_pipes, display->n_outputs);
> +	}
>  }
>  
>  /**
> -- 
> 2.34.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs
  2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs Vinod Govindapillai
@ 2023-03-08 18:36   ` Kamil Konieczny
  2023-03-09  8:54     ` Govindapillai, Vinod
  0 siblings, 1 reply; 8+ messages in thread
From: Kamil Konieczny @ 2023-03-08 18:36 UTC (permalink / raw)
  To: igt-dev

Hi Vinod,

On 2023-02-14 at 11:57:23 +0200, Vinod Govindapillai wrote:
> Add provision to ignore long HPDs as some displays generate
> long HPDs even while connected. For some CI systems with
> such displays it might be usefull to ignore such spurious
> HPDs while executing testcases.
> 
> Cc: Imre Deak <imre.deak@intel.com>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> ---
>  lib/igt_debugfs.c | 22 ++++++++++++++++++++++
>  lib/igt_debugfs.h |  1 +
>  2 files changed, 23 insertions(+)
> 
> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> index 6de178d6..8d2d3144 100644
> --- a/lib/igt_debugfs.c
> +++ b/lib/igt_debugfs.c
> @@ -411,6 +411,28 @@ bool igt_debugfs_search(int device, const char *filename, const char *substring)
>  	return matched;
>  }
>  
> +/**
> + * igt_ignore_long_hpd:

Add also description of parameters here.

> + *
> + * Set / unset ignore long HPD events from the panels. Some panels
> + * generate long HPDs even while connected to the ports causing
> + * unexpected CI execution issues. Set this to ignore such unexpected
> + * long HPDs where we dont expect to disconnect the displays.
> + */
> +void igt_ignore_long_hpd(int drm_fd, bool enable)
-- ^
imho bool would be better.

> +{
> +	int fd = igt_debugfs_open(drm_fd, "i915_ignore_long_hpd", O_WRONLY);
> +
> +	if (fd < 0) {
> +		igt_debug("couldn't open ignore long hpd file\n");
> +		return;

Then you can
	return false;
here.

> +	}
> +
> +	igt_assert_eq(write(fd, enable ? "1" : "0", 1), 1);

Asserts in libs should be avoided, so maybe:
	ret = write(fd, enable ? "1" : "0", 1);

> +
> +	close(fd);

and then:
	return ret == 1;

Btw regarding your second patch, did you reset this to old value
before leaving subtest ?

Regards,
Kamil

> +}
> +
>  static void igt_hpd_storm_exit_handler(int sig)
>  {
>  	int fd = drm_open_driver(DRIVER_INTEL);
> diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
> index a883e2d4..fe23a5ef 100644
> --- a/lib/igt_debugfs.h
> +++ b/lib/igt_debugfs.h
> @@ -72,6 +72,7 @@ void igt_hpd_storm_set_threshold(int fd, unsigned int threshold);
>  void igt_hpd_storm_reset(int fd);
>  bool igt_hpd_storm_detected(int fd);
>  void igt_require_hpd_storm_ctl(int fd);
> +void igt_ignore_long_hpd(int fd, bool enable);
>  
>  /*
>   * Drop caches
> -- 
> 2.34.1
> 

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

* Re: [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs
  2023-03-08 18:36   ` Kamil Konieczny
@ 2023-03-09  8:54     ` Govindapillai, Vinod
  0 siblings, 0 replies; 8+ messages in thread
From: Govindapillai, Vinod @ 2023-03-09  8:54 UTC (permalink / raw)
  To: igt-dev@lists.freedesktop.org, kamil.konieczny@linux.intel.com

Hi Kamil,

Thanks for the comments. A new version sent after addressing your comments.

Regarding resetting the value, it is not explicitly done when leaving the subtest. As this mainly
targets CI execution in systems with panels which generate such spurious HPDs and CI is expected to
set the env variable IGT_KMS_IGNORE_HPD all the time. In some HPD tests using chamelion etc., this
flag is unset separately by such tests after the igt_display_require call is completed.

BR
vinod

On Wed, 2023-03-08 at 19:36 +0100, Kamil Konieczny wrote:
> Hi Vinod,
> 
> On 2023-02-14 at 11:57:23 +0200, Vinod Govindapillai wrote:
> > Add provision to ignore long HPDs as some displays generate
> > long HPDs even while connected. For some CI systems with
> > such displays it might be usefull to ignore such spurious
> > HPDs while executing testcases.
> > 
> > Cc: Imre Deak <imre.deak@intel.com>
> > Signed-off-by: Vinod Govindapillai <vinod.govindapillai@intel.com>
> > ---
> >  lib/igt_debugfs.c | 22 ++++++++++++++++++++++
> >  lib/igt_debugfs.h |  1 +
> >  2 files changed, 23 insertions(+)
> > 
> > diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> > index 6de178d6..8d2d3144 100644
> > --- a/lib/igt_debugfs.c
> > +++ b/lib/igt_debugfs.c
> > @@ -411,6 +411,28 @@ bool igt_debugfs_search(int device, const char *filename, const char
> > *substring)
> >         return matched;
> >  }
> >  
> > +/**
> > + * igt_ignore_long_hpd:
> 
> Add also description of parameters here.
> 
> > + *
> > + * Set / unset ignore long HPD events from the panels. Some panels
> > + * generate long HPDs even while connected to the ports causing
> > + * unexpected CI execution issues. Set this to ignore such unexpected
> > + * long HPDs where we dont expect to disconnect the displays.
> > + */
> > +void igt_ignore_long_hpd(int drm_fd, bool enable)
> -- ^
> imho bool would be better.
> 
> > +{
> > +       int fd = igt_debugfs_open(drm_fd, "i915_ignore_long_hpd", O_WRONLY);
> > +
> > +       if (fd < 0) {
> > +               igt_debug("couldn't open ignore long hpd file\n");
> > +               return;
> 
> Then you can
>         return false;
> here.
> 
> > +       }
> > +
> > +       igt_assert_eq(write(fd, enable ? "1" : "0", 1), 1);
> 
> Asserts in libs should be avoided, so maybe:
>         ret = write(fd, enable ? "1" : "0", 1);
> 
> > +
> > +       close(fd);
> 
> and then:
>         return ret == 1;
> 
> Btw regarding your second patch, did you reset this to old value
> before leaving subtest ?
> 
> Regards,
> Kamil
> 
> > +}
> > +
> >  static void igt_hpd_storm_exit_handler(int sig)
> >  {
> >         int fd = drm_open_driver(DRIVER_INTEL);
> > diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
> > index a883e2d4..fe23a5ef 100644
> > --- a/lib/igt_debugfs.h
> > +++ b/lib/igt_debugfs.h
> > @@ -72,6 +72,7 @@ void igt_hpd_storm_set_threshold(int fd, unsigned int threshold);
> >  void igt_hpd_storm_reset(int fd);
> >  bool igt_hpd_storm_detected(int fd);
> >  void igt_require_hpd_storm_ctl(int fd);
> > +void igt_ignore_long_hpd(int fd, bool enable);
> >  
> >  /*
> >   * Drop caches
> > -- 
> > 2.34.1
> > 


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

end of thread, other threads:[~2023-03-09  8:54 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-14  9:57 [igt-dev] [PATCH i-g-t v2 0/2] Handle spurious HPDs - IGT part Vinod Govindapillai
2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 1/2] lib/igt_debugfs: set provision to ignore long HPDs Vinod Govindapillai
2023-03-08 18:36   ` Kamil Konieczny
2023-03-09  8:54     ` Govindapillai, Vinod
2023-02-14  9:57 ` [igt-dev] [PATCH i-g-t v2 2/2] lib/igt_kms: handle spurious HPDs - IGT part Vinod Govindapillai
2023-03-08 18:31   ` Kamil Konieczny
2023-02-14 10:46 ` [igt-dev] ✓ Fi.CI.BAT: success for Handle spurious HPDs - IGT part (rev2) Patchwork
2023-02-14 14:42 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox