public inbox for igt-dev@lists.freedesktop.org
 help / color / mirror / Atom feed
* [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
@ 2026-04-07  9:52 Karthik B S
  2026-04-08  0:25 ` ✓ Xe.CI.BAT: success for " Patchwork
                   ` (5 more replies)
  0 siblings, 6 replies; 9+ messages in thread
From: Karthik B S @ 2026-04-07  9:52 UTC (permalink / raw)
  To: igt-dev; +Cc: Karthik B S, Jason-JH Lin, Kunal Joshi

Currently the test is rejecting all the outputs where the mode is not
matching. This is leading to excessive skips on configs wherer the tests
were passing previouly.

Instead of this, use default mode for fixed mode panels if the required
custom mode is not found. And use custom mode for external panels as
these are allowed and have also been passing previously.

Cc: Jason-JH Lin <jason-jh.lin@mediatek.com>
Cc: Kunal Joshi <kunal1.joshi@intel.com>
Signed-off-by: Karthik B S <karthik.b.s@intel.com>
---
 tests/kms_bw.c | 57 ++++++++++++++++++++++++++++++++------------------
 1 file changed, 37 insertions(+), 20 deletions(-)

diff --git a/tests/kms_bw.c b/tests/kms_bw.c
index 4df5c2cee..4a32ec811 100644
--- a/tests/kms_bw.c
+++ b/tests/kms_bw.c
@@ -186,14 +186,16 @@ static void force_output_mode(data_t *d, igt_output_t *output,
 	igt_output_override_mode(output, mode);
 }
 
-static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
+/* Check if output has a matching mode and call it out if mode is being forced */
+static void output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
 {
 	drmModeConnector *connector = output->config.connector;
+	drmModeModeInfo *default_mode;
 	int i;
 
 	/* Virtual/forced sinks support all modes */
 	if (!igt_output_is_connected(output))
-		return true;
+		return;
 
 	for (i = 0; i < connector->count_modes; i++) {
 		drmModeModeInfo *conn_mode = &connector->modes[i];
@@ -204,26 +206,32 @@ static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *m
 			igt_debug("Found matching mode for %dx%d@%dHz on %s\n",
 				  mode->hdisplay, mode->vdisplay, mode->vrefresh,
 				  igt_output_name(output));
-			return true;
 		}
 	}
 
-	igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes)\n",
-		 mode->hdisplay, mode->vdisplay, mode->vrefresh,
-		 igt_output_name(output), connector->count_modes);
-
-	return false;
+	if (output_is_internal_panel(output)) {
+		default_mode = igt_output_get_mode(output);
+		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes).\n"
+			 "%s Default mode: %dx%d@%dHz\n",
+			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
+			 igt_output_name(output), connector->count_modes, igt_output_name(output),
+			 default_mode->hdisplay, default_mode->vdisplay, default_mode->vrefresh);
+	} else {
+		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes). Forcing mode.\n",
+			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
+			 igt_output_name(output), connector->count_modes);
+	}
 }
 
 static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeInfo *mode, bool physical) {
 	igt_display_t *display = &data->display;
 	igt_output_t *output;
+	drmModeModeInfo fb_mode;
 	struct igt_fb buffer[IGT_MAX_PIPES];
 	igt_crc_t zero, captured[IGT_MAX_PIPES];
 	int i = 0, num_pipes = 0;
 	igt_crtc_t *crtc;
 	int ret;
-	bool has_supported_mode = false;
 
 	/* Cannot use igt_display_n_crtcs() due to fused pipes on i915 where they do
 	 * not give the numver of valid crtcs and always return IGT_MAX_PIPES */
@@ -242,14 +250,26 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
 		crtc = data->crtc[i];
 
 		output = physical ? data->connected_output[i] : data->output[i];
-		if (!output || !output_mode_supported(output, mode)) {
+		if (!output)
 			continue;
-		}
 
-		force_output_mode(data, output, mode);
+		output_mode_supported(output, mode);
+
+		/*
+		 * On fixed mode panels trying to force a custom mode can lead to failures or
+		 * implicit handling where the default mode is used even though custom mode is requested.
+		 * To avoid this use default mode on fixed mode panels and
+		 * use custom modes only on external panels.
+		 */
+		if (output_is_internal_panel(output)) {
+			fb_mode = *igt_output_get_mode(output);
+		} else {
+			force_output_mode(data, output, mode);
+			fb_mode = *mode;
+		}
 
-		igt_create_color_fb(display->drm_fd, mode->hdisplay,
-				    mode->vdisplay, DRM_FORMAT_XRGB8888,
+		igt_create_color_fb(display->drm_fd, fb_mode.hdisplay,
+				    fb_mode.vdisplay, DRM_FORMAT_XRGB8888,
 				    DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
 				    &buffer[i]);
 
@@ -258,10 +278,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
 		igt_plane_set_fb(data->primary[i], &buffer[i]);
 		igt_info("Assigning pipe %s to output %s with mode %s\n",
 			 igt_crtc_name(crtc), igt_output_name(output),
-			 mode->name);
-		has_supported_mode = true;
+			 fb_mode.name);
 	}
