Re: [PATCH v9 17/61] drm/display: hdmi-state-helper: Sync SCDC state on hotplug
[email protected] Thu, 23 Jul 2026 01:53:37 +0000
| Newsgroups | dev.linux.lists.linux-sunxi,org.freedesktop.lists.dri-devel |
|---|---|
| Message-ID | <[email protected]> |
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [Medium] The HDMI disconnect path fails to implement SCDC scrambler synchronization, resulting in dead code and potential display corruption on hotplug. -- --- Patch [17]: [PATCH v9 17/61] drm/display: hdmi-state-helper: Sync SCDC state on hotplug --- commit c0cc8e9a78dd0bbc36a54e19e44a65a37553ae23 Author: Cristian Ciocaltea <[email protected]> drm/display: hdmi-state-helper: Sync SCDC state on hotplug This commit hooks drm_connector_hdmi_sync_scdc() into both the connect and disconnect paths in drm_atomic_helper_connector_hdmi_update() to synchronize the SCDC status on hotplug events. > diff --git a/drivers/gpu/drm/display/drm_hdmi_state_helper.c b/drivers/gpu/drm/display/drm_hdmi_state_helper.c > index 04d5196a2010f..ad59318a3e85f 100644 > --- a/drivers/gpu/drm/display/drm_hdmi_state_helper.c > +++ b/drivers/gpu/drm/display/drm_hdmi_state_helper.c > @@ -1205,13 +1205,16 @@ drm_atomic_helper_connector_hdmi_update(struct drm_connector *connector, > enum drm_connector_status status) > { > const struct drm_edid *drm_edid; > + int ret = 0; > > if (status == connector_status_disconnected) { > - // TODO: also handle scramber, HDMI sink disconnected. > - drm_connector_hdmi_audio_plugged_notify(connector, false); > - drm_edid_connector_update(connector, NULL); > - drm_connector_cec_phys_addr_invalidate(connector); > - return 0; > + ret = drm_connector_hdmi_sync_scdc(connector, false, ctx); > + if (ret != -EDEADLK) { [Severity: Medium] Does this code actually synchronize the scrambler on disconnect? Looking at drm_connector_hdmi_sync_scdc(), it has an early return when plugged is false: drivers/gpu/drm/display/drm_hdmi_helper.c:drm_connector_hdmi_sync_scdc() { ... if (!connector || !plugged || !ctx) return 0; ... } Because of this early return, calling drm_connector_hdmi_sync_scdc() with false for the plugged parameter makes it a no-op, which bypasses the scrambler synchronization logic. Additionally, since it always returns 0 in this case, doesn't this make the if (ret != -EDEADLK) check dead code? > + drm_connector_hdmi_audio_plugged_notify(connector, false); > + drm_edid_connector_update(connector, NULL); > + drm_connector_cec_phys_addr_invalidate(connector); > + } > + return ret; > } > [ ... ] -- Sashiko AI review ยท https://sashiko.dev/#/patchset/[email protected]?part=17