Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling
@ 2026-07-23 13:43 Sowmiya S
  2026-07-23 13:43 ` [PATCH i-g-t v1 1/2] lib/igt_kms: " Sowmiya S
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Sowmiya S @ 2026-07-23 13:43 UTC (permalink / raw)
  To: igt-dev; +Cc: swati2.sharma, santhosh.reddy.guddati, Sowmiya S

On NVL (display_ver=35), a higher max_dotclock causes modes like
6144x3456@60 to pass the standard igt_bigjoiner_possible() checks,
yet the kernel still enables joiner for them. Introduce per-platform
exception mode lists (e.g. nvl_joiner_exception_modes[]) dispatched
via IS_NOVALAKE() in a new mode_needs_joiner_exception() helper, and
wire it into igt_bigjoiner_possible(). Also add IS_NOVALAKE() to
intel_chipset.h as a combined IS_NOVALAKE_S() || IS_NOVALAKE_P() macro.
Fix intel_boundary_non_joiner_mode_found() to skip exception modes,
preventing test_basic_max_non_joiner from incorrectly selecting a
joiner-required mode as a non-joiner boundary mode.

Sowmiya S (2):
  lib/igt_kms: Add platform-specific joiner exception mode handling
  lib/igt_kms: Skip joiner exception modes in boundary non-joiner search

 lib/igt_kms.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 52 insertions(+), 3 deletions(-)

-- 
2.43.0


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

* [PATCH i-g-t v1 1/2] lib/igt_kms: Add platform-specific joiner exception mode handling
  2026-07-23 13:43 [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling Sowmiya S
@ 2026-07-23 13:43 ` Sowmiya S
  2026-07-23 13:43 ` [PATCH i-g-t v1 2/2] lib/igt_kms: Skip joiner exception modes in boundary non-joiner search Sowmiya S
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Sowmiya S @ 2026-07-23 13:43 UTC (permalink / raw)
  To: igt-dev; +Cc: swati2.sharma, santhosh.reddy.guddati, Sowmiya S

On NVL (display_ver=35), a higher max_dotclock causes modes like
6144x3456@60 to pass the standard igt_bigjoiner_possible() checks,
yet the kernel still enables joiner for them. Introduce per-platform
exception mode lists (e.g. nvl_joiner_exception_modes[]) dispatched
via IS_NOVALAKE() in a new mode_needs_joiner_exception() helper, and
wire it into igt_bigjoiner_possible(). Also add IS_NOVALAKE() to
intel_chipset.h as a combined IS_NOVALAKE_S() || IS_NOVALAKE_P() macro.

Signed-off-by: Sowmiya S <sowmiya.s@intel.com>
---
 lib/igt_kms.c | 52 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 50 insertions(+), 2 deletions(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index 2eefb773b..bfa6dfc0e 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -7058,6 +7058,52 @@ int intel_get_max_pipe_hdisplay(int drm_fd)
 						   HDISPLAY_5K_PER_PIPE;
 }
 
+struct joiner_mode_exception {
+	uint16_t hdisplay, vdisplay;
+	uint32_t clock;
+};
+
+static bool match_joiner_exception(drmModeModeInfo *mode,
+				   const struct joiner_mode_exception *list,
+				   int count)
+{
+	for (int i = 0; i < count; i++) {
+		if (mode->hdisplay == list[i].hdisplay &&
+		    mode->vdisplay == list[i].vdisplay &&
+		    mode->clock == list[i].clock)
+			return true;
+	}
+
+	return false;
+}
+
+/* NVL: higher max_dotclock allows clocks that still need joiner */
+static const struct joiner_mode_exception nvl_joiner_exception_modes[] = {
+	{ 6144, 3456, 1413390 }, /* 6144x3456@60Hz */
+};
+
+/*
+ * mode_needs_joiner_exception - check if a mode requires joiner via explicit exception
+ * @drm_fd: drm file descriptor
+ * @mode: libdrm mode
+ *
+ * On some platforms, a higher max_dotclock means certain modes won't trigger
+ * the standard clock or hdisplay checks even though the kernel enables joiner
+ * for them. Each platform has its own exception list.
+ *
+ * Returns: True if the mode is a known joiner exception, else False.
+ */
+static bool mode_needs_joiner_exception(int drm_fd, drmModeModeInfo *mode)
+{
+	uint16_t dev_id = intel_get_drm_devid(drm_fd);
+
+	if (IS_NOVALAKE_P(dev_id) || IS_NOVALAKE_S(dev_id))
+		return match_joiner_exception(mode, nvl_joiner_exception_modes,
+					      ARRAY_SIZE(nvl_joiner_exception_modes));
+
+	return false;
+}
+
 /**
  * igt_bigjoiner_possible:
  * @drm_fd: drm file descriptor
@@ -7066,13 +7112,15 @@ int intel_get_max_pipe_hdisplay(int drm_fd)
  *
  * Bigjoiner is required when the requested mode exceeds single-pipe
  * platform limits, i.e. hdisplay is above the platform threshold or
- * clock is above @max_dotclock.
+ * clock is above @max_dotclock. On NVL, the higher max_dotclock means
+ * some modes (e.g. 6144x3456@60) need an explicit exception check.
  *
  * Returns: True if mode requires Bigjoiner, else False.
  */
 bool igt_bigjoiner_possible(int drm_fd, drmModeModeInfo *mode, int max_dotclock)
 {
-	return (mode->hdisplay > intel_get_max_pipe_hdisplay(drm_fd) ||
+	return (mode_needs_joiner_exception(drm_fd, mode) ||
+		mode->hdisplay > intel_get_max_pipe_hdisplay(drm_fd) ||
 		mode->clock > max_dotclock);
 }
 
-- 
2.43.0


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

* [PATCH i-g-t v1 2/2] lib/igt_kms: Skip joiner exception modes in boundary non-joiner search
  2026-07-23 13:43 [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling Sowmiya S
  2026-07-23 13:43 ` [PATCH i-g-t v1 1/2] lib/igt_kms: " Sowmiya S
