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