All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Yongxing Mou" <yongxing.mou@oss.qualcomm.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v9 02/14] drm/msm/dp: drop deprecated .mode_set() and use .atomic_pre_enable
Date: Tue, 28 Jul 2026 10:34:32 +0000	[thread overview]
Message-ID: <20260728103433.7279F1F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260728-dp_mstclean-v9-2-f7779fce10f4@oss.qualcomm.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:

Pre-existing issues:
- [High] msm_dp_bridge_mode_valid() evaluates wide bus availability using the previously committed mode's YUV420 state rather than the state of the mode being validated. This causes valid high-bandwidth RGB modes to be incorrectly rejected if a YUV420 mode was previously committed.
--

--- Patch [2]: [PATCH v9 02/14] drm/msm/dp: drop deprecated .mode_set() and use .atomic_pre_enable ---
commit 9ae2d320a8d0fa2507140b418f1dff372f81454c
Author: Yongxing Mou <yongxing.mou@oss.qualcomm.com>

drm/msm/dp: drop deprecated .mode_set() and use .atomic_pre_enable
    
The bridge .mode_set() callback is deprecated. Remove it and move the
mode setup logic to .atomic_pre_enable(), where the adjusted_mode is
available from the atomic CRTC state. Drop msm_dp_mode from
msm_dp_display_private and store the mode directly in the panel.

> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index bce165bac106b..c106aabda588e 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
[ ... ]
> @@ -1309,7 +1325,7 @@ bool msm_dp_wide_bus_available(const struct msm_dp *msm_dp_display)
>  
>  	dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display);
>  
> -	if (dp->msm_dp_mode.out_fmt_is_yuv_420)
> +	if (dp->panel->msm_dp_mode.out_fmt_is_yuv_420)

[Severity: High]
This is a pre-existing issue, but does evaluating wide bus availability using
the previously committed mode's YUV420 state cause valid high-bandwidth RGB
modes to be incorrectly rejected?

When a user sets a YUV420 mode, out_fmt_is_yuv_420 is set to true during
atomic_pre_enable. If the driver later probes or validates modes from EDID,
msm_dp_bridge_mode_valid() calls msm_dp_wide_bus_available():

msm_dp_bridge_mode_valid()
    if (msm_dp_wide_bus_available(dp))
        mode_pclk_khz /= 2;

This function then reads the stale out_fmt_is_yuv_420 flag and returns false.
Consequently, the pixel clock for high-bandwidth RGB modes is not halved,
causing them to exceed the maximum pixel clock and be rejected.

While this patch addresses a similar state leak for the DPU encoder by moving
the mode state update to atomic_pre_enable, it seems mode validation (which
runs before atomic_pre_enable) still relies on this stale state.

>  		return false;
>  
>  	return dp->wide_bus_supported;

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260728-dp_mstclean-v9-0-f7779fce10f4@oss.qualcomm.com?part=2

  reply	other threads:[~2026-07-28 10:34 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-28 10:21 [PATCH v9 00/14] drm/msm/dp: Prerequisite cleanup for upcoming MST support Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 01/14] drm/msm/dp: remove cached drm_edid from panel Yongxing Mou
2026-07-28 10:37   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 02/14] drm/msm/dp: drop deprecated .mode_set() and use .atomic_pre_enable Yongxing Mou
2026-07-28 10:34   ` sashiko-bot [this message]
2026-07-28 10:21 ` [PATCH v9 03/14] drm/msm/dp: move mode setup into msm_dp_panel_init_panel_info() Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 04/14] drm/msm/dp: split msm_dp_ctrl_config_ctrl() into link parts and stream parts Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 05/14] drm/msm/dp: extract MISC1_MISC0 configuration into a separate function Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 06/14] drm/msm/dp: split link setup from source params Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 07/14] drm/msm/dp: move the pixel clock control to its own API Yongxing Mou
2026-07-28 10:35   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 08/14] drm/msm/dp: break up dp_display_enable into two parts Yongxing Mou
2026-07-28 10:34   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 09/14] drm/msm/dp: re-arrange dp_display_disable() into functional parts Yongxing Mou
2026-07-28 10:39   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 10/14] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 11/14] drm/msm/dp: split dp_ctrl_off() into stream and link parts Yongxing Mou
2026-07-28 10:21 ` [PATCH v9 12/14] drm/msm/dp: simplify link and clock disable sequence Yongxing Mou
2026-07-28 10:41   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 13/14] drm/msm/dp: make bridge helpers use dp_display to allow re-use Yongxing Mou
2026-07-28 10:38   ` sashiko-bot
2026-07-28 10:21 ` [PATCH v9 14/14] drm/msm/dp: pass panel to display enable/disable helpers Yongxing Mou

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260728103433.7279F1F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=yongxing.mou@oss.qualcomm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.