Intel-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/i915/panel: Only consider seamless DRRS modes as the highest mode
@ 2026-09-14  8:55 Fred Gao
  2026-09-14 15:16 ` ✗ i915.CI.BAT: failure for " Patchwork
  0 siblings, 1 reply; 5+ messages in thread
From: Fred Gao @ 2026-09-14  8:55 UTC (permalink / raw)
  To: intel-gfx
  Cc: intel-xe, dri-devel, linux-kernel, jani.nikula, rodrigo.vivi,
	joonas.lahtinen, tursulin, ville.syrjala, Fred Gao, stable,
	Chenchen Wang

intel_dp_mode_clock() uses intel_panel_highest_mode() when seamless M/N
updates are supported, so that the link configuration can accommodate
every refresh rate DRRS may seamlessly switch to.

However, the fixed mode list is populated using is_alt_fixed_mode(),
which only requires a matching active size and non-sync flags. Whether a
mode can actually be reached with a seamless M/N update is decided by
intel_panel_downclock_mode() using is_alt_drrs_mode(), which requires
matching timings and flags. intel_panel_highest_mode() used neither and
simply picked the highest clock in the list. A mode reachable only with a
full modeset could therefore inflate the reserved bandwidth and
needlessly reduce the selected bpp.

On a 5120x2160 eDP panel the DisplayID preferred mode uses 717260 kHz,
while a CTA mode with different blanking uses 742500 kHz. With HBR2 x4,
2160000 kB/s is available. The preferred mode fits at 24 bpp:

  717260 * 24 / 8 = 2151780 kB/s

but the CTA mode does not:

  742500 * 24 / 8 = 2227500 kB/s

Selecting the CTA clock therefore reduces the link configuration to 18
bpp. The firmware state is 24 bpp, so the mismatch forces a full modeset
and an eDP backlight and panel power cycle during driver takeover.

Use is_alt_drrs_mode() so intel_panel_highest_mode() considers the same
set of modes as intel_panel_downclock_mode(). Bandwidth is still reserved
for genuine seamless DRRS alternatives, including when userspace selects
the downclock mode as the active mode, while modes that require a full
modeset no longer affect the result. If no fixed mode is compatible, the
helper continues to return the adjusted mode.

Fixes: e6f29923c048 ("drm/i915: Allow M/N change during fastset on bdw+")
Cc: <stable@vger.kernel.org>
Signed-off-by: Fred Gao <fred.gao@intel.com>
Reviewed-by: Chenchen Wang <chenchen.wang@intel.com>
---
 drivers/gpu/drm/i915/display/intel_panel.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/intel_panel.c b/drivers/gpu/drm/i915/display/intel_panel.c
index 81e638d0c7b3..343bd8439566 100644
--- a/drivers/gpu/drm/i915/display/intel_panel.c
+++ b/drivers/gpu/drm/i915/display/intel_panel.c
@@ -192,7 +192,8 @@ intel_panel_highest_mode(struct intel_connector *connector,
 
-	/* pick the fixed_mode that has the highest clock */
+	/* pick the highest clock we can seamlessly switch to */
 	list_for_each_entry(fixed_mode, &connector->panel.fixed_modes, head) {
-		if (fixed_mode->clock > best_mode->clock)
+		if (is_alt_drrs_mode(fixed_mode, adjusted_mode) &&
+		    fixed_mode->clock > best_mode->clock)
 			best_mode = fixed_mode;
 	}
 
-- 
2.43.0

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

* ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless DRRS modes as the highest mode
  2026-09-14  8:55 [PATCH] drm/i915/panel: Only consider seamless DRRS modes as the highest mode Fred Gao
@ 2026-09-14 15:16 ` Patchwork
  2026-09-15  5:56   ` Gao, Fred
  0 siblings, 1 reply; 5+ messages in thread
From: Patchwork @ 2026-09-14 15:16 UTC (permalink / raw)
  To: Fred Gao; +Cc: intel-gfx

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

== Series Details ==

Series: drm/i915/panel: Only consider seamless DRRS modes as the highest mode
URL   : https://patchwork.freedesktop.org/series/174025/
State : failure

== Summary ==

CI Bug Log - changes from CI_DRM_19141 -> Patchwork_174025v1
====================================================

Summary
-------

  **FAILURE**

  Serious unknown changes coming with Patchwork_174025v1 absolutely need to be
  verified manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in Patchwork_174025v1, 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/Patchwork_174025v1/index.html

Participating hosts (39 -> 37)
------------------------------

  Missing    (2): bat-dg2-13 bat-adls-6 

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

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

### IGT changes ###

#### Possible regressions ####

  * igt@i915_selftest@live@guc_hang:
    - bat-arlh-2:         [PASS][1] -> [INCOMPLETE][2]
   [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live@guc_hang.html
   [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live@guc_hang.html

  * igt@kms_frontbuffer_tracking@basic:
    - fi-skl-6600u:       [PASS][3] -> [DMESG-WARN][4]
   [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html
   [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html

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

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

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live:
    - bat-arlh-2:         [PASS][5] -> [INCOMPLETE][6] ([i915#16547])
   [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live.html
   [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live.html

  
#### Possible fixes ####

  * igt@i915_selftest@live@gt_heartbeat:
    - bat-apl-1:          [ABORT][7] -> [PASS][8] +1 other test pass
   [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-apl-1/igt@i915_selftest@live@gt_heartbeat.html
   [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-apl-1/igt@i915_selftest@live@gt_heartbeat.html

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


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

  * Linux: CI_DRM_19141 -> Patchwork_174025v1

  CI-20190529: 20190529
  CI_DRM_19141: 4f03eb1cbe37cc93b33d654828cf49b58d9e2bdc @ git://anongit.freedesktop.org/gfx-ci/linux
  IGT_9093: 932327f15c92ecb52266ced8c0fbe72931a75880 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
  Patchwork_174025v1: 4f03eb1cbe37cc93b33d654828cf49b58d9e2bdc @ git://anongit.freedesktop.org/gfx-ci/linux

== Logs ==

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

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

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

* RE: ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless DRRS modes as the highest mode
  2026-09-14 15:16 ` ✗ i915.CI.BAT: failure for " Patchwork