@ 2026-07-23 13:43 ` Sowmiya S
  2026-07-23 14:49 ` ✓ Xe.CI.BAT: success for Add platform-specific joiner exception mode handling Patchwork
  2026-07-23 14:51 ` ✓ i915.CI.BAT: " Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Sowmiya S @ 2026-07-23 13:43 UTC (permalink / raw)
  To: igt-dev; +Cc: swati2.sharma, santhosh.reddy.guddati, Sowmiya S

Fix intel_boundary_non_joiner_mode_found() to skip exception modes,
preventing test_basic_max_non_joiner from incorrectly selecting a
joiner-required mode as a non-joiner boundary mode.

Signed-off-by: Sowmiya S <sowmiya.s@intel.com>
---
 lib/igt_kms.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/igt_kms.c b/lib/igt_kms.c
index bfa6dfc0e..5cee7db2c 100644
--- a/lib/igt_kms.c
+++ b/lib/igt_kms.c
@@ -7174,7 +7174,8 @@ bool intel_boundary_non_joiner_mode_found(int drm_fd, drmModeConnector *connecto
 		drmModeModeInfo *current_mode = &connector->modes[i];
 
 		if (current_mode->hdisplay == max_hdisplay &&
-		    current_mode->clock < max_dotclock) {
+		    current_mode->clock < max_dotclock &&
+		    !mode_needs_joiner_exception(drm_fd, current_mode)) {
 			*mode = *current_mode;
 			return true;
 		}
-- 
2.43.0


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

* ✓ Xe.CI.BAT: success for Add platform-specific joiner exception mode handling
  2026-07-23 13:43 [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling Sowmiya S
  2026-07-23 13:43 ` [PATCH i-g-t v1 1/2] lib/igt_kms: " Sowmiya S
  2026-07-23 13:43 ` [PATCH i-g-t v1 2/2] lib/igt_kms: Skip joiner exception modes in boundary non-joiner search Sowmiya S
@ 2026-07-23 14:49 ` Patchwork
  2026-07-23 14:51 ` ✓ i915.CI.BAT: " Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2026-07-23 14:49 UTC (permalink / raw)
  To: Sowmiya S; +Cc: igt-dev

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

== Series Details ==

Series: Add platform-specific joiner exception mode handling
URL   : https://patchwork.freedesktop.org/series/170996/
State : success

== Summary ==

CI Bug Log - changes from XEIGT_9022_BAT -> XEIGTPW_15587_BAT
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  

Participating hosts (13 -> 12)
------------------------------

  Missing    (1): bat-bmg-2 


Changes
-------

  No changes found


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

  * IGT: IGT_9022 -> IGTPW_15587

  IGTPW_15587: 10cb29f438d369add31f76dc029341b761b07882 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9022: 9022
  xe-5467-2c64192f1ad194a53800f6dd8c779d5b4bbc1831: 2c64192f1ad194a53800f6dd8c779d5b4bbc1831

== Logs ==

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

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

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

* ✓ i915.CI.BAT: success for Add platform-specific joiner exception mode handling
  2026-07-23 13:43 [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling Sowmiya S
                   ` (2 preceding siblings ...)
  2026-07-23 14:49 ` ✓ Xe.CI.BAT: success for Add platform-specific joiner exception mode handling Patchwork
@ 2026-07-23 14:51 ` Patchwork
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2026-07-23 14:51 UTC (permalink / raw)
  To: Sowmiya S; +Cc: igt-dev

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

== Series Details ==

Series: Add platform-specific joiner exception mode handling
URL   : https://patchwork.freedesktop.org/series/170996/
State : success

== Summary ==

CI Bug Log - changes from IGT_9022 -> IGTPW_15587
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

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

Participating hosts (39 -> 40)
------------------------------

  Additional (3): fi-pnv-d510 fi-ilk-650 bat-adls-6 
  Missing    (2): bat-dg2-13 fi-snb-2520m 

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

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

