On Sat, Jun 06, 2026 at 08:05:29PM +0800, Yongxing Mou wrote: > On RB8 hardware, after drm_dp_add_payload_part2() completes, the > downstream MST dongle has a high probability of silently dropping the > short-pulse IRQ at specific timing windows.
So, who does what? Is it RB8 missing the IRQ_HPD or is it a dongle not sending the IRQ_HPD event? Why is it being missed? > > Implement the .poll_hpd_irq topology callback so that the DRM MST core can > proactively poll for unhandled sideband events whenever it suspects a > missed IRQ. > > Note: The new MST series will integrate this change into the introduce MST > IRQ patch This should not be a part of the commit message. And also the patch should be a part of the MST series. > > Signed-off-by: Yongxing Mou <[email protected]> > --- > drivers/gpu/drm/msm/dp/dp_mst_drm.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/msm/dp/dp_mst_drm.c > b/drivers/gpu/drm/msm/dp/dp_mst_drm.c > index c8623849c001..8cc44dcc37cd 100644 > --- a/drivers/gpu/drm/msm/dp/dp_mst_drm.c > +++ b/drivers/gpu/drm/msm/dp/dp_mst_drm.c > @@ -60,6 +60,8 @@ struct msm_dp_mst { > u32 max_streams; > /* Protects MST bridge enable/disable handling. */ > struct mutex mst_lock; > + /* Serializes HPD IRQ handling between IRQ handler and poll_hpd_irq. */ > + struct mutex hpd_irq_lock; > }; > > static struct drm_private_state *msm_dp_mst_duplicate_bridge_state(struct > drm_private_obj *obj) > @@ -500,10 +502,12 @@ void msm_dp_mst_display_hpd_irq(struct msm_dp > *dp_display) > unsigned int esi_res = DP_SINK_COUNT_ESI + 1; > bool handled; > > + mutex_lock(&mst->hpd_irq_lock); guard(mutex)(&mst->hpd_irq_lock); > + -- With best wishes Dmitry
