From: sashiko-bot@kernel.org
To: "Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>
Cc: dri-devel@lists.freedesktop.org, linux-usb@vger.kernel.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org
Subject: Re: [PATCH v6 9/9] usb: typec: ucsi: huawei-gaokun: pass down HPD_IRQ events
Date: Thu, 22 Oct 2026 13:41:53 +0000 [thread overview]
Message-ID: <sashiko-outbox-181561@kernel.org> (raw)
In-Reply-To: <20261022-hpd-irq-events-v6-9-337ea3ddaa62@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/msm/dp: missing closing brace in msm_dp_bridge_hpd_notify()
- [High] drm/msm/dp: msm_dp_hpd_plug_handle() skips HPD high processing after detect
--
commit 42034f570d120654d6aa4e06b9c582eb06cb2f5f
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drm/msm: dp: handle the IRQ_HPD events reported by USB-C
This commit updates msm_dp_bridge_hpd_notify() in the msm DisplayPort driver
to handle DRM_CONNECTOR_DP_IRQ_HPD events reported via out-of-band
notifications.
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index ce919a26fba28..6a8b3b8e1fe7f 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1566,11 +1566,13 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
> if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
> msm_dp_hpd_unplug_handle(dp);
> msm_dp_hpd_plug_handle(dp);
> - } else if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
> - msm_dp_irq_hpd_handle(dp);
> } else {
> msm_dp_hpd_plug_handle(dp);
> }
> +
> + if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
> + event == DRM_CONNECTOR_DP_IRQ_HPD) {
> + msm_dp_irq_hpd_handle(dp);
> } else {
> msm_dp_hpd_unplug_handle(dp);
> }
[Severity: High]
Is there a missing closing brace for the inner if statement in
msm_dp_bridge_hpd_notify() in drivers/gpu/drm/msm/dp/dp_display.c?
The opening brace after checking ISR_IRQ_HPD_PULSE_COUNT and
DRM_CONNECTOR_DP_IRQ_HPD is never closed before the else branch:
if (status == connector_status_connected) {
...
if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
event == DRM_CONNECTOR_DP_IRQ_HPD) {
msm_dp_irq_hpd_handle(dp);
} else {
msm_dp_hpd_unplug_handle(dp);
}
This leaves the outer if block unclosed, causing a build failure at the end
of drivers/gpu/drm/msm/dp/dp_display.c as well as pairing the
msm_dp_hpd_unplug_handle(dp) else branch with the inner check instead of
status == connector_status_connected.
commit 1182d7f2f2e876c63dd6756de1f85227702b93b4
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drm/msm/dp: don't take extra references on multiple plug events
This commit adds an early return in msm_dp_hpd_plug_handle() when
dp->plugged is already set so sequential plug events do not take extra
runtime power management references.
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index fa8942922b533..ce919a26fba28 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -412,6 +412,9 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp)
>
> guard(mutex)(&dp->plugged_lock);
>
> + if (dp->plugged)
> + return 0;
> +
> ret = pm_runtime_resume_and_get(&pdev->dev);
> if (ret) {
> DRM_ERROR("failed to pm_runtime_resume\n");
[Severity: High]
Will returning early when dp->plugged is true in msm_dp_hpd_plug_handle()
cause msm_dp_display_process_hpd_high() to be skipped after connector
detection?
During connector probing in
drivers/gpu/drm/display/drm_bridge_connector.c:drm_bridge_connector_detect_ctx(),
detect->funcs->detect() is called before drm_bridge_connector_hpd_notify():
if (detect) {
status = detect->funcs->detect(detect, connector);
...
drm_bridge_connector_hpd_notify(connector, status,
DRM_CONNECTOR_NO_EXTRA_STATUS);
}
When detect->funcs->detect() runs msm_dp_bridge_detect() in
drivers/gpu/drm/msm/dp/dp_display.c, it reads the receiver capabilities and
sets priv->plugged = true without calling msm_dp_display_process_hpd_high():
ret = drm_dp_read_desc(priv->aux, &desc, drm_dp_is_branch(dpcd));
if (ret) {
DRM_DEBUG_DP("failed to read desc\n");
priv->plugged = false;
goto end;
}
status = connector_status_connected;
priv->plugged = true;
When drm_bridge_connector_hpd_notify() -> msm_dp_bridge_hpd_notify() ->
msm_dp_hpd_plug_handle() then runs (or when a subsequent plug notification
arrives), dp->plugged is already true, so msm_dp_hpd_plug_handle() returns 0
immediately without calling msm_dp_display_process_hpd_high().
Without msm_dp_display_process_hpd_high(), drm_edid_connector_update() is
not called, dp->panel link parameters remain uninitialized, and
dp->link->sink_count stays 0, causing link preparation to fail with
-ENOTCONN.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-hpd-irq-events-v6-0-337ea3ddaa62@oss.qualcomm.com?part=9
WARNING: multiple messages have this Message-ID (diff)
From: sashiko-bot@kernel.org
To: "Dmitry Baryshkov" <dmitry.baryshkov@oss.qualcomm.com>
Cc: dri-devel@lists.freedesktop.org, linux-usb@vger.kernel.org,
intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
linux-amlogic@lists.infradead.org, neil.armstrong@linaro.org
Subject: Re: [PATCH v6 9/9] usb: typec: ucsi: huawei-gaokun: pass down HPD_IRQ events
Date: Thu, 22 Oct 2026 13:41:53 +0000 [thread overview]
Message-ID: <sashiko-outbox-181561@kernel.org> (raw)
In-Reply-To: <20261022-hpd-irq-events-v6-9-337ea3ddaa62@oss.qualcomm.com>
Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
- [High] drm/msm/dp: missing closing brace in msm_dp_bridge_hpd_notify()
- [High] drm/msm/dp: msm_dp_hpd_plug_handle() skips HPD high processing after detect
--
commit 42034f570d120654d6aa4e06b9c582eb06cb2f5f
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drm/msm: dp: handle the IRQ_HPD events reported by USB-C
This commit updates msm_dp_bridge_hpd_notify() in the msm DisplayPort driver
to handle DRM_CONNECTOR_DP_IRQ_HPD events reported via out-of-band
notifications.
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index ce919a26fba28..6a8b3b8e1fe7f 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -1566,11 +1566,13 @@ void msm_dp_bridge_hpd_notify(struct drm_bridge *bridge,
> if (hpd_link_status == ISR_HPD_REPLUG_COUNT) {
> msm_dp_hpd_unplug_handle(dp);
> msm_dp_hpd_plug_handle(dp);
> - } else if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT) {
> - msm_dp_irq_hpd_handle(dp);
> } else {
> msm_dp_hpd_plug_handle(dp);
> }
> +
> + if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
> + event == DRM_CONNECTOR_DP_IRQ_HPD) {
> + msm_dp_irq_hpd_handle(dp);
> } else {
> msm_dp_hpd_unplug_handle(dp);
> }
[Severity: High]
Is there a missing closing brace for the inner if statement in
msm_dp_bridge_hpd_notify() in drivers/gpu/drm/msm/dp/dp_display.c?
The opening brace after checking ISR_IRQ_HPD_PULSE_COUNT and
DRM_CONNECTOR_DP_IRQ_HPD is never closed before the else branch:
if (status == connector_status_connected) {
...
if (hpd_link_status == ISR_IRQ_HPD_PULSE_COUNT ||
event == DRM_CONNECTOR_DP_IRQ_HPD) {
msm_dp_irq_hpd_handle(dp);
} else {
msm_dp_hpd_unplug_handle(dp);
}
This leaves the outer if block unclosed, causing a build failure at the end
of drivers/gpu/drm/msm/dp/dp_display.c as well as pairing the
msm_dp_hpd_unplug_handle(dp) else branch with the inner check instead of
status == connector_status_connected.
commit 1182d7f2f2e876c63dd6756de1f85227702b93b4
Author: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
drm/msm/dp: don't take extra references on multiple plug events
This commit adds an early return in msm_dp_hpd_plug_handle() when
dp->plugged is already set so sequential plug events do not take extra
runtime power management references.
> diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c
> index fa8942922b533..ce919a26fba28 100644
> --- a/drivers/gpu/drm/msm/dp/dp_display.c
> +++ b/drivers/gpu/drm/msm/dp/dp_display.c
> @@ -412,6 +412,9 @@ static int msm_dp_hpd_plug_handle(struct msm_dp_display_private *dp)
>
> guard(mutex)(&dp->plugged_lock);
>
> + if (dp->plugged)
> + return 0;
> +
> ret = pm_runtime_resume_and_get(&pdev->dev);
> if (ret) {
> DRM_ERROR("failed to pm_runtime_resume\n");
[Severity: High]
Will returning early when dp->plugged is true in msm_dp_hpd_plug_handle()
cause msm_dp_display_process_hpd_high() to be skipped after connector
detection?
During connector probing in
drivers/gpu/drm/display/drm_bridge_connector.c:drm_bridge_connector_detect_ctx(),
detect->funcs->detect() is called before drm_bridge_connector_hpd_notify():
if (detect) {
status = detect->funcs->detect(detect, connector);
...
drm_bridge_connector_hpd_notify(connector, status,
DRM_CONNECTOR_NO_EXTRA_STATUS);
}
When detect->funcs->detect() runs msm_dp_bridge_detect() in
drivers/gpu/drm/msm/dp/dp_display.c, it reads the receiver capabilities and
sets priv->plugged = true without calling msm_dp_display_process_hpd_high():
ret = drm_dp_read_desc(priv->aux, &desc, drm_dp_is_branch(dpcd));
if (ret) {
DRM_DEBUG_DP("failed to read desc\n");
priv->plugged = false;
goto end;
}
status = connector_status_connected;
priv->plugged = true;
When drm_bridge_connector_hpd_notify() -> msm_dp_bridge_hpd_notify() ->
msm_dp_hpd_plug_handle() then runs (or when a subsequent plug notification
arrives), dp->plugged is already true, so msm_dp_hpd_plug_handle() returns 0
immediately without calling msm_dp_display_process_hpd_high().
Without msm_dp_display_process_hpd_high(), drm_edid_connector_update() is
not called, dp->panel link parameters remain uninitialized, and
dp->link->sink_count stays 0, causing link preparation to fail with
-ENOTCONN.
--
Sashiko AI review · https://sashiko.dev/#/patchset/20261022-hpd-irq-events-v6-0-337ea3ddaa62@oss.qualcomm.com?part=9
_______________________________________________
linux-amlogic mailing list
linux-amlogic@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-amlogic
next prev parent reply other threads:[~2026-10-22 13:42 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-22 13:27 [PATCH v6 0/9] drm: handle IRQ_HPD events correctly Dmitry Baryshkov
2026-10-22 13:27 ` Dmitry Baryshkov
2026-10-22 13:27 ` [PATCH v6 1/9] drm/connector: report out-of-band IRQ_HPD events Dmitry Baryshkov
2026-10-22 13:27 ` Dmitry Baryshkov
2026-10-22 13:36 ` sashiko-bot
2026-10-22 13:27 ` [PATCH v6 2/9] drm/connector: pass down IRQ_HPD to the drivers Dmitry Baryshkov
2026-10-22 13:27 ` Dmitry Baryshkov
2026-10-22 13:32 ` sashiko-bot
2026-10-22 13:27 ` [PATCH v6 3/9] drm/bridge: " Dmitry Baryshkov
2026-10-22 13:27 ` Dmitry Baryshkov
2026-10-22 13:35 ` sashiko-bot
2026-10-22 13:35 ` sashiko-bot
2026-10-23 1:21 ` Chaoyi Chen
2026-10-23 1:21 ` Chaoyi Chen
2026-10-22 13:27 ` [PATCH v6 4/9] drm/bridge: pass extra events to the HPD callback Dmitry Baryshkov
2026-10-22 13:27 ` Dmitry Baryshkov
2026-10-22 13:38 ` sashiko-bot
2026-10-22 13:38 ` sashiko-bot
2026-10-22 13:28 ` [PATCH v6 5/9] drm/bridge: aux-hpd: let drivers pass IRQ_HPD events Dmitry Baryshkov
2026-10-22 13:28 ` Dmitry Baryshkov
2026-10-22 13:31 ` sashiko-bot
2026-10-22 13:28 ` [PATCH v6 6/9] drm/msm/dp: don't take extra references on multiple plug events Dmitry Baryshkov
2026-10-22 13:28 ` Dmitry Baryshkov
2026-10-22 13:46 ` sashiko-bot
2026-10-22 13:46 ` sashiko-bot
2026-10-22 13:28 ` [PATCH v6 7/9] drm/msm: dp: handle the IRQ_HPD events reported by USB-C Dmitry Baryshkov
2026-10-22 13:28 ` Dmitry Baryshkov
2026-10-22 13:35 ` sashiko-bot
2026-10-22 13:35 ` sashiko-bot
2026-10-23 9:24 ` kernel test robot
2026-10-23 10:55 ` kernel test robot
2026-10-22 13:28 ` [PATCH v6 8/9] soc: qcom: pmic-glink-altmode: pass down HPD_IRQ events Dmitry Baryshkov
2026-10-22 13:28 ` Dmitry Baryshkov
2026-10-22 13:33 ` sashiko-bot
2026-10-22 13:28 ` [PATCH v6 9/9] usb: typec: ucsi: huawei-gaokun: " Dmitry Baryshkov
2026-10-22 13:28 ` Dmitry Baryshkov
2026-10-22 13:41 ` sashiko-bot [this message]
2026-10-22 13:41 ` sashiko-bot
2026-10-22 14:10 ` ✓ CI.KUnit: success for drm: handle IRQ_HPD events correctly (rev7) Patchwork
2026-10-22 14:34 ` ✓ i915.CI.BAT: " Patchwork
2026-10-22 14:47 ` ✓ Xe.CI.BAT: " Patchwork
2026-10-22 23:23 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-10-23 2:53 ` ✓ i915.CI.Full: success " Patchwork
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=sashiko-outbox-181561@kernel.org \
--to=sashiko-bot@kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-xe@lists.freedesktop.org \
--cc=linux-amlogic@lists.infradead.org \
--cc=linux-usb@vger.kernel.org \
--cc=neil.armstrong@linaro.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 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.