@ 2026-09-15  5:56   ` Gao, Fred
  2026-09-15  8:53     ` Jani Nikula
  0 siblings, 1 reply; 5+ messages in thread
From: Gao, Fred @ 2026-09-15  5:56 UTC (permalink / raw)
  To: intel-gfx@lists.freedesktop.org,
	I915-ci-infra@lists.freedesktop.org
  Cc: Wang, Chenchen

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

Hi I915 CI infra team,
   The below 2 issues are not related to my display patch, pls double check

Possible regressions

  *   igt@i915_selftest@live@guc_hang:
     *   bat-arlh-2: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live@guc_hang.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live@guc_hang.html>
[Fred]
Putting the full picture together now:
Baseline (CI_DRM_19141)
Patched (Patchwork_174025v1)
hangcheck suite (deliberate hang/reset/reload cycles)
runs fine, same pattern
identical pattern, same timestamps
slpc suite → live_slpc_power
starts 470.2s, completes ~3.6s later, suite SUCCESS @477s
starts 468.0s, log dies mid-test @469.4s — no crash message, just stops
guc_hang
starts 487.1s, SUCCESS @493.7s
never reached — machine already unresponsive
eDP/display activity anywhere in the run
link never established (failed to retrieve link info, disabling eDP, pipe A enable: no throughout)
identical — link never established, pipe A enable: no throughout
fixed_modes/panel_highest/is_alt_drrs (the patch's code)
0 occurrences
0 occurrences
So, direct answer: no display-related change is exercised anywhere in this dmesg, in either tree. The eDP connector fails to link on this bench rig in both baseline and patched runs, so intel_panel_highest_mode()/is_alt_drrs_mode() never execute — the patch's code is dead code for this entire test. The actual divergence is a hard hang in intel_slpc_live_selftests/live_slpc_power, a GuC frequency/power-governor selftest with zero relation to display/DRRS. Since the patch touches only display panel-mode selection and that path is never reached, guc_hang's INCOMPLETE status is unrelated to this patch — it's a GuC/SLPC-side hang (likely bat-arlh-2 hardware/firmware flakiness) that happens to occur before the guc_hang subtest is even scheduled to run.


  *   igt@kms_frontbuffer_tracking@basic:
     *   fi-skl-6600u: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html> -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html>


[Fred]  dmesg log<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/dmesg0.txt> &  PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live@guc_hang.html> VS INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live@guc_hang.html> log shows:

  *   Direct A/B comparison of the two dmesg logs, same machine, same test:
Baseline (CI_DRM_19141)
Patched (Patchwork_174025v1)
pixel clock
373250 kHz
373250 kHz
port_clock / lane count
540000, 4x
540000, 4x
max pipe_bpp / link_bpp
24 (min link_bpp 18.0, max 24.0)
24
subtest result
SUCCESS, ret=0
SUCCESS
"Atomic update failure" occurrences (whole boot)
0
1

  *   The link configuration — pixel clock, bpp, M/N values — is byte-identical between the pre-patch and post-patch runs. That's the direct proof the patch changed nothing on this machine: intel_panel_highest_mode() picked the same 373250 kHz fixed mode either way.
  *   That tracks with the panel's fixed-mode list from the display-info dump:
  *   "3200x1800": 60 373250 3200 3248 3280 3360 1800 1803 1808 1852 0x48 0xa
  *   "3200x1800": 48 298600 3200 3248 3280 3360 1800 1803 1808 1852 0x40 0xa
Both entries share identical blanking (3200 3248 3280 3360 1800 1803 1808 1852) — this is a genuine high/low-refresh DRRS pair, not the "alternate CTA mode with different blanking" case the patch's is_alt_drrs_mode() filter is designed to exclude. So the filter is a no-op here regardless of its exact matching semantics: the two candidate modes were never in conflict on this panel, and 373250 (the higher clock) wins the max-clock comparison with or without the new condition.



From: Patchwork <patchwork@emeril.freedesktop.org>
Sent: Monday, September 14, 2026 11:17 PM
To: Gao, Fred <fred.gao@intel.com>
Cc: intel-gfx@lists.freedesktop.org
Subject: ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless DRRS modes as the highest mode

Patch Details
Series:
drm/i915/panel: Only consider seamless DRRS modes as the highest mode
URL:
https://patchwork.freedesktop.org/series/174025/
State:
failure
Details:
https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/index.html
CI Bug Log - changes from CI_DRM_19141 -> Patchwork_174025v1
Summary

FAILURE

Serious unknown changes coming with Patchwork_174025v1 absolutely need to be
verified manually.

If you think the reported changes have nothing to do with the changes
introduced in Patchwork_174025v1, please notify your bug team (I915-ci-infra@lists.freedesktop.org<mailto: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/Patchwork_174025v1/index.html

Participating hosts (39 -> 37)

Missing (2): bat-dg2-13 bat-adls-6

Possible new issues

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

IGT changes
Possible regressions

  *   igt@i915_selftest@live@guc_hang:

     *   bat-arlh-2: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live@guc_hang.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live@guc_hang.html>

  *   igt@kms_frontbuffer_tracking@basic:

     *   fi-skl-6600u: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html> -> DMESG-WARN<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html>

Known issues

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

IGT changes
Issues hit

  *   igt@i915_selftest@live:

     *   bat-arlh-2: PASS<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-arlh-2/igt@i915_selftest@live.html> -> INCOMPLETE<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live.html> (i915#16547<https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/16547>)

Possible fixes

  *   igt@i915_selftest@live@gt_heartbeat:

     *   bat-apl-1: ABORT<https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_19141/bat-apl-1/igt@i915_selftest@live@gt_heartbeat.html> -> PASS<https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-apl-1/igt@i915_selftest@live@gt_heartbeat.html> +1 other test pass

Build changes

  *   Linux: CI_DRM_19141 -> Patchwork_174025v1

CI-20190529: 20190529
CI_DRM_19141: 4f03eb1cbe37cc93b33d654828cf49b58d9e2bdc @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_9093: 932327f15c92ecb52266ced8c0fbe72931a75880 @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_174025v1: 4f03eb1cbe37cc93b33d654828cf49b58d9e2bdc @ git://anongit.freedesktop.org/gfx-ci/linux

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

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

* RE: ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless DRRS modes as the highest mode
  2026-09-15  5:56   ` Gao, Fred
@ 2026-09-15  8:53     ` Jani Nikula
  2026-09-17  1:49       ` Gao, Fred
  0 siblings, 1 reply; 5+ messages in thread
From: Jani Nikula @ 2026-09-15  8:53 UTC (permalink / raw)
  To: Gao, Fred, intel-gfx@lists.freedesktop.org,
	I915-ci-infra@lists.freedesktop.org
  Cc: Wang, Chenchen

On Tue, 15 Sep 2026, "Gao, Fred" <fred.gao@intel.com> wrote:
> Hi I915 CI infra team,
>    The below 2 issues are not related to my display patch, pls double check

Please use plain text and proper quoting when interacting on the public
mailing list.

BR,
Jani.


-- 
Jani Nikula, Intel

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

* RE: ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless DRRS modes as the highest mode
  2026-09-15  8:53     ` Jani Nikula
@ 2026-09-17  1:49       ` Gao, Fred
  0 siblings, 0 replies; 5+ messages in thread
From: Gao, Fred @ 2026-09-17  1:49 UTC (permalink / raw)
  To: Jani Nikula, intel-gfx@lists.freedesktop.org,
	I915-ci-infra@lists.freedesktop.org
  Cc: Wang, Chenchen

Thanks Jani for the reminder.

Hi I915 CI infra team,	

The two reported regressions are unrelated to this display patch. Detailed
analysis for each failure is provided below.

> Possible regressions
>
> * igt@i915_selftest@live@guc_hang:
>   * bat-arlh-2: PASS -> INCOMPLETE
>     https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/bat-arlh-2/igt@i915_selftest@live@guc_hang.html

Looking at the execution logs between baseline (CI_DRM_19141) and patched
(Patchwork_174025v1):

Test Suite / Event          Baseline (CI_DRM_19141)  Patched (Patchwork_174025v1)
--------------------------        -----------------------         ----------------------------
hangcheck suite           SUCCESS (identical)       SUCCESS (identical)
live_slpc_power           Starts 470.2s, PASS        Starts 468.0s, hard hang @469.4s
guc_hang                Starts 487.1s, PASS        Never reached (rig hung)
eDP link status            Link failed (pipe A off)     Link failed (pipe A off)
is_alt_drrs / panel_highest  0 occurrences            0 occurrences

No display paths were exercised during this execution. The eDP link failed
to train on this test bench in both the baseline and patched runs, meaning
intel_panel_highest_mode() and is_alt_drrs_mode() were never invoked.

The failure was caused by a hard lockup inside intel_slpc_live_selftests
(live_slpc_power) at timestamp 469.4s, which is an unrelated GuC SLPC
frequency/governor selftest. The guc_hang subtest was never scheduled.
Please treat this as an environmental/GuC-side flake.

> * igt@kms_frontbuffer_tracking@basic:
>   * fi-skl-6600u: PASS -> DMESG-WARN
>     https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_174025v1/fi-skl-6600u/igt@kms_frontbuffer_tracking@basic.html

Direct comparison of the dmesg output between baseline and patched runs
shows identical mode programming:

Parameter               Baseline (CI_DRM_19141)   Patched (Patchwork_174025v1)
--------------------------        -----------------------          ----------------------------
Pixel Clock                373250 kHz              373250 kHz
Port Clock / Lanes          540000 kHz, 4x           540000 kHz, 4x
Max Pipe / Link BPP         24 bpp                  24 bpp
Subtest Return Code        SUCCESS (ret=0)          SUCCESS (ret=0)
Atomic update failures       0                      1 (dmesg-warn)

The link parameters and timing registers selected by intel_panel_highest_mode()
are identical across both runs.

The panel exposes the following fixed modes:
  "3200x1800": 60 373250 3200 3248 3280 3360 1800 1803 1808 1852 0x48 0xa
  "3200x1800": 48 298600 3200 3248 3280 3360 1800 1803 1808 1852 0x40 0xa

Both modes share identical blanking timings (3200 3248 3280 3360 1800 1803
1808 1852). This is a standard high/low refresh DRRS pair rather than an
alternate CTA mode with different blanking. Consequently, is_alt_drrs_mode()
is a no-op here, and 373250 kHz is selected in both trees.

The subtest completed with return code 0; the DMESG-WARN was triggered by an
isolated atomic update timing glitch unrelated to panel mode selection.

Thanks,
Fred
> -----Original Message-----
> From: Jani Nikula <jani.nikula@linux.intel.com>
> Sent: Tuesday, September 15, 2026 4:54 PM
> To: Gao, Fred <fred.gao@intel.com>; intel-gfx@lists.freedesktop.org;
> I915-ci-infra@lists.freedesktop.org
> Cc: Wang, Chenchen <chenchen.wang@intel.com>
> Subject: RE: ✗ i915.CI.BAT: failure for drm/i915/panel: Only consider seamless
> DRRS modes as the highest mode
> 
> On Tue, 15 Sep 2026, "Gao, Fred" <fred.gao@intel.com> wrote:
> > Hi I915 CI infra team,
> >    The below 2 issues are not related to my display patch, pls double
> > check
> 
> Please use plain text and proper quoting when interacting on the public mailing
> list.
> 
> BR,
> Jani.
> 
> 
> --
> Jani Nikula, Intel

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

end of thread, other threads:[~2026-09-17  1:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-14  8:55 [PATCH] drm/i915/panel: Only consider seamless DRRS modes as the highest mode Fred Gao
2026-09-14 15:16 ` ✗ i915.CI.BAT: failure for " Patchwork
2026-09-15  5:56   ` Gao, Fred
2026-09-15  8:53     ` Jani Nikula
2026-09-17  1:49       ` Gao, Fred

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