From: Yongxing Mou <yongxing.mou@oss.qualcomm.com>
To: sashiko-reviews@lists.linux.dev
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v7 13/15] drm/msm/dp: make bridge helpers use dp_display to allow re-use
Date: Fri, 17 Jul 2026 11:08:41 +0800 [thread overview]
Message-ID: <d3c1909e-6ae6-459d-8bf5-8e8c5aff4ce7@oss.qualcomm.com> (raw)
In-Reply-To: <20260609100904.452091F00893@smtp.kernel.org>
On 6/9/2026 6:09 PM, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 3 potential issue(s) to consider:
>
> New issues:
> - [High] Hardcoded base encoder in `msm_dp_display_atomic_enable` breaks MST reuse
> - [Low] Kernel-doc mismatch for `msm_dp_display_mode_valid`
>
> Pre-existing issues:
> - [High] `msm_dp_display_mode_valid` ignores the `info` parameter, validating against the wrong sink in MST
> --
>
> commit 79702b8fc2a6d1a516b0d64051edab10a8d7764e
> Author: Abhinav Kumar <quic_abhinavk@quicinc.com>
> Subject: drm/msm/dp: make bridge helpers use dp_display to allow re-use
>
> This commit modifies the DP bridge helpers to directly take the dp_display
> object rather than a drm_bridge pointer. This refactoring is intended to
> allow the MST bridge to reuse the same helpers.
>
>> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
>> index f1970e6dd7e46..cdb7dd4cd7cbd 100644
>> --- a/drivers/gpu/drm/msm/dp/dp_display.c
>> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
>> @@ -738,24 +738,21 @@ static int msm_dp_display_disable(struct msm_dp_display_private *dp)
>>
>> /**
>> * msm_dp_bridge_mode_valid - callback to determine if specified mode is valid
>> - * @bridge: Pointer to drm bridge structure
>> + * @dp: Pointer to dp display structure
>> * @info: display info
>> * @mode: Pointer to drm mode structure
>> * Returns: Validity status for specified mode
>> */
>
> [Severity: Low]
> This isn't a bug, but there is a mismatch in the documentation. The
> kernel-doc still refers to the old function name msm_dp_bridge_mode_valid,
> while the function was renamed to msm_dp_display_mode_valid.
>
Will update it.
>> -enum drm_mode_status msm_dp_bridge_mode_valid(struct drm_bridge *bridge,
>> - const struct drm_display_info *info,
>> - const struct drm_display_mode *mode)
>> +enum drm_mode_status msm_dp_display_mode_valid(struct msm_dp *dp,
>> + const struct drm_display_info *info,
>> + const struct drm_display_mode *mode)
>
> [Severity: High]
> This is a pre-existing issue, but since these helpers are being exposed for
> MST bridge reuse, does it cause problems that the info parameter is ignored?
>
> Inside msm_dp_display_mode_valid(), the code checks capabilities against
> dp->connector->display_info instead of using the provided info parameter:
>
> if ((drm_mode_is_420_only(&dp->connector->display_info, mode) &&
> msm_dp_display->panel->vsc_sdp_supported) ||
> msm_dp_wide_bus_available(dp))
> mode_pclk_khz /= 2;
>
> If this is used for an MST stream, won't this validate the mode against the
> main DP connector's capabilities rather than the specific MST sink's
> capabilities?
>
When MST call it , will pass corresponding *info.
> [ ... ]
>
>> @@ -1406,11 +1403,9 @@ int msm_dp_modeset_init(struct msm_dp *msm_dp_display, struct drm_device *dev,
>> return 0;
>> }
>>
>> -void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
>> - struct drm_atomic_commit *state)
>> +void msm_dp_display_atomic_enable(struct msm_dp *msm_dp_display,
>> + struct drm_atomic_commit *state)
>> {
>> - struct msm_dp_bridge *msm_dp_bridge = to_dp_bridge(drm_bridge);
>> - struct msm_dp *msm_dp_display = msm_dp_bridge->msm_dp_display;
>> struct drm_crtc *crtc;
>> struct drm_crtc_state *crtc_state;
>> int rc = 0;
>> @@ -1419,7 +1414,7 @@ void msm_dp_bridge_atomic_enable(struct drm_bridge *drm_bridge,
>> dp = container_of(msm_dp_display, struct msm_dp_display_private, msm_dp_display);
>>
>> crtc = drm_atomic_get_new_crtc_for_encoder(state,
>> - drm_bridge->encoder);
>> + msm_dp_display->bridge->encoder);
>
> [Severity: High]
> Will this hardcoded encoder lookup break MST support?
>
> In an MST topology, each stream operates through its own distinct virtual
> drm_bridge and drm_encoder. By hardcoding msm_dp_display->bridge->encoder
> here, the primary DP encoder is used instead of the encoder for the specific
> bridge being updated.
>
> If the primary encoder isn't participating in the MST stream's atomic commit,
> won't drm_atomic_get_new_crtc_for_encoder() return NULL and cause the
> helper to bail out silently without programming the mode?
>
We will further refactor this in a follow-up patch series so that MST
can use the corresponding APIs.
>> if (!crtc)
>> return;
>> crtc_state = drm_atomic_get_new_crtc_state(state, crtc);
>
next prev parent reply other threads:[~2026-07-17 3:08 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-09 9:46 [PATCH v7 00/15] drm/msm/dp: Prerequisite cleanup for upcoming MST support Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 01/15] drm/msm/dp: remove cached drm_edid from panel Yongxing Mou
2026-06-09 10:04 ` sashiko-bot
2026-06-09 9:46 ` [PATCH v7 02/15] drm/msm/dp: drop deprecated .mode_set() and use .atomic_enable Yongxing Mou
2026-06-09 10:06 ` sashiko-bot
2026-07-17 2:40 ` Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 03/15] drm/msm/dp: move mode setup into msm_dp_panel_init_panel_info() Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 04/15] drm/msm/dp: split msm_dp_ctrl_config_ctrl() into link parts and stream parts Yongxing Mou
2026-06-09 10:04 ` sashiko-bot
2026-07-17 2:41 ` Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 05/15] drm/msm/dp: extract MISC1_MISC0 configuration into a separate function Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 06/15] drm/msm/dp: split link setup from source params Yongxing Mou
2026-06-09 10:05 ` sashiko-bot
2026-06-09 9:46 ` [PATCH v7 07/15] drm/msm/dp: move the pixel clock control to its own API Yongxing Mou
2026-06-09 10:04 ` sashiko-bot
2026-07-17 2:41 ` Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 08/15] drm/msm/dp: break up dp_display_enable into two parts Yongxing Mou
2026-06-09 9:59 ` sashiko-bot
2026-07-17 2:41 ` Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 09/15] drm/msm/dp: re-arrange dp_display_disable() into functional parts Yongxing Mou
2026-06-09 10:17 ` sashiko-bot
2026-06-09 9:46 ` [PATCH v7 10/15] drm/msm/dp: allow dp_ctrl stream APIs to use any panel passed to it Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 11/15] drm/msm/dp: split dp_ctrl_off() into stream and link parts Yongxing Mou
2026-06-09 10:04 ` sashiko-bot
2026-06-09 9:46 ` [PATCH v7 12/15] drm/msm/dp: simplify link and clock disable sequence Yongxing Mou
2026-06-09 10:02 ` sashiko-bot
2026-07-17 2:41 ` Yongxing Mou
2026-06-09 9:46 ` [PATCH v7 13/15] drm/msm/dp: make bridge helpers use dp_display to allow re-use Yongxing Mou
2026-06-09 10:09 ` sashiko-bot
2026-07-17 3:08 ` Yongxing Mou [this message]
2026-06-09 9:46 ` [PATCH v7 14/15] drm/msm/dp: separate dp_display_prepare() into its own API Yongxing Mou
2026-06-09 10:10 ` sashiko-bot
2026-06-09 9:46 ` [PATCH v7 15/15] drm/msm/dp: pass panel to display enable/disable helpers Yongxing Mou
2026-06-09 10:13 ` sashiko-bot
2026-07-17 3:28 ` Yongxing Mou
2026-06-24 3:16 ` [PATCH v7 00/15] drm/msm/dp: Prerequisite cleanup for upcoming MST support Yongxing Mou
2026-07-12 23:52 ` Dmitry Baryshkov
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=d3c1909e-6ae6-459d-8bf5-8e8c5aff4ce7@oss.qualcomm.com \
--to=yongxing.mou@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=sashiko-reviews@lists.linux.dev \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox