Thank you for your contribution! Sashiko AI review found 1 potential issue(s) 
to consider:
- [High] Unclocked register access in `msm_hdmi_bridge_atomic_post_disable` if 
`atomic_pre_enable` fails, leading to a system crash.
--

commit cf37fcc44eb6e3ec93e18234643d645b17ce8c49
Author: Krzysztof Kozlowski <[email protected]>

dt-bindings: display/msm: hdmi: Correct name of disallowed supplies

There are no properties in DTS or Linux drivers called
"core-vcc-supplies" or "hdmi-mux-supplies", so the binding probably
wanted "-supply" properties instead.

> diff --git a/Documentation/devicetree/bindings/display/msm/hdmi.yaml 
> b/Documentation/devicetree/bindings/display/msm/hdmi.yaml
> index dfec6c3480f3f..02d27ccad0247 100644
> --- a/Documentation/devicetree/bindings/display/msm/hdmi.yaml
> +++ b/Documentation/devicetree/bindings/display/msm/hdmi.yaml
> @@ -113,7 +113,7 @@ allOf:
>              - const: core
>              - const: master_iface
>              - const: slave_iface
> -        core-vcc-supplies: false
> +        core-vcc-supply: false

[Severity: High]
Can this series cause an unclocked register access regression if
atomic_pre_enable fails?

When a userspace DRM atomic commit triggers atomic_pre_enable, if
msm_hdmi_power_on() fails (e.g., clk_prepare_enable failure), the error path
introduced earlier in this patch series disables PHY resources and returns
early:

drivers/gpu/drm/msm/hdmi/hdmi_bridge.c:msm_hdmi_bridge_atomic_pre_enable() {
                        if (msm_hdmi_power_on(bridge)) {
                                msm_hdmi_phy_resource_disable(phy);
                                return;
                        }
}

This leaves hdmi->power_on as false. Since DRM core continues because
atomic_pre_enable returns void, later when the pipeline is disabled,
msm_hdmi_bridge_atomic_post_disable() is called unconditionally:

drivers/gpu/drm/msm/hdmi/hdmi_bridge.c:msm_hdmi_bridge_atomic_post_disable() {
        msm_hdmi_set_mode(hdmi, hdmi->hpd_enabled);

        msm_hdmi_phy_powerdown(phy);

        if (hdmi->power_on) {
}

These functions execute register writes without being guarded by
hdmi->power_on. Since PHY resources were dropped on error, it writes to
unclocked and unpowered hardware, which can cause a bus error or synchronous
external abort.

-- 
Sashiko AI review ยท 
https://sashiko.dev/#/patchset/20260908-drm-msm-hdmi-fixes-before-eliza-v3-0-dcf895687...@oss.qualcomm.com?part=7

Reply via email to