* [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