### IGT changes ###

#### Issues hit ####

  * igt@fbdev@info:
    - fi-pnv-d510:        NOTRUN -> [SKIP][1] ([i915#1849])
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/fi-pnv-d510/igt@fbdev@info.html

  * igt@gem_lmem_swapping@parallel-random-engines:
    - bat-adls-6:         NOTRUN -> [SKIP][2] ([i915#4613]) +3 other tests skip
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@gem_lmem_swapping@parallel-random-engines.html

  * igt@gem_tiled_pread_basic@basic:
    - bat-adls-6:         NOTRUN -> [SKIP][3] ([i915#15656])
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@gem_tiled_pread_basic@basic.html

  * igt@intel_hwmon@hwmon-read:
    - bat-adls-6:         NOTRUN -> [SKIP][4] ([i915#7707]) +1 other test skip
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@intel_hwmon@hwmon-read.html

  * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy:
    - bat-adls-6:         NOTRUN -> [SKIP][5] ([i915#4103]) +1 other test skip
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html

  * igt@kms_dsc@dsc-basic:
    - bat-adls-6:         NOTRUN -> [SKIP][6] ([i915#16361])
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_dsc@dsc-basic.html

  * igt@kms_force_connector_basic@force-load-detect:
    - bat-adls-6:         NOTRUN -> [SKIP][7]
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_force_connector_basic@force-load-detect.html

  * igt@kms_pipe_crc_basic@nonblocking-crc:
    - fi-pnv-d510:        NOTRUN -> [SKIP][8] ([i915#11190]) +16 other tests skip
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/fi-pnv-d510/igt@kms_pipe_crc_basic@nonblocking-crc.html

  * igt@kms_pm_backlight@basic-brightness:
    - bat-adls-6:         NOTRUN -> [SKIP][9] ([i915#5354])
   [9]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_pm_backlight@basic-brightness.html

  * igt@kms_pm_rpm@basic-pci-d3-state:
    - fi-ilk-650:         NOTRUN -> [SKIP][10] +25 other tests skip
   [10]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/fi-ilk-650/igt@kms_pm_rpm@basic-pci-d3-state.html

  * igt@kms_psr@psr-primary-mmap-gtt:
    - fi-pnv-d510:        NOTRUN -> [SKIP][11] +31 other tests skip
   [11]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/fi-pnv-d510/igt@kms_psr@psr-primary-mmap-gtt.html
    - bat-adls-6:         NOTRUN -> [SKIP][12] ([i915#1072] / [i915#9732]) +3 other tests skip
   [12]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_psr@psr-primary-mmap-gtt.html

  * igt@kms_setmode@basic-clone-single-crtc:
    - bat-adls-6:         NOTRUN -> [SKIP][13] ([i915#3555])
   [13]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@kms_setmode@basic-clone-single-crtc.html

  * igt@prime_vgem@basic-fence-read:
    - bat-adls-6:         NOTRUN -> [SKIP][14] ([i915#3291]) +2 other tests skip
   [14]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adls-6/igt@prime_vgem@basic-fence-read.html

  
#### Possible fixes ####

  * igt@i915_selftest@live:
    - bat-adlp-11:        [DMESG-WARN][15] ([i915#16404]) -> [PASS][16] +1 other test pass
   [15]: https://intel-gfx-ci.01.org/tree/drm-tip/IGT_9022/bat-adlp-11/igt@i915_selftest@live.html
   [16]: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_15587/bat-adlp-11/igt@i915_selftest@live.html

  
  [i915#1072]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1072
  [i915#11190]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/11190
  [i915#15656]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15656
  [i915#16361]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16361
  [i915#16404]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16404
  [i915#1849]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/1849
  [i915#3291]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3291
  [i915#3555]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/3555
  [i915#4103]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4103
  [i915#4613]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/4613
  [i915#5354]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/5354
  [i915#7707]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/7707
  [i915#9732]: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/9732


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

  * CI: CI-20190529 -> None
  * IGT: IGT_9022 -> IGTPW_15587

  CI-20190529: 20190529
  CI_DRM_18885: 2c64192f1ad194a53800f6dd8c779d5b4bbc1831 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_15587: 10cb29f438d369add31f76dc029341b761b07882 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  IGT_9022: 9022

== Logs ==

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

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

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

end of thread, other threads:[~2026-07-23 14:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-23 13:43 [PATCH i-g-t v1 0/2] Add platform-specific joiner exception mode handling Sowmiya S
2026-07-23 13:43 ` [PATCH i-g-t v1 1/2] lib/igt_kms: " Sowmiya S
2026-07-23 13:43 ` [PATCH i-g-t v1 2/2] lib/igt_kms: Skip joiner exception modes in boundary non-joiner search Sowmiya S
2026-07-23 14:49 ` ✓ Xe.CI.BAT: success for Add platform-specific joiner exception mode handling Patchwork
2026-07-23 14:51 ` ✓ i915.CI.BAT: " Patchwork

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