[PATCH RESEND v3 1/6] drm/connector: report IRQ_HPD events to drm_connector_oob_hotplug_event()
Dmitry Baryshkov
dmitry.baryshkov at oss.qualcomm.com
Mon May 18 09:56:59 PDT 2026
On Thu, May 14, 2026 at 10:44:23AM +0000, sashiko-bot at kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:
> - [High] IRQ_HPD events are silently dropped if a status update triggers a reconfiguration while the HPD state remains unchanged.
> - [High] Deferred events in `dp_altmode_configured()` unconditionally report the display as connected and leak stale `pending_irq_hpd` / `pending_hpd` state.
> --
>
> commit 53d82f9a5286a8fa5530ca1be94f61940637586b
> Author: Dmitry Baryshkov <dmitry.baryshkov at oss.qualcomm.com>
>
> drm/connector: report IRQ_HPD events to drm_connector_oob_hotplug_event()
>
> This commit extends the drm_connector_oob_hotplug_event() interface to report
> DisplayPort irq events. These events are now forwarded through the alt mode
> messages to the sink drivers to support multi-stream transport handling.
>
> > diff --git a/drivers/usb/typec/altmodes/displayport.c b/drivers/usb/typec/altmodes/displayport.c
> > index 35d9c30869900..7182a8e2e7101 100644
> > --- a/drivers/usb/typec/altmodes/displayport.c
> > +++ b/drivers/usb/typec/altmodes/displayport.c
> [ ... ]
> > @@ -212,7 +214,10 @@ static int dp_altmode_configured(struct dp_altmode *dp)
> > */
> > if (dp->pending_hpd) {
> > drm_connector_oob_hotplug_event(dp->connector_fwnode,
> > - connector_status_connected);
> > + connector_status_connected,
> > + dp->pending_irq_hpd ?
> > + DRM_CONNECTOR_DP_IRQ_HPD :
> > + DRM_CONNECTOR_NO_EXTRA_STATUS);
>
> Are irq events silently dropped if a status update triggers a
> reconfiguration while the hotplug detect state remains unchanged?
>
> Looking at dp_altmode_status_update(), if a status update requires
> reconfiguration, the code attempts to buffer the event:
Only if the DP isn't configured at the moment of the event.
>
> if (!(con & DP_CONF_CURRENTLY(dp->data.conf))) {
> ret = dp_altmode_configure(dp, con);
> if (!ret) {
> dp->state = dp->plug_prime ? DP_STATE_CONFIGURE_PRIME :
> DP_STATE_CONFIGURE;
> if (dp->hpd != hpd) {
> dp->hpd = hpd;
> dp->pending_hpd = true;
> }
> if (dp->hpd && dp->pending_hpd && irq_hpd)
> dp->pending_irq_hpd = true;
> }
> }
>
> It only sets dp->pending_hpd = true if the hotplug detect state has toggled. If
> it remains unchanged, dp->pending_hpd stays false. This prevents
> dp->pending_irq_hpd from being set even if irq_hpd is true.
Because it's all about the pending events. If there is no HPD set, then
there is no point in processing IRQ_HPD events too (please correct me if
I'm wrong).
>
> Could this cause DisplayPort irq events that arrive concurrently with a
> configuration change to be lost, preventing downstream multi-stream transport
> topology updates and link training?
>
> Additionally, does this deferred event unconditionally report the display as
> connected and leak stale state?
>
> If multiple status update messages arrive before configuration
> completes, dp->hpd can transition to false while dp->pending_hpd and
> dp->pending_irq_hpd remain true.
>
> Similarly, if the alt mode is exited via CMD_EXIT_MODE while
> dp->pending_hpd is true, these pending flags are never cleared.
>
> Will this cause the drm driver to receive a spurious connection event and
> irq when configuration completes or when the alt mode is later re-entered?
>
> --
> Sashiko AI review · https://sashiko.dev/#/patchset/20260513-hpd-irq-events-v3-0-086857017f16@oss.qualcomm.com?part=1
>
> _______________________________________________
> linux-amlogic mailing list
> linux-amlogic at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-amlogic
--
With best wishes
Dmitry
More information about the linux-amlogic
mailing list