-	igt_skip_on_f(!has_supported_mode, "Unsupported mode for all pipes\n");
 
 	ret = igt_display_try_commit_atomic(display,
 					    DRM_MODE_ATOMIC_ALLOW_MODESET |
@@ -273,9 +291,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
 
 	for (i = 0; i < n_crtcs; i++) {
 		output = physical ? data->connected_output[i] : data->output[i];
-		if (!output || !output_mode_supported(output, mode)) {
+		if (!output)
 			continue;
-		}
 
 		igt_pipe_crc_collect_crc(data->pipe_crc[i], &captured[i]);
 		igt_assert_f(!igt_check_crc_equal(&zero, &captured[i]),
@@ -284,7 +301,7 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
 
 	for (i = n_crtcs - 1; i >= 0; i--) {
 		output = physical ? data->connected_output[i] : data->output[i];
-		if (!output || !output_mode_supported(output, mode))
+		if (!output)
 			continue;
 
 		igt_remove_fb(display->drm_fd, &buffer[i]);
-- 
2.43.0


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

* ✓ Xe.CI.BAT: success for tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
@ 2026-04-08  0:25 ` Patchwork
  2026-04-08  0:34 ` ✗ i915.CI.BAT: failure " Patchwork
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2026-04-08  0:25 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_bw: Allow custom modes for external panels
URL   : https://patchwork.freedesktop.org/series/164432/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_8850_BAT -> XEIGTPW_14938_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (14 -> 14)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Issues hit ####

  * igt@xe_pat@pat-index-xe2@render:
    - bat-ptl-vm:         [PASS][1] -> [DMESG-WARN][2] ([Intel XE#7110]) +1 other test dmesg-warn
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/bat-ptl-vm/igt@xe_pat@pat-index-xe2@render.html

  
  [Intel XE#7110]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7110


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

  * IGT: IGT_8850 -> IGTPW_14938
  * Linux: xe-4855-5f8792621868737c8b62a87b66dbf7eca4d9f7e3 -> xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf

  IGTPW_14938: 14938
  IGT_8850: 8850
  xe-4855-5f8792621868737c8b62a87b66dbf7eca4d9f7e3: 5f8792621868737c8b62a87b66dbf7eca4d9f7e3
  xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf: 5ee75b2816df74bfe606d4dfc061547d5cda4ebf

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/index.html

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

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

* ✗ i915.CI.BAT: failure for tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
  2026-04-08  0:25 ` ✓ Xe.CI.BAT: success for " Patchwork
@ 2026-04-08  0:34 ` Patchwork
  2026-04-08  3:33 ` ✗ Xe.CI.FULL: " Patchwork
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2026-04-08  0:34 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_bw: Allow custom modes for external panels
URL   : https://patchwork.freedesktop.org/series/164432/
State : failure

== Summary ==

CI Bug Log - changes from IGT_8850 -> IGTPW_14938
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with IGTPW_14938 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_14938, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

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

Participating hosts (42 -> 40)
------------------------------

  Missing    (2): bat-dg2-13 fi-snb-2520m 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live:
    - fi-tgl-1115g4:      [PASS][1] -> [ABORT][2] +1 other test abort
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8850/fi-tgl-1115g4/igt@i915_selftest@live.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14938/fi-tgl-1115g4/igt@i915_selftest@live.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@core_auth@basic-auth:
    - bat-adlp-9:         [PASS][3] -> [DMESG-WARN][4] ([i915#15673])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8850/bat-adlp-9/igt@core_auth@basic-auth.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14938/bat-adlp-9/igt@core_auth@basic-auth.html

  * igt@i915_selftest@live@workarounds:
    - bat-arls-5:         [PASS][5] -> [DMESG-FAIL][6] ([i915#12061]) +1 other test dmesg-fail
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8850/bat-arls-5/igt@i915_selftest@live@workarounds.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14938/bat-arls-5/igt@i915_selftest@live@workarounds.html

  
#### Possible fixes ####

  * igt@core_debugfs@read-all-entries:
    - bat-adlp-9:         [DMESG-WARN][7] ([i915#15673]) -> [PASS][8]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8850/bat-adlp-9/igt@core_debugfs@read-all-entries.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14938/bat-adlp-9/igt@core_debugfs@read-all-entries.html

  * igt@i915_selftest@live:
    - bat-mtlp-8:         [DMESG-FAIL][9] ([i915#12061]) -> [PASS][10] +1 other test pass
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_8850/bat-mtlp-8/igt@i915_selftest@live.html
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_14938/bat-mtlp-8/igt@i915_selftest@live.html

  
  [i915#12061]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12061
  [i915#15673]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15673


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

  * CI: CI-20190529 -> None
  * IGT: IGT_8850 -> IGTPW_14938
  * Linux: CI_DRM_18284 -> CI_DRM_18290

  CI-20190529: 20190529
  CI_DRM_18284: 5f8792621868737c8b62a87b66dbf7eca4d9f7e3 @ git://anongit.freedesktop.org/gfx-ci/linux
  CI_DRM_18290: 2dc939ed1bd66b5eac479a95968188a87de9cf81 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_14938: 14938
  IGT_8850: 8850

== Logs ==

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

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

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

* ✗ Xe.CI.FULL: failure for tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
  2026-04-08  0:25 ` ✓ Xe.CI.BAT: success for " Patchwork
  2026-04-08  0:34 ` ✗ i915.CI.BAT: failure " Patchwork
@ 2026-04-08  3:33 ` Patchwork
  2026-04-08  7:28 ` [PATCH i-g-t] " Jason-JH Lin (林睿祥)
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 9+ messages in thread
From: Patchwork @ 2026-04-08  3:33 UTC (permalink / raw)
  To: Karthik B S; +Cc: igt-dev

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

== Series Details ==

Series: tests/kms_bw: Allow custom modes for external panels
URL   : https://patchwork.freedesktop.org/series/164432/
State : failure

== Summary ==

CI Bug Log - changes from XEIGT_8850_FULL -> XEIGTPW_14938_FULL
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with XEIGTPW_14938_FULL absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in XEIGTPW_14938_FULL, please notify your bug team (I915-ci-infra@lists.freedesktop.org) to allow them
  to document this new failure mode, which will reduce false positives in CI.

  

Participating hosts (2 -> 2)
------------------------------

  No changes in participating hosts

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@xe_exec_system_allocator@threads-many-stride-malloc-madvise:
    - shard-bmg:          [PASS][1] -> [FAIL][2]
   [1]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-1/igt@xe_exec_system_allocator@threads-many-stride-malloc-madvise.html
   [2]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_exec_system_allocator@threads-many-stride-malloc-madvise.html

  
New tests
---------

  New tests have been introduced between XEIGT_8850_FULL and XEIGTPW_14938_FULL:

### New IGT tests (14) ###

  * igt@kms_flip@2x-flip-vs-dpms-on-nop:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.00, 7.23] s

  * igt@kms_flip@2x-flip-vs-dpms-on-nop-interruptible:
    - Statuses : 1 pass(s) 1 skip(s)
    - Exec time: [0.00, 7.07] s

  * igt@kms_flip@flip-vs-dpms-on-nop:
    - Statuses : 2 pass(s)
    - Exec time: [6.59, 8.41] s

  * igt@kms_flip@flip-vs-dpms-on-nop-interruptible:
    - Statuses : 2 pass(s)
    - Exec time: [6.54, 8.19] s

  * igt@kms_flip@flip-vs-dpms-on-nop-interruptible@a-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.14] s

  * igt@kms_flip@flip-vs-dpms-on-nop-interruptible@b-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.19] s

  * igt@kms_flip@flip-vs-dpms-on-nop-interruptible@c-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.19] s

  * igt@kms_flip@flip-vs-dpms-on-nop@a-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.21] s

  * igt@kms_flip@flip-vs-dpms-on-nop@a-hdmi-a3:
    - Statuses : 1 pass(s)
    - Exec time: [1.02] s

  * igt@kms_flip@flip-vs-dpms-on-nop@b-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.19] s

  * igt@kms_flip@flip-vs-dpms-on-nop@b-hdmi-a3:
    - Statuses : 1 pass(s)
    - Exec time: [1.03] s

  * igt@kms_flip@flip-vs-dpms-on-nop@c-edp1:
    - Statuses : 1 pass(s)
    - Exec time: [2.19] s

  * igt@kms_flip@flip-vs-dpms-on-nop@c-hdmi-a3:
    - Statuses : 1 pass(s)
    - Exec time: [1.04] s

  * igt@kms_flip@flip-vs-dpms-on-nop@d-hdmi-a3:
    - Statuses : 1 pass(s)
    - Exec time: [1.04] s

  

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

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

### IGT changes ###

#### Issues hit ####

  * igt@intel_hwmon@hwmon-write:
    - shard-bmg:          [PASS][3] -> [FAIL][4] ([Intel XE#7445])
   [3]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-9/igt@intel_hwmon@hwmon-write.html
   [4]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@intel_hwmon@hwmon-write.html

  * igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels:
    - shard-bmg:          NOTRUN -> [SKIP][5] ([Intel XE#2370])
   [5]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_atomic_transition@plane-all-modeset-transition-fencing-internal-panels.html

  * igt@kms_big_fb@4-tiled-8bpp-rotate-90:
    - shard-bmg:          NOTRUN -> [SKIP][6] ([Intel XE#2327]) +2 other tests skip
   [6]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@kms_big_fb@4-tiled-8bpp-rotate-90.html

  * igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip:
    - shard-bmg:          NOTRUN -> [SKIP][7] ([Intel XE#1124]) +2 other tests skip
   [7]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_big_fb@y-tiled-max-hw-stride-32bpp-rotate-180-async-flip.html

  * igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p:
    - shard-bmg:          NOTRUN -> [SKIP][8] ([Intel XE#7679])
   [8]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@kms_bw@connected-linear-tiling-3-displays-1920x1080p.html

  * igt@kms_bw@linear-tiling-1-displays-2560x1440p:
    - shard-bmg:          NOTRUN -> [SKIP][9] ([Intel XE#367] / [Intel XE#7354]) +1 other test skip
   [9]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_bw@linear-tiling-1-displays-2560x1440p.html

  * igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][10] ([Intel XE#2887]) +5 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_ccs@bad-pixel-format-y-tiled-gen12-rc-ccs-cc.html

  * igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2:
    - shard-bmg:          NOTRUN -> [SKIP][11] ([Intel XE#2652]) +8 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_ccs@bad-rotation-90-4-tiled-lnl-ccs@pipe-c-dp-2.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs:
    - shard-bmg:          [PASS][12] -> [INCOMPLETE][13] ([Intel XE#7084]) +1 other test incomplete
   [12]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html
   [13]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_ccs@crc-primary-suspend-4-tiled-bmg-ccs.html

  * igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc:
    - shard-bmg:          NOTRUN -> [SKIP][14] ([Intel XE#3432]) +1 other test skip
   [14]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_ccs@crc-primary-suspend-4-tiled-mtl-rc-ccs-cc.html

  * igt@kms_chamelium_color@ctm-red-to-blue:
    - shard-bmg:          NOTRUN -> [SKIP][15] ([Intel XE#2325] / [Intel XE#7358])
   [15]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_chamelium_color@ctm-red-to-blue.html

  * igt@kms_chamelium_hpd@common-hpd-after-suspend:
    - shard-bmg:          NOTRUN -> [SKIP][16] ([Intel XE#2252]) +1 other test skip
   [16]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-5/igt@kms_chamelium_hpd@common-hpd-after-suspend.html

  * igt@kms_content_protection@srm@pipe-a-dp-2:
    - shard-bmg:          NOTRUN -> [FAIL][17] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) +1 other test fail
   [17]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_content_protection@srm@pipe-a-dp-2.html

  * igt@kms_cursor_crc@cursor-onscreen-32x10:
    - shard-bmg:          NOTRUN -> [SKIP][18] ([Intel XE#2320]) +1 other test skip
   [18]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-7/igt@kms_cursor_crc@cursor-onscreen-32x10.html

  * igt@kms_cursor_legacy@flip-vs-cursor-atomic:
    - shard-bmg:          [PASS][19] -> [FAIL][20] ([Intel XE#7571])
   [19]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-3/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html
   [20]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_cursor_legacy@flip-vs-cursor-atomic.html

  * igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats:
    - shard-bmg:          NOTRUN -> [SKIP][21] ([Intel XE#4422] / [Intel XE#7442])
   [21]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@kms_fbc_dirty_rect@fbc-dirty-rectangle-different-formats.html

  * igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling:
    - shard-bmg:          NOTRUN -> [SKIP][22] ([Intel XE#7178] / [Intel XE#7349])
   [22]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_flip_scaled_crc@flip-64bpp-4tile-to-32bpp-4tiledg2rcccs-downscaling.html

  * igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling:
    - shard-bmg:          NOTRUN -> [SKIP][23] ([Intel XE#7178] / [Intel XE#7351])
   [23]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_flip_scaled_crc@flip-64bpp-yftile-to-32bpp-yftile-upscaling.html

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][24] ([Intel XE#4141]) +5 other tests skip
   [24]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-7/igt@kms_frontbuffer_tracking@fbc-2p-primscrn-indfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt:
    - shard-bmg:          NOTRUN -> [SKIP][25] ([Intel XE#2311]) +13 other tests skip
   [25]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_frontbuffer_tracking@fbcdrrs-2p-primscrn-shrfb-plflip-blt.html

  * igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][26] ([Intel XE#7061] / [Intel XE#7356]) +5 other tests skip
   [26]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_frontbuffer_tracking@fbcpsr-abgr161616f-draw-render.html

  * igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render:
    - shard-bmg:          NOTRUN -> [SKIP][27] ([Intel XE#2313]) +9 other tests skip
   [27]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-5/igt@kms_frontbuffer_tracking@fbcpsr-rgb565-draw-render.html

  * igt@kms_hdmi_inject@inject-audio:
    - shard-bmg:          [PASS][28] -> [SKIP][29] ([Intel XE#7308])
   [28]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-8/igt@kms_hdmi_inject@inject-audio.html
   [29]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@kms_hdmi_inject@inject-audio.html

  * igt@kms_joiner@basic-force-ultra-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][30] ([Intel XE#6911] / [Intel XE#7466])
   [30]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@kms_joiner@basic-force-ultra-joiner.html

  * igt@kms_joiner@basic-max-non-joiner:
    - shard-bmg:          NOTRUN -> [SKIP][31] ([Intel XE#4298] / [Intel XE#5873])
   [31]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_joiner@basic-max-non-joiner.html

  * igt@kms_pipe_stress@stress-xrgb8888-ytiled:
    - shard-bmg:          NOTRUN -> [SKIP][32] ([Intel XE#4329] / [Intel XE#6912] / [Intel XE#7375])
   [32]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_pipe_stress@stress-xrgb8888-ytiled.html

  * igt@kms_plane_multiple@2x-tiling-y:
    - shard-bmg:          NOTRUN -> [SKIP][33] ([Intel XE#5021] / [Intel XE#7377])
   [33]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_plane_multiple@2x-tiling-y.html

  * igt@kms_pm_backlight@fade:
    - shard-bmg:          NOTRUN -> [SKIP][34] ([Intel XE#7376] / [Intel XE#870])
   [34]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_pm_backlight@fade.html

  * igt@kms_pm_lpsp@kms-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][35] ([Intel XE#2499])
   [35]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_pm_lpsp@kms-lpsp.html

  * igt@kms_pm_rpm@dpms-mode-unset-lpsp:
    - shard-bmg:          NOTRUN -> [SKIP][36] ([Intel XE#1439] / [Intel XE#7402] / [Intel XE#836])
   [36]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_pm_rpm@dpms-mode-unset-lpsp.html

  * igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf:
    - shard-bmg:          NOTRUN -> [SKIP][37] ([Intel XE#1489]) +4 other tests skip
   [37]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@kms_psr2_sf@fbc-pr-cursor-plane-move-continuous-exceed-fully-sf.html

  * igt@kms_psr@pr-cursor-plane-move:
    - shard-bmg:          NOTRUN -> [SKIP][38] ([Intel XE#2234] / [Intel XE#2850]) +3 other tests skip
   [38]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_psr@pr-cursor-plane-move.html

  * igt@kms_psr_stress_test@flip-primary-invalidate-overlay:
    - shard-lnl:          [PASS][39] -> [SKIP][40] ([Intel XE#4692] / [Intel XE#7508]) +1 other test skip
   [39]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-7/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html
   [40]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-6/igt@kms_psr_stress_test@flip-primary-invalidate-overlay.html

  * igt@kms_psr_stress_test@invalidate-primary-flip-overlay:
    - shard-bmg:          NOTRUN -> [SKIP][41] ([Intel XE#1406] / [Intel XE#2414])
   [41]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_psr_stress_test@invalidate-primary-flip-overlay.html

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-bmg:          [PASS][42] -> [FAIL][43] ([Intel XE#7589])
   [42]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-8/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html
   [43]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_rotation_crc@multiplane-rotation-cropping-top.html

  * igt@kms_rotation_crc@primary-y-tiled-reflect-x-0:
    - shard-bmg:          NOTRUN -> [SKIP][44] ([Intel XE#2330] / [Intel XE#5813])
   [44]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@kms_rotation_crc@primary-y-tiled-reflect-x-0.html

  * igt@kms_sharpness_filter@filter-scaler-downscale:
    - shard-bmg:          NOTRUN -> [SKIP][45] ([Intel XE#6503]) +1 other test skip
   [45]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_sharpness_filter@filter-scaler-downscale.html

  * igt@kms_tv_load_detect@load-detect:
    - shard-bmg:          NOTRUN -> [SKIP][46] ([Intel XE#2450] / [Intel XE#5857])
   [46]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_tv_load_detect@load-detect.html

  * igt@kms_vrr@cmrr@pipe-a-edp-1:
    - shard-lnl:          [PASS][47] -> [FAIL][48] ([Intel XE#4459]) +1 other test fail
   [47]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-6/igt@kms_vrr@cmrr@pipe-a-edp-1.html
   [48]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-3/igt@kms_vrr@cmrr@pipe-a-edp-1.html

  * igt@kms_vrr@lobf:
    - shard-bmg:          NOTRUN -> [SKIP][49] ([Intel XE#2168] / [Intel XE#7444])
   [49]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@kms_vrr@lobf.html

  * igt@xe_eudebug@vma-ufence:
    - shard-bmg:          NOTRUN -> [SKIP][50] ([Intel XE#7636]) +6 other tests skip
   [50]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-5/igt@xe_eudebug@vma-ufence.html

  * igt@xe_evict@evict-threads-small-multi-queue:
    - shard-bmg:          NOTRUN -> [SKIP][51] ([Intel XE#7140]) +1 other test skip
   [51]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_evict@evict-threads-small-multi-queue.html

  * igt@xe_exec_balancer@many-cm-parallel-basic:
    - shard-bmg:          [PASS][52] -> [SKIP][53] ([Intel XE#6703]) +14 other tests skip
   [52]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-4/igt@xe_exec_balancer@many-cm-parallel-basic.html
   [53]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_exec_balancer@many-cm-parallel-basic.html

  * igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][54] ([Intel XE#2322] / [Intel XE#7372]) +2 other tests skip
   [54]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_exec_basic@multigpu-no-exec-bindexecqueue-userptr-invalidate.html

  * igt@xe_exec_fault_mode@twice-multi-queue-userptr:
    - shard-bmg:          NOTRUN -> [SKIP][55] ([Intel XE#7136]) +5 other tests skip
   [55]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@xe_exec_fault_mode@twice-multi-queue-userptr.html

  * igt@xe_exec_multi_queue@many-queues-basic-smem:
    - shard-bmg:          NOTRUN -> [SKIP][56] ([Intel XE#6874]) +11 other tests skip
   [56]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@xe_exec_multi_queue@many-queues-basic-smem.html

  * igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-remap-ro-eocheck:
    - shard-bmg:          NOTRUN -> [SKIP][57] ([Intel XE#6703]) +1 other test skip
   [57]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_exec_system_allocator@threads-shared-vm-many-execqueues-mmap-remap-ro-eocheck.html

  * igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-invalidate:
    - shard-bmg:          NOTRUN -> [SKIP][58] ([Intel XE#7138]) +2 other tests skip
   [58]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_exec_threads@threads-multi-queue-mixed-fd-userptr-invalidate.html

  * igt@xe_module_load@load:
    - shard-bmg:          ([PASS][59], [PASS][60], [PASS][61], [PASS][62], [PASS][63], [PASS][64], [PASS][65], [PASS][66], [PASS][67], [PASS][68], [PASS][69], [PASS][70], [PASS][71], [PASS][72], [PASS][73], [PASS][74], [PASS][75], [PASS][76], [PASS][77], [PASS][78], [PASS][79], [PASS][80], [PASS][81], [PASS][82], [PASS][83]) -> ([PASS][84], [PASS][85], [PASS][86], [PASS][87], [SKIP][88], [PASS][89], [PASS][90], [PASS][91], [PASS][92], [PASS][93], [PASS][94], [PASS][95], [PASS][96], [PASS][97], [PASS][98], [PASS][99], [PASS][100], [PASS][101], [PASS][102], [PASS][103], [PASS][104], [PASS][105], [PASS][106], [PASS][107], [PASS][108], [PASS][109]) ([Intel XE#2457] / [Intel XE#7405])
   [59]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@xe_module_load@load.html
   [60]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-1/igt@xe_module_load@load.html
   [61]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-1/igt@xe_module_load@load.html
   [62]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-7/igt@xe_module_load@load.html
   [63]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-7/igt@xe_module_load@load.html
   [64]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-4/igt@xe_module_load@load.html
   [65]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-6/igt@xe_module_load@load.html
   [66]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-6/igt@xe_module_load@load.html
   [67]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-9/igt@xe_module_load@load.html
   [68]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-7/igt@xe_module_load@load.html
   [69]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-3/igt@xe_module_load@load.html
   [70]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-3/igt@xe_module_load@load.html
   [71]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-10/igt@xe_module_load@load.html
   [72]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@xe_module_load@load.html
   [73]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-8/igt@xe_module_load@load.html
   [74]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-8/igt@xe_module_load@load.html
   [75]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@xe_module_load@load.html
   [76]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-4/igt@xe_module_load@load.html
   [77]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-5/igt@xe_module_load@load.html
   [78]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-3/igt@xe_module_load@load.html
   [79]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-5/igt@xe_module_load@load.html
   [80]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-1/igt@xe_module_load@load.html
   [81]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-8/igt@xe_module_load@load.html
   [82]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-9/igt@xe_module_load@load.html
   [83]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-10/igt@xe_module_load@load.html
   [84]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-5/igt@xe_module_load@load.html
   [85]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@xe_module_load@load.html
   [86]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@xe_module_load@load.html
   [87]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@xe_module_load@load.html
   [88]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@xe_module_load@load.html
   [89]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_module_load@load.html
   [90]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-3/igt@xe_module_load@load.html
   [91]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_module_load@load.html
   [92]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@xe_module_load@load.html
   [93]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@xe_module_load@load.html
   [94]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@xe_module_load@load.html
   [95]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@xe_module_load@load.html
   [96]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-9/igt@xe_module_load@load.html
   [97]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-7/igt@xe_module_load@load.html
   [98]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-7/igt@xe_module_load@load.html
   [99]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@xe_module_load@load.html
   [100]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@xe_module_load@load.html
   [101]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@xe_module_load@load.html
   [102]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@xe_module_load@load.html
   [103]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@xe_module_load@load.html
   [104]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@xe_module_load@load.html
   [105]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@xe_module_load@load.html
   [106]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_module_load@load.html
   [107]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_module_load@load.html
   [108]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_module_load@load.html
   [109]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-5/igt@xe_module_load@load.html

  * igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch:
    - shard-bmg:          NOTRUN -> [SKIP][110] ([Intel XE#6964])
   [110]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@xe_multigpu_svm@mgpu-concurrent-access-prefetch.html

  * igt@xe_pat@pat-index-xelpg:
    - shard-bmg:          NOTRUN -> [SKIP][111] ([Intel XE#2236] / [Intel XE#7590])
   [111]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@xe_pat@pat-index-xelpg.html

  * igt@xe_pm@s4-d3cold-basic-exec:
    - shard-bmg:          NOTRUN -> [SKIP][112] ([Intel XE#2284] / [Intel XE#7370])
   [112]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@xe_pm@s4-d3cold-basic-exec.html

  * igt@xe_query@multigpu-query-mem-usage:
    - shard-bmg:          NOTRUN -> [SKIP][113] ([Intel XE#944]) +1 other test skip
   [113]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@xe_query@multigpu-query-mem-usage.html

  * igt@xe_sriov_flr@flr-twice:
    - shard-bmg:          [PASS][114] -> [FAIL][115] ([Intel XE#6569])
   [114]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-7/igt@xe_sriov_flr@flr-twice.html
   [115]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-7/igt@xe_sriov_flr@flr-twice.html

  
#### Possible fixes ####

  * igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p:
    - shard-lnl:          [SKIP][116] ([Intel XE#7621]) -> [PASS][117] +7 other tests pass
   [116]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-5/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html
   [117]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-7/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html
    - shard-bmg:          [SKIP][118] ([Intel XE#7621]) -> [PASS][119] +1 other test pass
   [118]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-6/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html
   [119]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-10/igt@kms_bw@connected-linear-tiling-1-displays-3840x2160p.html

  * igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size:
    - shard-bmg:          [DMESG-WARN][120] ([Intel XE#5354]) -> [PASS][121] +1 other test pass
   [120]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-6/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html
   [121]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-8/igt@kms_cursor_legacy@cursora-vs-flipb-atomic-transitions-varying-size.html

  * igt@kms_plane_lowres@tiling-none:
    - shard-bmg:          [ABORT][122] -> [PASS][123]
   [122]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@kms_plane_lowres@tiling-none.html
   [123]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_plane_lowres@tiling-none.html

  * igt@kms_plane_lowres@tiling-none@pipe-d-dp-2:
    - shard-bmg:          [FAIL][124] -> [PASS][125]
   [124]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@kms_plane_lowres@tiling-none@pipe-d-dp-2.html
   [125]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_plane_lowres@tiling-none@pipe-d-dp-2.html

  * igt@kms_plane_lowres@tiling-none@pipe-d-hdmi-a-3:
    - shard-bmg:          [ABORT][126] ([Intel XE#5545] / [Intel XE#6652]) -> [PASS][127]
   [126]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-2/igt@kms_plane_lowres@tiling-none@pipe-d-hdmi-a-3.html
   [127]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@kms_plane_lowres@tiling-none@pipe-d-hdmi-a-3.html

  * igt@kms_pm_dc@dc5-dpms:
    - shard-lnl:          [FAIL][128] ([Intel XE#7340] / [Intel XE#7504]) -> [PASS][129]
   [128]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-3/igt@kms_pm_dc@dc5-dpms.html
   [129]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-2/igt@kms_pm_dc@dc5-dpms.html

  * igt@kms_rotation_crc@multiplane-rotation:
    - shard-lnl:          [FAIL][130] ([Intel XE#1874] / [Intel XE#6946] / [Intel XE#7305]) -> [PASS][131]
   [130]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-3/igt@kms_rotation_crc@multiplane-rotation.html
   [131]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-1/igt@kms_rotation_crc@multiplane-rotation.html

  * igt@kms_vrr@flip-suspend@pipe-a-edp-1:
    - shard-lnl:          [FAIL][132] ([Intel XE#4227] / [Intel XE#7397]) -> [PASS][133] +1 other test pass
   [132]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-lnl-8/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html
   [133]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-lnl-5/igt@kms_vrr@flip-suspend@pipe-a-edp-1.html

  * igt@xe_module_load@reload-no-display:
    - shard-bmg:          [ABORT][134] ([Intel XE#7578]) -> [PASS][135]
   [134]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-4/igt@xe_module_load@reload-no-display.html
   [135]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-1/igt@xe_module_load@reload-no-display.html

  
#### Warnings ####

  * igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs:
    - shard-bmg:          [SKIP][136] ([Intel XE#2887]) -> [SKIP][137] ([Intel XE#6703]) +1 other test skip
   [136]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-1/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html
   [137]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_ccs@crc-primary-rotation-180-4-tiled-mtl-rc-ccs.html

  * igt@kms_content_protection@legacy:
    - shard-bmg:          [FAIL][138] ([Intel XE#1178] / [Intel XE#3304] / [Intel XE#7374]) -> [SKIP][139] ([Intel XE#6703])
   [138]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-7/igt@kms_content_protection@legacy.html
   [139]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_content_protection@legacy.html

  * igt@kms_psr@fbc-pr-sprite-plane-move:
    - shard-bmg:          [SKIP][140] ([Intel XE#2234] / [Intel XE#2850]) -> [SKIP][141] ([Intel XE#6703])
   [140]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-3/igt@kms_psr@fbc-pr-sprite-plane-move.html
   [141]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-2/igt@kms_psr@fbc-pr-sprite-plane-move.html

  * igt@kms_tiled_display@basic-test-pattern-with-chamelium:
    - shard-bmg:          [SKIP][142] ([Intel XE#2426] / [Intel XE#5848]) -> [SKIP][143] ([Intel XE#2509] / [Intel XE#7437])
   [142]: https://intel-gfx-ci.01.org/tree/intel-xe/IGT_8850/shard-bmg-5/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html
   [143]: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/shard-bmg-6/igt@kms_tiled_display@basic-test-pattern-with-chamelium.html

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

  [Intel XE#1124]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1124
  [Intel XE#1178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1178
  [Intel XE#1406]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1406
  [Intel XE#1439]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1439
  [Intel XE#1489]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1489
  [Intel XE#1874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/1874
  [Intel XE#2168]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2168
  [Intel XE#2234]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2234
  [Intel XE#2236]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2236
  [Intel XE#2252]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2252
  [Intel XE#2284]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2284
  [Intel XE#2311]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2311
  [Intel XE#2313]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2313
  [Intel XE#2320]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2320
  [Intel XE#2322]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2322
  [Intel XE#2325]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2325
  [Intel XE#2327]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2327
  [Intel XE#2330]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2330
  [Intel XE#2370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2370
  [Intel XE#2414]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2414
  [Intel XE#2426]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2426
  [Intel XE#2450]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2450
  [Intel XE#2457]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2457
  [Intel XE#2499]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2499
  [Intel XE#2509]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2509
  [Intel XE#2652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2652
  [Intel XE#2850]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2850
  [Intel XE#2887]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/2887
  [Intel XE#3304]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3304
  [Intel XE#3432]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/3432
  [Intel XE#367]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/367
  [Intel XE#4141]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4141
  [Intel XE#4227]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4227
  [Intel XE#4298]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4298
  [Intel XE#4329]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4329
  [Intel XE#4422]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4422
  [Intel XE#4459]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4459
  [Intel XE#4692]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/4692
  [Intel XE#5021]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5021
  [Intel XE#5354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5354
  [Intel XE#5545]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5545
  [Intel XE#5813]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5813
  [Intel XE#5848]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5848
  [Intel XE#5857]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5857
  [Intel XE#5873]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/5873
  [Intel XE#6503]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6503
  [Intel XE#6569]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6569
  [Intel XE#6652]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6652
  [Intel XE#6703]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6703
  [Intel XE#6874]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6874
  [Intel XE#6911]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6911
  [Intel XE#6912]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6912
  [Intel XE#6946]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6946
  [Intel XE#6964]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/6964
  [Intel XE#7061]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7061
  [Intel XE#7084]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7084
  [Intel XE#7136]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7136
  [Intel XE#7138]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7138
  [Intel XE#7140]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7140
  [Intel XE#7178]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7178
  [Intel XE#7305]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7305
  [Intel XE#7308]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7308
  [Intel XE#7340]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7340
  [Intel XE#7349]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7349
  [Intel XE#7351]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7351
  [Intel XE#7354]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7354
  [Intel XE#7356]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7356
  [Intel XE#7358]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7358
  [Intel XE#7370]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7370
  [Intel XE#7372]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7372
  [Intel XE#7374]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7374
  [Intel XE#7375]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7375
  [Intel XE#7376]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7376
  [Intel XE#7377]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7377
  [Intel XE#7397]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7397
  [Intel XE#7402]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7402
  [Intel XE#7405]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7405
  [Intel XE#7437]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7437
  [Intel XE#7442]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7442
  [Intel XE#7444]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7444
  [Intel XE#7445]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7445
  [Intel XE#7466]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7466
  [Intel XE#7504]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7504
  [Intel XE#7508]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7508
  [Intel XE#7571]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7571
  [Intel XE#7578]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7578
  [Intel XE#7589]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7589
  [Intel XE#7590]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7590
  [Intel XE#7621]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7621
  [Intel XE#7636]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7636
  [Intel XE#7679]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7679
  [Intel XE#7695]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/7695
  [Intel XE#836]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/836
  [Intel XE#870]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/870
  [Intel XE#944]: https://gitlab.freedesktop.org/drm/xe/kernel/issues/944


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

  * IGT: IGT_8850 -> IGTPW_14938
  * Linux: xe-4855-5f8792621868737c8b62a87b66dbf7eca4d9f7e3 -> xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf

  IGTPW_14938: 14938
  IGT_8850: 8850
  xe-4855-5f8792621868737c8b62a87b66dbf7eca4d9f7e3: 5f8792621868737c8b62a87b66dbf7eca4d9f7e3
  xe-4860-5ee75b2816df74bfe606d4dfc061547d5cda4ebf: 5ee75b2816df74bfe606d4dfc061547d5cda4ebf

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/intel-xe/IGTPW_14938/index.html

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

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

* Re: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
                   ` (2 preceding siblings ...)
  2026-04-08  3:33 ` ✗ Xe.CI.FULL: " Patchwork
@ 2026-04-08  7:28 ` Jason-JH Lin (林睿祥)
  2026-04-09  8:57 ` Samala, Pranay
  2026-04-14 12:44 ` Joshi, Kunal1
  5 siblings, 0 replies; 9+ messages in thread
From: Jason-JH Lin (林睿祥) @ 2026-04-08  7:28 UTC (permalink / raw)
  To: igt-dev@lists.freedesktop.org, karthik.b.s@intel.com
  Cc: kunal1.joshi@intel.com

On Tue, 2026-04-07 at 15:22 +0530, Karthik B S wrote:
> Currently the test is rejecting all the outputs where the mode is not
> matching. This is leading to excessive skips on configs wherer the
> tests
> were passing previouly.
> 
> Instead of this, use default mode for fixed mode panels if the
> required
> custom mode is not found. And use custom mode for external panels as
> these are allowed and have also been passing previously.
> 

Tested-by: Jason-JH Lin <jason-jh.lin@mediatek.com>

Thanks for the information!

Regards,
Jason-JH Lin

> Cc: Jason-JH Lin <jason-jh.lin@mediatek.com>
> Cc: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>

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

* RE: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
                   ` (3 preceding siblings ...)
  2026-04-08  7:28 ` [PATCH i-g-t] " Jason-JH Lin (林睿祥)
@ 2026-04-09  8:57 ` Samala, Pranay
  2026-04-14  4:41   ` Karthik B S
  2026-04-14 12:44 ` Joshi, Kunal1
  5 siblings, 1 reply; 9+ messages in thread
From: Samala, Pranay @ 2026-04-09  8:57 UTC (permalink / raw)
  To: B S, Karthik, igt-dev@lists.freedesktop.org
  Cc: B S, Karthik, Jason-JH Lin, Joshi, Kunal1

Hi Karthik,

> -----Original Message-----
> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Karthik
> B S
> Sent: Tuesday, April 7, 2026 3:23 PM
> To: igt-dev@lists.freedesktop.org
> Cc: B S, Karthik <karthik.b.s@intel.com>; Jason-JH Lin <jason-
> jh.lin@mediatek.com>; Joshi, Kunal1 <kunal1.joshi@intel.com>
> Subject: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
> 
> Currently the test is rejecting all the outputs where the mode is not
> matching. This is leading to excessive skips on configs wherer the tests were
> passing previouly.
> 
> Instead of this, use default mode for fixed mode panels if the required
> custom mode is not found. And use custom mode for external panels as

The current code always uses default mode on internal panels even 
if the custom mode is missing. 
Imho, if this behavior is intentional, please update the commit message.
Remove this " if the required custom mode is not found".

> these are allowed and have also been passing previously.
> 
> Cc: Jason-JH Lin <jason-jh.lin@mediatek.com>
> Cc: Kunal Joshi <kunal1.joshi@intel.com>
> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
> ---
>  tests/kms_bw.c | 57 ++++++++++++++++++++++++++++++++------------------
>  1 file changed, 37 insertions(+), 20 deletions(-)
> 
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c index 4df5c2cee..4a32ec811
> 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -186,14 +186,16 @@ static void force_output_mode(data_t *d,
> igt_output_t *output,
>  	igt_output_override_mode(output, mode);  }
> 
> -static bool output_mode_supported(igt_output_t *output, const
> drmModeModeInfo *mode)
> +/* Check if output has a matching mode and call it out if mode is being
> +forced */ static void output_mode_supported(igt_output_t *output, const
> +drmModeModeInfo *mode)
>  {
>  	drmModeConnector *connector = output->config.connector;
> +	drmModeModeInfo *default_mode;
>  	int i;
> 
>  	/* Virtual/forced sinks support all modes */
>  	if (!igt_output_is_connected(output))
> -		return true;
> +		return;
> 
>  	for (i = 0; i < connector->count_modes; i++) {
>  		drmModeModeInfo *conn_mode = &connector->modes[i];
> @@ -204,26 +206,32 @@ static bool output_mode_supported(igt_output_t
> *output, const drmModeModeInfo *m
>  			igt_debug("Found matching mode for %dx%d@%dHz
> on %s\n",
>  				  mode->hdisplay, mode->vdisplay, mode-
> >vrefresh,
>  				  igt_output_name(output));
> -			return true;
>  		}
>  	}
> 
> -	igt_info("Mode %dx%d@%dHz not supported by %s (has %d
> modes)\n",
> -		 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> -		 igt_output_name(output), connector->count_modes);
> -
> -	return false;
> +	if (output_is_internal_panel(output)) {
> +		default_mode = igt_output_get_mode(output);
> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d
> modes).\n"
> +			 "%s Default mode: %dx%d@%dHz\n",
> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> +			 igt_output_name(output), connector-
> >count_modes, igt_output_name(output),
> +			 default_mode->hdisplay, default_mode->vdisplay,
> default_mode->vrefresh);
> +	} else {
> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d
> modes). Forcing mode.\n",
> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> +			 igt_output_name(output), connector-
> >count_modes);
> +	}

Here since we are anyhow never using the requested mode even if we found it, 
A suggestion, can we move this internal panel "if check" before scanning for the 
requested mode for loop earlier.

For eg:
Void output_mode_supported() {
	If (internal_panel)
		Get default mode and return
	Else
		Scan and get the requested mode if exists and return
	Log & force it.
}

>  }
> 
>  static void run_test_linear_tiling(data_t *data, int n_crtcs, const
> drmModeModeInfo *mode, bool physical) {
>  	igt_display_t *display = &data->display;
>  	igt_output_t *output;
> +	drmModeModeInfo fb_mode;
>  	struct igt_fb buffer[IGT_MAX_PIPES];
>  	igt_crc_t zero, captured[IGT_MAX_PIPES];
>  	int i = 0, num_pipes = 0;
>  	igt_crtc_t *crtc;
>  	int ret;
> -	bool has_supported_mode = false;
> 
>  	/* Cannot use igt_display_n_crtcs() due to fused pipes on i915 where
> they do
>  	 * not give the numver of valid crtcs and always return
> IGT_MAX_PIPES */ @@ -242,14 +250,26 @@ static void
> run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>  		crtc = data->crtc[i];
> 
>  		output = physical ? data->connected_output[i] : data-
> >output[i];
> -		if (!output || !output_mode_supported(output, mode)) {
> +		if (!output)
>  			continue;
> -		}
> 
> -		force_output_mode(data, output, mode);
> +		output_mode_supported(output, mode);
> +
> +		/*
> +		 * On fixed mode panels trying to force a custom mode can
> lead to failures or
> +		 * implicit handling where the default mode is used even
> though custom mode is requested.

Line length exceeds 100 columns.

Regards,
Pranay.

> +		 * To avoid this use default mode on fixed mode panels and
> +		 * use custom modes only on external panels.
> +		 */
> +		if (output_is_internal_panel(output)) {
> +			fb_mode = *igt_output_get_mode(output);
> +		} else {
> +			force_output_mode(data, output, mode);
> +			fb_mode = *mode;
> +		}
> 
> -		igt_create_color_fb(display->drm_fd, mode->hdisplay,
> -				    mode->vdisplay, DRM_FORMAT_XRGB8888,
> +		igt_create_color_fb(display->drm_fd, fb_mode.hdisplay,
> +				    fb_mode.vdisplay,
> DRM_FORMAT_XRGB8888,
>  				    DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
>  				    &buffer[i]);
> 
> @@ -258,10 +278,8 @@ static void run_test_linear_tiling(data_t *data, int
> n_crtcs, const drmModeModeI
>  		igt_plane_set_fb(data->primary[i], &buffer[i]);
>  		igt_info("Assigning pipe %s to output %s with mode %s\n",
>  			 igt_crtc_name(crtc), igt_output_name(output),
> -			 mode->name);
> -		has_supported_mode = true;
> +			 fb_mode.name);
>  	}
> -	igt_skip_on_f(!has_supported_mode, "Unsupported mode for all
> pipes\n");
> 
>  	ret = igt_display_try_commit_atomic(display,
> 
> DRM_MODE_ATOMIC_ALLOW_MODESET | @@ -273,9 +291,8 @@ static void
> run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
> 
>  	for (i = 0; i < n_crtcs; i++) {
>  		output = physical ? data->connected_output[i] : data-
> >output[i];
> -		if (!output || !output_mode_supported(output, mode)) {
> +		if (!output)
>  			continue;
> -		}
> 
>  		igt_pipe_crc_collect_crc(data->pipe_crc[i], &captured[i]);
>  		igt_assert_f(!igt_check_crc_equal(&zero, &captured[i]), @@
> -284,7 +301,7 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs,
> const drmModeModeI
> 
>  	for (i = n_crtcs - 1; i >= 0; i--) {
>  		output = physical ? data->connected_output[i] : data-
> >output[i];
> -		if (!output || !output_mode_supported(output, mode))
> +		if (!output)
>  			continue;
> 
>  		igt_remove_fb(display->drm_fd, &buffer[i]);
> --
> 2.43.0


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

* Re: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
  2026-04-09  8:57 ` Samala, Pranay
@ 2026-04-14  4:41   ` Karthik B S
  0 siblings, 0 replies; 9+ messages in thread
From: Karthik B S @ 2026-04-14  4:41 UTC (permalink / raw)
  To: Samala, Pranay, igt-dev@lists.freedesktop.org; +Cc: Jason-JH Lin, Joshi, Kunal1

Hi Pranay,

On 4/9/2026 2:27 PM, Samala, Pranay wrote:
> Hi Karthik,
>
>> -----Original Message-----
>> From: igt-dev <igt-dev-bounces@lists.freedesktop.org> On Behalf Of Karthik
>> B S
>> Sent: Tuesday, April 7, 2026 3:23 PM
>> To: igt-dev@lists.freedesktop.org
>> Cc: B S, Karthik <karthik.b.s@intel.com>; Jason-JH Lin <jason-
>> jh.lin@mediatek.com>; Joshi, Kunal1 <kunal1.joshi@intel.com>
>> Subject: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
>>
>> Currently the test is rejecting all the outputs where the mode is not
>> matching. This is leading to excessive skips on configs wherer the tests were
>> passing previouly.
>>
>> Instead of this, use default mode for fixed mode panels if the required
>> custom mode is not found. And use custom mode for external panels as
> The current code always uses default mode on internal panels even
> if the custom mode is missing.
> Imho, if this behavior is intentional, please update the commit message.
> Remove this " if the required custom mode is not found".

Thank you for the review.

Even though we use the default mode, we are checking if that is the same 
as requested mode and if that is true, then test doesn't throw any 
warnings as we're using the requested mode itself on all available panels.

>
>> these are allowed and have also been passing previously.
>>
>> Cc: Jason-JH Lin <jason-jh.lin@mediatek.com>
>> Cc: Kunal Joshi <kunal1.joshi@intel.com>
>> Signed-off-by: Karthik B S <karthik.b.s@intel.com>
>> ---
>>   tests/kms_bw.c | 57 ++++++++++++++++++++++++++++++++------------------
>>   1 file changed, 37 insertions(+), 20 deletions(-)
>>
>> diff --git a/tests/kms_bw.c b/tests/kms_bw.c index 4df5c2cee..4a32ec811
>> 100644
>> --- a/tests/kms_bw.c
>> +++ b/tests/kms_bw.c
>> @@ -186,14 +186,16 @@ static void force_output_mode(data_t *d,
>> igt_output_t *output,
>>   	igt_output_override_mode(output, mode);  }
>>
>> -static bool output_mode_supported(igt_output_t *output, const
>> drmModeModeInfo *mode)
>> +/* Check if output has a matching mode and call it out if mode is being
>> +forced */ static void output_mode_supported(igt_output_t *output, const
>> +drmModeModeInfo *mode)
>>   {
>>   	drmModeConnector *connector = output->config.connector;
>> +	drmModeModeInfo *default_mode;
>>   	int i;
>>
>>   	/* Virtual/forced sinks support all modes */
>>   	if (!igt_output_is_connected(output))
>> -		return true;
>> +		return;
>>
>>   	for (i = 0; i < connector->count_modes; i++) {
>>   		drmModeModeInfo *conn_mode = &connector->modes[i];
>> @@ -204,26 +206,32 @@ static bool output_mode_supported(igt_output_t
>> *output, const drmModeModeInfo *m
>>   			igt_debug("Found matching mode for %dx%d@%dHz
>> on %s\n",
>>   				  mode->hdisplay, mode->vdisplay, mode-
>>> vrefresh,
>>   				  igt_output_name(output));
>> -			return true;
>>   		}
>>   	}
>>
>> -	igt_info("Mode %dx%d@%dHz not supported by %s (has %d
>> modes)\n",
>> -		 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> -		 igt_output_name(output), connector->count_modes);
>> -
>> -	return false;
>> +	if (output_is_internal_panel(output)) {
>> +		default_mode = igt_output_get_mode(output);
>> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d
>> modes).\n"
>> +			 "%s Default mode: %dx%d@%dHz\n",
>> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> +			 igt_output_name(output), connector-
>>> count_modes, igt_output_name(output),
>> +			 default_mode->hdisplay, default_mode->vdisplay,
>> default_mode->vrefresh);
>> +	} else {
>> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d
>> modes). Forcing mode.\n",
>> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> +			 igt_output_name(output), connector-
>>> count_modes);
>> +	}
> Here since we are anyhow never using the requested mode even if we found it,
> A suggestion, can we move this internal panel "if check" before scanning for the
> requested mode for loop earlier.
>
> For eg:
> Void output_mode_supported() {
> 	If (internal_panel)
> 		Get default mode and return
> 	Else
> 		Scan and get the requested mode if exists and return
> 	Log & force it.
> }
Same reasoning as above.
>
>>   }
>>
>>   static void run_test_linear_tiling(data_t *data, int n_crtcs, const
>> drmModeModeInfo *mode, bool physical) {
>>   	igt_display_t *display = &data->display;
>>   	igt_output_t *output;
>> +	drmModeModeInfo fb_mode;
>>   	struct igt_fb buffer[IGT_MAX_PIPES];
>>   	igt_crc_t zero, captured[IGT_MAX_PIPES];
>>   	int i = 0, num_pipes = 0;
>>   	igt_crtc_t *crtc;
>>   	int ret;
>> -	bool has_supported_mode = false;
>>
>>   	/* Cannot use igt_display_n_crtcs() due to fused pipes on i915 where
>> they do
>>   	 * not give the numver of valid crtcs and always return
>> IGT_MAX_PIPES */ @@ -242,14 +250,26 @@ static void
>> run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>   		crtc = data->crtc[i];
>>
>>   		output = physical ? data->connected_output[i] : data-
>>> output[i];
>> -		if (!output || !output_mode_supported(output, mode)) {
>> +		if (!output)
>>   			continue;
>> -		}
>>
>> -		force_output_mode(data, output, mode);
>> +		output_mode_supported(output, mode);
>> +
>> +		/*
>> +		 * On fixed mode panels trying to force a custom mode can
>> lead to failures or
>> +		 * implicit handling where the default mode is used even
>> though custom mode is requested.
> Line length exceeds 100 columns.

Will fix this.

Thanks,
Karthik.B.S
>
> Regards,
> Pranay.
>
>> +		 * To avoid this use default mode on fixed mode panels and
>> +		 * use custom modes only on external panels.
>> +		 */
>> +		if (output_is_internal_panel(output)) {
>> +			fb_mode = *igt_output_get_mode(output);
>> +		} else {
>> +			force_output_mode(data, output, mode);
>> +			fb_mode = *mode;
>> +		}
>>
>> -		igt_create_color_fb(display->drm_fd, mode->hdisplay,
>> -				    mode->vdisplay, DRM_FORMAT_XRGB8888,
>> +		igt_create_color_fb(display->drm_fd, fb_mode.hdisplay,
>> +				    fb_mode.vdisplay,
>> DRM_FORMAT_XRGB8888,
>>   				    DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
>>   				    &buffer[i]);
>>
>> @@ -258,10 +278,8 @@ static void run_test_linear_tiling(data_t *data, int
>> n_crtcs, const drmModeModeI
>>   		igt_plane_set_fb(data->primary[i], &buffer[i]);
>>   		igt_info("Assigning pipe %s to output %s with mode %s\n",
>>   			 igt_crtc_name(crtc), igt_output_name(output),
>> -			 mode->name);
>> -		has_supported_mode = true;
>> +			 fb_mode.name);
>>   	}
>> -	igt_skip_on_f(!has_supported_mode, "Unsupported mode for all
>> pipes\n");
>>
>>   	ret = igt_display_try_commit_atomic(display,
>>
>> DRM_MODE_ATOMIC_ALLOW_MODESET | @@ -273,9 +291,8 @@ static void
>> run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>
>>   	for (i = 0; i < n_crtcs; i++) {
>>   		output = physical ? data->connected_output[i] : data-
>>> output[i];
>> -		if (!output || !output_mode_supported(output, mode)) {
>> +		if (!output)
>>   			continue;
>> -		}
>>
>>   		igt_pipe_crc_collect_crc(data->pipe_crc[i], &captured[i]);
>>   		igt_assert_f(!igt_check_crc_equal(&zero, &captured[i]), @@
>> -284,7 +301,7 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs,
>> const drmModeModeI
>>
>>   	for (i = n_crtcs - 1; i >= 0; i--) {
>>   		output = physical ? data->connected_output[i] : data-
>>> output[i];
>> -		if (!output || !output_mode_supported(output, mode))
>> +		if (!output)
>>   			continue;
>>
>>   		igt_remove_fb(display->drm_fd, &buffer[i]);
>> --
>> 2.43.0

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

* Re: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
  2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
                   ` (4 preceding siblings ...)
  2026-04-09  8:57 ` Samala, Pranay
@ 2026-04-14 12:44 ` Joshi, Kunal1
  2026-04-16  3:24   ` Karthik B S
  5 siblings, 1 reply; 9+ messages in thread
From: Joshi, Kunal1 @ 2026-04-14 12:44 UTC (permalink / raw)
  To: Karthik B S, igt-dev; +Cc: Jason-JH Lin

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

Hello Karthik,

On 07-04-2026 15:22, Karthik B S wrote:
> Currently the test is rejecting all the outputs where the mode is not
> matching. This is leading to excessive skips on configs wherer the tests
> were passing previouly.
>
> Instead of this, use default mode for fixed mode panels if the required
> custom mode is not found. And use custom mode for external panels as
> these are allowed and have also been passing previously.
>
> Cc: Jason-JH Lin<jason-jh.lin@mediatek.com>
> Cc: Kunal Joshi<kunal1.joshi@intel.com>
> Signed-off-by: Karthik B S<karthik.b.s@intel.com>
> ---
>   tests/kms_bw.c | 57 ++++++++++++++++++++++++++++++++------------------
>   1 file changed, 37 insertions(+), 20 deletions(-)
>
> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
> index 4df5c2cee..4a32ec811 100644
> --- a/tests/kms_bw.c
> +++ b/tests/kms_bw.c
> @@ -186,14 +186,16 @@ static void force_output_mode(data_t *d, igt_output_t *output,
>   	igt_output_override_mode(output, mode);
>   }
>   
> -static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
> +/* Check if output has a matching mode and call it out if mode is being forced */
> +static void output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
Since the function is now void and purely informational, the name
output_mode_supported no longer reflects what it does. Consider renaming
>   {
>   	drmModeConnector *connector = output->config.connector;
> +	drmModeModeInfo *default_mode;
>   	int i;
>   
>   	/* Virtual/forced sinks support all modes */
>   	if (!igt_output_is_connected(output))
> -		return true;
> +		return;
>   
>   	for (i = 0; i < connector->count_modes; i++) {
>   		drmModeModeInfo *conn_mode = &connector->modes[i];
> @@ -204,26 +206,32 @@ static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *m
>   			igt_debug("Found matching mode for %dx%d@%dHz on %s\n",
>   				  mode->hdisplay, mode->vdisplay, mode->vrefresh,
>   				  igt_output_name(output));
> -			return true;
>   		}
>   	}
>   
> -	igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes)\n",
> -		 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> -		 igt_output_name(output), connector->count_modes);
> -
> -	return false;
> +	if (output_is_internal_panel(output)) {
> +		default_mode = igt_output_get_mode(output);
> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes).\n"
> +			 "%s Default mode: %dx%d@%dHz\n",
> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> +			 igt_output_name(output), connector->count_modes, igt_output_name(output),
> +			 default_mode->hdisplay, default_mode->vdisplay, default_mode->vrefresh);
> +	} else {
> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes). Forcing mode.\n",
> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
> +			 igt_output_name(output), connector->count_modes);
> +	}
Previously the matching case returned immediately from inside the loop.
If that early return is removed without adding equivalent control flow,
then when a matching mode /is/found the function will still fall through
and print the "not supported" message afterward. In that case we would end
up logging both "Found matching mode" and "not supported" for the same
connector/mode pair.
>   }
>   
>   static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeInfo *mode, bool physical) {
>   	igt_display_t *display = &data->display;
>   	igt_output_t *output;
> +	drmModeModeInfo fb_mode;
>   	struct igt_fb buffer[IGT_MAX_PIPES];
>   	igt_crc_t zero, captured[IGT_MAX_PIPES];
>   	int i = 0, num_pipes = 0;
>   	igt_crtc_t *crtc;
>   	int ret;
> -	bool has_supported_mode = false;
>   
>   	/* Cannot use igt_display_n_crtcs() due to fused pipes on i915 where they do
>   	 * not give the numver of valid crtcs and always return IGT_MAX_PIPES */
> @@ -242,14 +250,26 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>   		crtc = data->crtc[i];
>   
>   		output = physical ? data->connected_output[i] : data->output[i];
> -		if (!output || !output_mode_supported(output, mode)) {
> +		if (!output)
>   			continue;
> -		}
>   
> -		force_output_mode(data, output, mode);
> +		output_mode_supported(output, mode);
> +
> +		/*
> +		 * On fixed mode panels trying to force a custom mode can lead to failures or
> +		 * implicit handling where the default mode is used even though custom mode is requested.
> +		 * To avoid this use default mode on fixed mode panels and
> +		 * use custom modes only on external panels.
> +		 */
> +		if (output_is_internal_panel(output)) {
> +			fb_mode = *igt_output_get_mode(output);
> +		} else {
> +			force_output_mode(data, output, mode);
> +			fb_mode = *mode;
> +		}
For internal panels, the subtest will always run at the panel's native mode
regardless of what mode the subtest requested. So a subtest meant to stress
e.g. 4K@60 bandwidth will actually run at whatever the native eDP resolution
is. The test will pass but it won't be validating the bandwidth scenario the
subtest name implies.

For internal panels where the requested custom mode is not natively 
supported,
instead of silently falling back to the default mode, skip that output 
for that
specific subtest (also prefer external panel first to reduce skip's),
since the bandwidth scenario cannot actually be exercised on that panel.

I know we are doing this so we eventually have less skip's, but someone 
who won't
know this fact may have false sense of coverage (i.e we tested 4x4k).

Other alternative would be changing test description to state test 
exercise's standard
modes on external panel with default mode internal if present. This 
scenario is more likely as user will
have internal panel running along with some external display's connected.

Thanks and Regards
Kunal Joshi
>   
> -		igt_create_color_fb(display->drm_fd, mode->hdisplay,
> -				    mode->vdisplay, DRM_FORMAT_XRGB8888,
> +		igt_create_color_fb(display->drm_fd, fb_mode.hdisplay,
> +				    fb_mode.vdisplay, DRM_FORMAT_XRGB8888,
>   				    DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
>   				    &buffer[i]);
>   
> @@ -258,10 +278,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>   		igt_plane_set_fb(data->primary[i], &buffer[i]);
>   		igt_info("Assigning pipe %s to output %s with mode %s\n",
>   			 igt_crtc_name(crtc), igt_output_name(output),
> -			 mode->name);
> -		has_supported_mode = true;
> +			 fb_mode.name);
>   	}
> -	igt_skip_on_f(!has_supported_mode, "Unsupported mode for all pipes\n");
>   
>   	ret = igt_display_try_commit_atomic(display,
>   					    DRM_MODE_ATOMIC_ALLOW_MODESET |
> @@ -273,9 +291,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>   
>   	for (i = 0; i < n_crtcs; i++) {
>   		output = physical ? data->connected_output[i] : data->output[i];
> -		if (!output || !output_mode_supported(output, mode)) {
> +		if (!output)
>   			continue;
> -		}
>   
>   		igt_pipe_crc_collect_crc(data->pipe_crc[i], &captured[i]);
>   		igt_assert_f(!igt_check_crc_equal(&zero, &captured[i]),
> @@ -284,7 +301,7 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>   
>   	for (i = n_crtcs - 1; i >= 0; i--) {
>   		output = physical ? data->connected_output[i] : data->output[i];
> -		if (!output || !output_mode_supported(output, mode))
> +		if (!output)
>   			continue;
>   
>   		igt_remove_fb(display->drm_fd, &buffer[i]);

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

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

* Re: [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels
  2026-04-14 12:44 ` Joshi, Kunal1
@ 2026-04-16  3:24   ` Karthik B S
  0 siblings, 0 replies; 9+ messages in thread
From: Karthik B S @ 2026-04-16  3:24 UTC (permalink / raw)
  To: Joshi, Kunal1, igt-dev; +Cc: Jason-JH Lin

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

Hi Kunal,

On 4/14/2026 6:14 PM, Joshi, Kunal1 wrote:
>
> Hello Karthik,
>
> On 07-04-2026 15:22, Karthik B S wrote:
>> Currently the test is rejecting all the outputs where the mode is not
>> matching. This is leading to excessive skips on configs wherer the tests
>> were passing previouly.
>>
>> Instead of this, use default mode for fixed mode panels if the required
>> custom mode is not found. And use custom mode for external panels as
>> these are allowed and have also been passing previously.
>>
>> Cc: Jason-JH Lin<jason-jh.lin@mediatek.com>
>> Cc: Kunal Joshi<kunal1.joshi@intel.com>
>> Signed-off-by: Karthik B S<karthik.b.s@intel.com>
>> ---
>>   tests/kms_bw.c | 57 ++++++++++++++++++++++++++++++++------------------
>>   1 file changed, 37 insertions(+), 20 deletions(-)
>>
>> diff --git a/tests/kms_bw.c b/tests/kms_bw.c
>> index 4df5c2cee..4a32ec811 100644
>> --- a/tests/kms_bw.c
>> +++ b/tests/kms_bw.c
>> @@ -186,14 +186,16 @@ static void force_output_mode(data_t *d, igt_output_t *output,
>>   	igt_output_override_mode(output, mode);
>>   }
>>   
>> -static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
>> +/* Check if output has a matching mode and call it out if mode is being forced */
>> +static void output_mode_supported(igt_output_t *output, const drmModeModeInfo *mode)
> Since the function is now void and purely informational, the name
> output_mode_supported no longer reflects what it does. Consider renaming

Thank you for the review.

Sure will update this.

>>   {
>>   	drmModeConnector *connector = output->config.connector;
>> +	drmModeModeInfo *default_mode;
>>   	int i;
>>   
>>   	/* Virtual/forced sinks support all modes */
>>   	if (!igt_output_is_connected(output))
>> -		return true;
>> +		return;
>>   
>>   	for (i = 0; i < connector->count_modes; i++) {
>>   		drmModeModeInfo *conn_mode = &connector->modes[i];
>> @@ -204,26 +206,32 @@ static bool output_mode_supported(igt_output_t *output, const drmModeModeInfo *m
>>   			igt_debug("Found matching mode for %dx%d@%dHz on %s\n",
>>   				  mode->hdisplay, mode->vdisplay, mode->vrefresh,
>>   				  igt_output_name(output));
>> -			return true;
>>   		}
>>   	}
>>   
>> -	igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes)\n",
>> -		 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> -		 igt_output_name(output), connector->count_modes);
>> -
>> -	return false;
>> +	if (output_is_internal_panel(output)) {
>> +		default_mode = igt_output_get_mode(output);
>> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes).\n"
>> +			 "%s Default mode: %dx%d@%dHz\n",
>> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> +			 igt_output_name(output), connector->count_modes, igt_output_name(output),
>> +			 default_mode->hdisplay, default_mode->vdisplay, default_mode->vrefresh);
>> +	} else {
>> +		igt_info("Mode %dx%d@%dHz not supported by %s (has %d modes). Forcing mode.\n",
>> +			 mode->hdisplay, mode->vdisplay, mode->vrefresh,
>> +			 igt_output_name(output), connector->count_modes);
>> +	}
> Previously the matching case returned immediately from inside the loop.
> If that early return is removed without adding equivalent control flow,
> then when a matching mode /is/found the function will still fall through
> and print the "not supported" message afterward. In that case we would end
> up logging both "Found matching mode" and "not supported" for the same
> connector/mode pair.
Will fix this.
>>   }
>>   
>>   static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeInfo *mode, bool physical) {
>>   	igt_display_t *display = &data->display;
>>   	igt_output_t *output;
>> +	drmModeModeInfo fb_mode;
>>   	struct igt_fb buffer[IGT_MAX_PIPES];
>>   	igt_crc_t zero, captured[IGT_MAX_PIPES];
>>   	int i = 0, num_pipes = 0;
>>   	igt_crtc_t *crtc;
>>   	int ret;
>> -	bool has_supported_mode = false;
>>   
>>   	/* Cannot use igt_display_n_crtcs() due to fused pipes on i915 where they do
>>   	 * not give the numver of valid crtcs and always return IGT_MAX_PIPES */
>> @@ -242,14 +250,26 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>   		crtc = data->crtc[i];
>>   
>>   		output = physical ? data->connected_output[i] : data->output[i];
>> -		if (!output || !output_mode_supported(output, mode)) {
>> +		if (!output)
>>   			continue;
>> -		}
>>   
>> -		force_output_mode(data, output, mode);
>> +		output_mode_supported(output, mode);
>> +
>> +		/*
>> +		 * On fixed mode panels trying to force a custom mode can lead to failures or
>> +		 * implicit handling where the default mode is used even though custom mode is requested.
>> +		 * To avoid this use default mode on fixed mode panels and
>> +		 * use custom modes only on external panels.
>> +		 */
>> +		if (output_is_internal_panel(output)) {
>> +			fb_mode = *igt_output_get_mode(output);
>> +		} else {
>> +			force_output_mode(data, output, mode);
>> +			fb_mode = *mode;
>> +		}
> For internal panels, the subtest will always run at the panel's native 
> mode
> regardless of what mode the subtest requested. So a subtest meant to 
> stress
> e.g. 4K@60 bandwidth will actually run at whatever the native eDP 
> resolution
> is. The test will pass but it won't be validating the bandwidth 
> scenario the
> subtest name implies.
>
> For internal panels where the requested custom mode is not natively 
> supported,
> instead of silently falling back to the default mode, skip that output 
> for that
> specific subtest (also prefer external panel first to reduce skip's),
> since the bandwidth scenario cannot actually be exercised on that panel.
>
> I know we are doing this so we eventually have less skip's, but 
> someone who won't
> know this fact may have false sense of coverage (i.e we tested 4x4k).
>
> Other alternative would be changing test description to state test 
> exercise's standard
> modes on external panel with default mode internal if present. This 
> scenario is more likely as user will
> have internal panel running along with some external display's connected.

This is something even I was contemplating on which direction to take. 
But I leaned on using the fixed mode panel finally, as without that 
we'll completely leave out one of the displays.

I will update the test description and also see if the test name can 
also be updated to call this out more clearly.

Thanks and Regards,
Karthik.B.S
>
> Thanks and Regards
> Kunal Joshi
>>   
>> -		igt_create_color_fb(display->drm_fd, mode->hdisplay,
>> -				    mode->vdisplay, DRM_FORMAT_XRGB8888,
>> +		igt_create_color_fb(display->drm_fd, fb_mode.hdisplay,
>> +				    fb_mode.vdisplay, DRM_FORMAT_XRGB8888,
>>   				    DRM_FORMAT_MOD_LINEAR, 1.f, 0.f, 0.f,
>>   				    &buffer[i]);
>>   
>> @@ -258,10 +278,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>   		igt_plane_set_fb(data->primary[i], &buffer[i]);
>>   		igt_info("Assigning pipe %s to output %s with mode %s\n",
>>   			 igt_crtc_name(crtc), igt_output_name(output),
>> -			 mode->name);
>> -		has_supported_mode = true;
>> +			 fb_mode.name);
>>   	}
>> -	igt_skip_on_f(!has_supported_mode, "Unsupported mode for all pipes\n");
>>   
>>   	ret = igt_display_try_commit_atomic(display,
>>   					    DRM_MODE_ATOMIC_ALLOW_MODESET |
>> @@ -273,9 +291,8 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>   
>>   	for (i = 0; i < n_crtcs; i++) {
>>   		output = physical ? data->connected_output[i] : data->output[i];
>> -		if (!output || !output_mode_supported(output, mode)) {
>> +		if (!output)
>>   			continue;
>> -		}
>>   
>>   		igt_pipe_crc_collect_crc(data->pipe_crc[i], &captured[i]);
>>   		igt_assert_f(!igt_check_crc_equal(&zero, &captured[i]),
>> @@ -284,7 +301,7 @@ static void run_test_linear_tiling(data_t *data, int n_crtcs, const drmModeModeI
>>   
>>   	for (i = n_crtcs - 1; i >= 0; i--) {
>>   		output = physical ? data->connected_output[i] : data->output[i];
>> -		if (!output || !output_mode_supported(output, mode))
>> +		if (!output)
>>   			continue;
>>   
>>   		igt_remove_fb(display->drm_fd, &buffer[i]);

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

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

end of thread, other threads:[~2026-04-16  3:24 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-07  9:52 [PATCH i-g-t] tests/kms_bw: Allow custom modes for external panels Karthik B S
2026-04-08  0:25 ` ✓ Xe.CI.BAT: success for " Patchwork
2026-04-08  0:34 ` ✗ i915.CI.BAT: failure " Patchwork
2026-04-08  3:33 ` ✗ Xe.CI.FULL: " Patchwork
2026-04-08  7:28 ` [PATCH i-g-t] " Jason-JH Lin (林睿祥)
2026-04-09  8:57 ` Samala, Pranay
2026-04-14  4:41   ` Karthik B S
2026-04-14 12:44 ` Joshi, Kunal1
2026-04-16  3:24   ` Karthik B S

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