* [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
@ 2026-09-23 19:51 Xizhe Tang
2026-09-23 14:26 ` sashiko-bot
0 siblings, 1 reply; 6+ messages in thread
From: Xizhe Tang @ 2026-09-23 19:51 UTC (permalink / raw)
To: Jani Nikula, Rodrigo Vivi, Ankit Nautiyal
Cc: Xizhe Tang, Ville Syrjälä, intel-gfx, intel-xe,
dri-devel, stable
A Panther Lake eDP panel that advertises VRR in EDID but runs at a fixed
refresh rate has received an Adaptive-Sync SDP since commit 6a1712052859
("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async").
On this panel the first modeset at boot is vertically streaked.
intel_vrr_possible() is only crtc_state->vrr.flipline != 0. Fixed-refresh
timings program flipline too:
intel_vrr_compute_fixed_rr_timings():
/* For fixed rr, vmin = vmax = flipline */
crtc_state->vrr.flipline = crtc_state->vrr.vmin;
intel_vrr_compute_config() takes that path when VRR is not actually
enabled (uapi.vrr_enabled is false, or vmin == vmax). Then
intel_dp_needs_as_sdp() is true with `vrr: no, fixed rr: yes`, and
intel_dp_compute_as_sdp() programs DP_AS_SDP_AVT_FIXED_VTOTAL.
Gate the terminal condition on the states that consume the SDP:
crtc_state->vrr.enable (VRR) or crtc_state->cmrr.enable (CMRR / FAVT).
Leave the Panel Replay aux-less-ALPM early-return from the same commit
unchanged.
CMRR is still hard-disabled (is_cmrr_frac_required() has "|| true"), so
cmrr.enable stays false today and the OR is a no-op versus v1 at fixed
refresh. intel_vrr_compute_cmrr_timings() sets cmrr.enable without
vrr.enable; the OR keeps the FAVT branch reachable when CMRR is re-enabled.
This is a no-op while VRR is actually active. It does not fix Adaptive
Sync = Always corruption, nor the non-atomic SDP update named by the
#FIXME above intel_dp_compute_as_sdp(). Trailer is Link:, not Closes:.
Tested on LENOVO 21VG (PTL eDP, 8086:b080), v7.2.6-200.fc44.x86_64,
rebuilding only xe.ko with this hunk:
Adaptive Sync = Never (Tested-by): vrr: no, fixed rr: yes,
infoframes enabled: 0x6 (no BIT(3)), zero Adaptive-Sync SDP, panel
clean. This boot: six s2idle suspend/resume cycles, all clean.
Adaptive Sync = Always (not Tested-by): vrr: yes, vmin 2016 / vmax 8064,
infoframes enabled: 0xe, Adaptive-Sync SDP still sent. Panel
appearance on Always is not claimed.
CMRR / FAVT: not tested.
On the same panel, Adaptive Sync = Never, first modeset, drm.debug=0xe:
7.1.13 (clean): infoframes enabled: 0x4 (VSC only)
7.2.4 (streaked): infoframes enabled: 0xc (VSC + AS SDP,
operation mode 1 = DP_AS_SDP_AVT_FIXED_VTOTAL)
Later dumps of those boots are 0x6 vs 0xe; each non-zero bad mask is
good | BIT(3).
Changes in v2:
- OR crtc_state->cmrr.enable so CMRR still gets AS SDP (v1 review).
At fixed refresh v2 matches v1.
v1: https://lore.kernel.org/r/20260923052937.22817-1-xizheTang2005@163.com
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
Fixes: 6a1712052859 ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async")
Cc: stable@vger.kernel.org # 7.2.x
Signed-off-by: Xizhe Tang <xizheTang2005@163.com>
Tested-by: Xizhe Tang <xizheTang2005@163.com> # v7.2.6, PTL eDP, Adaptive Sync=Never
---
drivers/gpu/drm/i915/display/intel_dp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3115,8 +3115,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
!intel_psr_pr_async_video_timing_supported(intel_dp))
return true;
- return intel_vrr_possible(crtc_state);
+ return crtc_state->vrr.enable ||
+ crtc_state->cmrr.enable;
}
static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
--
2.47.0
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
2026-09-23 19:51 [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async Xizhe Tang
@ 2026-09-23 14:26 ` sashiko-bot
0 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-09-23 14:26 UTC (permalink / raw)
To: Xizhe Tang; +Cc: intel-xe, intel-gfx, dri-devel
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] drm/i915: missing vrr prefix for cmrr access in intel_dp_needs_as_sdp()
--
commit d1eecbeb3255f083df2a9a20caa676b6bc9c6e5e
Author: Xizhe Tang <xizheTang2005@163.com>
drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
This commit modifies the Adaptive-Sync SDP terminal condition to gate on VRR
or CMRR enablement. This change resolves vertically streaked visuals during
the first modeset at boot on fixed refresh rate eDP panels.
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3111,7 +3111,8 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
> !intel_psr_pr_async_video_timing_supported(intel_dp))
> return true;
>
> - return intel_vrr_possible(crtc_state);
> + return crtc_state->vrr.enable ||
> + crtc_state->cmrr.enable;
[Severity: Low]
Will this cause a build failure when compiling intel_dp.c?
Looking at the intel_crtc_state structure in intel_dp_needs_as_sdp(), cmrr is
nested inside the vrr substructure, not directly under crtc_state.
Should this be accessed as crtc_state->vrr.cmrr.enable instead, similar to
how it is safely accessed slightly later in intel_dp_compute_as_sdp()?
> }
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923195149.21329-1-xizheTang2005@163.com?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
@ 2026-09-23 19:51 Xizhe Tang
2026-09-23 12:34 ` Jani Nikula
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Xizhe Tang @ 2026-09-23 19:51 UTC (permalink / raw)
To: Jani Nikula, Rodrigo Vivi, Ankit Nautiyal
Cc: Xizhe Tang, Ville Syrjälä, intel-gfx, intel-xe,
dri-devel, stable
A Panther Lake eDP panel that advertises VRR in EDID but runs at a fixed
refresh rate has received an Adaptive-Sync SDP since commit 6a1712052859
("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async").
On this panel the first modeset at boot is vertically streaked.
intel_vrr_possible() is only crtc_state->vrr.flipline != 0. Fixed-refresh
timings program flipline too:
intel_vrr_compute_fixed_rr_timings():
/* For fixed rr, vmin = vmax = flipline */
crtc_state->vrr.flipline = crtc_state->vrr.vmin;
intel_vrr_compute_config() takes that path when VRR is not actually
enabled (uapi.vrr_enabled is false, or vmin == vmax). Then
intel_dp_needs_as_sdp() is true with `vrr: no, fixed rr: yes`, and
intel_dp_compute_as_sdp() programs DP_AS_SDP_AVT_FIXED_VTOTAL.
Gate the terminal condition on the states that consume the SDP:
crtc_state->vrr.enable (VRR) or crtc_state->cmrr.enable (CMRR / FAVT).
Leave the Panel Replay aux-less-ALPM early-return from the same commit
unchanged.
CMRR is still hard-disabled (is_cmrr_frac_required() has "|| true"), so
cmrr.enable stays false today and the OR is a no-op versus v1 at fixed
refresh. intel_vrr_compute_cmrr_timings() sets cmrr.enable without
vrr.enable; the OR keeps the FAVT branch reachable when CMRR is re-enabled.
This is a no-op while VRR is actually active. It does not fix Adaptive
Sync = Always corruption, nor the non-atomic SDP update named by the
#FIXME above intel_dp_compute_as_sdp(). Trailer is Link:, not Closes:.
Tested on LENOVO 21VG (PTL eDP, 8086:b080), v7.2.6-200.fc44.x86_64,
rebuilding only xe.ko with this hunk:
Adaptive Sync = Never (Tested-by): vrr: no, fixed rr: yes,
infoframes enabled: 0x6 (no BIT(3)), zero Adaptive-Sync SDP, panel
clean. This boot: six s2idle suspend/resume cycles, all clean.
Adaptive Sync = Always (not Tested-by): vrr: yes, vmin 2016 / vmax 8064,
infoframes enabled: 0xe, Adaptive-Sync SDP still sent. Panel
appearance on Always is not claimed.
CMRR / FAVT: not tested.
On the same panel, Adaptive Sync = Never, first modeset, drm.debug=0xe:
7.1.13 (clean): infoframes enabled: 0x4 (VSC only)
7.2.4 (streaked): infoframes enabled: 0xc (VSC + AS SDP,
operation mode 1 = DP_AS_SDP_AVT_FIXED_VTOTAL)
Later dumps of those boots are 0x6 vs 0xe; each non-zero bad mask is
good | BIT(3).
Changes in v2:
- OR crtc_state->cmrr.enable so CMRR still gets AS SDP (v1 review).
At fixed refresh v2 matches v1.
v1: https://lore.kernel.org/r/20260923052937.22817-1-xizheTang2005@163.com
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
Fixes: 6a1712052859 ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async")
Cc: stable@vger.kernel.org # 7.2.x
Signed-off-by: Xizhe Tang <xizheTang2005@163.com>
Tested-by: Xizhe Tang <xizheTang2005@163.com> # v7.2.6, PTL eDP, Adaptive Sync=Never
---
drivers/gpu/drm/i915/display/intel_dp.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
--- a/drivers/gpu/drm/i915/display/intel_dp.c
+++ b/drivers/gpu/drm/i915/display/intel_dp.c
@@ -3115,8 +3115,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
!intel_psr_pr_async_video_timing_supported(intel_dp))
return true;
- return intel_vrr_possible(crtc_state);
+ return crtc_state->vrr.enable ||
+ crtc_state->cmrr.enable;
}
static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
--
2.47.0
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
2026-09-23 19:51 Xizhe Tang
@ 2026-09-23 12:34 ` Jani Nikula
2026-09-23 14:27 ` sashiko-bot
2026-09-23 14:31 ` Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2026-09-23 12:34 UTC (permalink / raw)
To: Xizhe Tang, Rodrigo Vivi, Ankit Nautiyal
Cc: Xizhe Tang, Ville Syrjälä, intel-gfx, intel-xe,
dri-devel, stable
On Thu, 24 Sep 2026, Xizhe Tang <xizheTang2005@163.com> wrote:
> A Panther Lake eDP panel that advertises VRR in EDID but runs at a fixed
> refresh rate has received an Adaptive-Sync SDP since commit 6a1712052859
> ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async").
> On this panel the first modeset at boot is vertically streaked.
>
> intel_vrr_possible() is only crtc_state->vrr.flipline != 0. Fixed-refresh
> timings program flipline too:
>
> intel_vrr_compute_fixed_rr_timings():
> /* For fixed rr, vmin = vmax = flipline */
> crtc_state->vrr.flipline = crtc_state->vrr.vmin;
>
> intel_vrr_compute_config() takes that path when VRR is not actually
> enabled (uapi.vrr_enabled is false, or vmin == vmax). Then
> intel_dp_needs_as_sdp() is true with `vrr: no, fixed rr: yes`, and
> intel_dp_compute_as_sdp() programs DP_AS_SDP_AVT_FIXED_VTOTAL.
>
> Gate the terminal condition on the states that consume the SDP:
> crtc_state->vrr.enable (VRR) or crtc_state->cmrr.enable (CMRR / FAVT).
> Leave the Panel Replay aux-less-ALPM early-return from the same commit
> unchanged.
>
> CMRR is still hard-disabled (is_cmrr_frac_required() has "|| true"), so
> cmrr.enable stays false today and the OR is a no-op versus v1 at fixed
> refresh. intel_vrr_compute_cmrr_timings() sets cmrr.enable without
> vrr.enable; the OR keeps the FAVT branch reachable when CMRR is re-enabled.
>
> This is a no-op while VRR is actually active. It does not fix Adaptive
> Sync = Always corruption, nor the non-atomic SDP update named by the
> #FIXME above intel_dp_compute_as_sdp(). Trailer is Link:, not Closes:.
>
> Tested on LENOVO 21VG (PTL eDP, 8086:b080), v7.2.6-200.fc44.x86_64,
> rebuilding only xe.ko with this hunk:
>
> Adaptive Sync = Never (Tested-by): vrr: no, fixed rr: yes,
> infoframes enabled: 0x6 (no BIT(3)), zero Adaptive-Sync SDP, panel
> clean. This boot: six s2idle suspend/resume cycles, all clean.
>
> Adaptive Sync = Always (not Tested-by): vrr: yes, vmin 2016 / vmax 8064,
> infoframes enabled: 0xe, Adaptive-Sync SDP still sent. Panel
> appearance on Always is not claimed.
>
> CMRR / FAVT: not tested.
>
> On the same panel, Adaptive Sync = Never, first modeset, drm.debug=0xe:
>
> 7.1.13 (clean): infoframes enabled: 0x4 (VSC only)
> 7.2.4 (streaked): infoframes enabled: 0xc (VSC + AS SDP,
> operation mode 1 = DP_AS_SDP_AVT_FIXED_VTOTAL)
>
> Later dumps of those boots are 0x6 vs 0xe; each non-zero bad mask is
> good | BIT(3).
>
> Changes in v2:
> - OR crtc_state->cmrr.enable so CMRR still gets AS SDP (v1 review).
> At fixed refresh v2 matches v1.
> v1: https://lore.kernel.org/r/20260923052937.22817-1-xizheTang2005@163.com
I've received a bug report, patch v1, and four (!) copies of patch v2
within just hours.
Please have more patience.
The commit message appears to be a long-winded description of *what* the
code does, which is mostly uninteresting and frankly difficult to
understand, and lacks proper rationale of *why* the change is being made
and why it might help with the issue.
BR,
Jani.
>
> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
> Fixes: 6a1712052859 ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async")
> Cc: stable@vger.kernel.org # 7.2.x
> Signed-off-by: Xizhe Tang <xizheTang2005@163.com>
> Tested-by: Xizhe Tang <xizheTang2005@163.com> # v7.2.6, PTL eDP, Adaptive Sync=Never
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3115,8 +3115,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
> if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
> !intel_psr_pr_async_video_timing_supported(intel_dp))
> return true;
>
> - return intel_vrr_possible(crtc_state);
> + return crtc_state->vrr.enable ||
> + crtc_state->cmrr.enable;
> }
>
> static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
> --
> 2.47.0
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
2026-09-23 19:51 Xizhe Tang
2026-09-23 12:34 ` Jani Nikula
@ 2026-09-23 14:27 ` sashiko-bot
2026-09-23 14:31 ` Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: sashiko-bot @ 2026-09-23 14:27 UTC (permalink / raw)
To: Xizhe Tang; +Cc: intel-gfx, dri-devel, intel-xe
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Low] drm/i915: build failure due to missing vrr qualifier for cmrr
--
commit 040a3a223ae954dab43478f6da5edfc88f5ff693
Author: Xizhe Tang <xizheTang2005@163.com>
drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
This commit alters the condition for sending the Adaptive-Sync SDP by checking
explicitly for VRR or CMRR enablement in the CRTC state. This prevents vertical
streaking on eDP panels that advertise VRR but run at fixed refresh rates.
Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 0cd5e6b5034cf..612bc2846475b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3111,7 +3111,8 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
> !intel_psr_pr_async_video_timing_supported(intel_dp))
> return true;
>
> - return intel_vrr_possible(crtc_state);
> + return crtc_state->vrr.enable ||
> + crtc_state->cmrr.enable;
[Severity: Low]
Does this cause a compilation error in intel_dp_needs_as_sdp()?
Looking at the definition of intel_crtc_state in
drivers/gpu/drm/i915/display/intel_display_types.h, cmrr is nested inside vrr:
struct intel_crtc_state {
...
struct {
...
/* Content Match Refresh Rate state */
struct {
bool enable;
u64 cmrr_n, cmrr_m;
} cmrr;
} vrr;
...
};
Because cmrr is nested, accessing it directly via crtc_state->cmrr.enable will
fail to compile. Should this be accessed as crtc_state->vrr.cmrr.enable
instead, similar to how it is checked in intel_dp_compute_as_sdp() further
down in this same file?
--
Sashiko AI review · https://sashiko.dev/#/patchset/20260923195200.21362-1-xizheTang2005@163.com?part=1
^ permalink raw reply [flat|nested] 6+ messages in thread* Re: [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async
2026-09-23 19:51 Xizhe Tang
2026-09-23 12:34 ` Jani Nikula
2026-09-23 14:27 ` sashiko-bot
@ 2026-09-23 14:31 ` Ville Syrjälä
2 siblings, 0 replies; 6+ messages in thread
From: Ville Syrjälä @ 2026-09-23 14:31 UTC (permalink / raw)
To: Xizhe Tang
Cc: Jani Nikula, Rodrigo Vivi, Ankit Nautiyal, intel-gfx, intel-xe,
dri-devel, stable
On Thu, Sep 24, 2026 at 03:51:59AM +0800, Xizhe Tang wrote:
> A Panther Lake eDP panel that advertises VRR in EDID but runs at a fixed
> refresh rate has received an Adaptive-Sync SDP since commit 6a1712052859
> ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async").
> On this panel the first modeset at boot is vertically streaked.
>
> intel_vrr_possible() is only crtc_state->vrr.flipline != 0. Fixed-refresh
> timings program flipline too:
>
> intel_vrr_compute_fixed_rr_timings():
> /* For fixed rr, vmin = vmax = flipline */
> crtc_state->vrr.flipline = crtc_state->vrr.vmin;
>
> intel_vrr_compute_config() takes that path when VRR is not actually
> enabled (uapi.vrr_enabled is false, or vmin == vmax). Then
> intel_dp_needs_as_sdp() is true with `vrr: no, fixed rr: yes`, and
> intel_dp_compute_as_sdp() programs DP_AS_SDP_AVT_FIXED_VTOTAL.
>
> Gate the terminal condition on the states that consume the SDP:
> crtc_state->vrr.enable (VRR) or crtc_state->cmrr.enable (CMRR / FAVT).
> Leave the Panel Replay aux-less-ALPM early-return from the same commit
> unchanged.
>
> CMRR is still hard-disabled (is_cmrr_frac_required() has "|| true"), so
> cmrr.enable stays false today and the OR is a no-op versus v1 at fixed
> refresh. intel_vrr_compute_cmrr_timings() sets cmrr.enable without
> vrr.enable; the OR keeps the FAVT branch reachable when CMRR is re-enabled.
>
> This is a no-op while VRR is actually active. It does not fix Adaptive
> Sync = Always corruption, nor the non-atomic SDP update named by the
> #FIXME above intel_dp_compute_as_sdp(). Trailer is Link:, not Closes:.
>
> Tested on LENOVO 21VG (PTL eDP, 8086:b080), v7.2.6-200.fc44.x86_64,
> rebuilding only xe.ko with this hunk:
>
> Adaptive Sync = Never (Tested-by): vrr: no, fixed rr: yes,
> infoframes enabled: 0x6 (no BIT(3)), zero Adaptive-Sync SDP, panel
> clean. This boot: six s2idle suspend/resume cycles, all clean.
>
> Adaptive Sync = Always (not Tested-by): vrr: yes, vmin 2016 / vmax 8064,
> infoframes enabled: 0xe, Adaptive-Sync SDP still sent. Panel
> appearance on Always is not claimed.
>
> CMRR / FAVT: not tested.
>
> On the same panel, Adaptive Sync = Never, first modeset, drm.debug=0xe:
>
> 7.1.13 (clean): infoframes enabled: 0x4 (VSC only)
> 7.2.4 (streaked): infoframes enabled: 0xc (VSC + AS SDP,
> operation mode 1 = DP_AS_SDP_AVT_FIXED_VTOTAL)
>
> Later dumps of those boots are 0x6 vs 0xe; each non-zero bad mask is
> good | BIT(3).
>
> Changes in v2:
> - OR crtc_state->cmrr.enable so CMRR still gets AS SDP (v1 review).
> At fixed refresh v2 matches v1.
> v1: https://lore.kernel.org/r/20260923052937.22817-1-xizheTang2005@163.com
>
> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/work_items/9252
> Fixes: 6a1712052859 ("drm/i915/dp: Enable AS SDP whenever VRR is possible or PR !async")
> Cc: stable@vger.kernel.org # 7.2.x
> Signed-off-by: Xizhe Tang <xizheTang2005@163.com>
> Tested-by: Xizhe Tang <xizheTang2005@163.com> # v7.2.6, PTL eDP, Adaptive Sync=Never
> ---
> drivers/gpu/drm/i915/display/intel_dp.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -3115,8 +3115,9 @@ static bool intel_dp_needs_as_sdp(struct intel_dp *intel_dp,
> if (intel_psr_needs_alpm_aux_less(intel_dp, crtc_state) &&
> !intel_psr_pr_async_video_timing_supported(intel_dp))
> return true;
>
> - return intel_vrr_possible(crtc_state);
> + return crtc_state->vrr.enable ||
> + crtc_state->cmrr.enable;
The real problem is that intel_vrr_possible() no longer does what
it says on the tin. I think we have three different things
intel_vrr_possible() gets used for currently:
- intel_dp_needs_as_sdp() actually wants to know whether variable VRR
timings are possible or not, and it wants to know that without
actually looking at uapi.vrr_enabled in order to avoid changes to
the guardband when uapi.vrr_enabled changes
- _intel_psr_min_set_context_latency() might want to know whether we
could end up using the VRR timing generator or not. Not 100% sure
about this one though
- everything in intel_vrr.c just wants to know whether we should program
the VRR timing generator registers or not. These are the only places
where the current intel_vrr_possible() actually looks correct, albeit
with a bad function name
> }
>
> static void intel_dp_compute_as_sdp(struct intel_dp *intel_dp,
> --
> 2.47.0
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-09-25 7:31 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-23 19:51 [PATCH v2] drm/i915/dp: Only send AS SDP when VRR/CMRR is enabled or PR !async Xizhe Tang
2026-09-23 14:26 ` sashiko-bot
-- strict thread matches above, loose matches on Subject: below --
2026-09-23 19:51 Xizhe Tang
2026-09-23 12:34 ` Jani Nikula
2026-09-23 14:27 ` sashiko-bot
2026-09-23 14:31 ` Ville Syrjälä
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox