]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Check for tg ops in dce110_set_avmute
authorRay Wu <ray.wu@amd.com>
Wed, 5 Aug 2026 01:47:17 +0000 (09:47 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 6 Aug 2026 18:33:54 +0000 (14:33 -0400)
Some older DCE timing generators do not implement is_tg_enabled in
their ops table. Calling it unconditionally when waiting for AV mute
frames causes a NULL pointer dereference on Southern Islands dGPUs
when turning the display off over HDMI.

Check that tg and the required ops exist before waiting for frames.

Fixes: 414da24137ac ("drm/amd/display: Add AV mute wait frames to dce110_set_avmute")
Closes: https://gitlab.freedesktop.org/drm/amd/-/work_items/5557
Tested-by: Viktor Jägersküpper <viktor_jaegerskuepper@freenet.de>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 2686a0c0aaa07bec2e24131835cf27b5fd4935a5)
Cc: stable@vger.kernel.org
drivers/gpu/drm/amd/display/dc/hwss/dce110/dce110_hwseq.c

index 53fffe58602f13ff30e13376938e9fb2fcd207c2..f5b3a2eff94a0b44068479ecb1baa598dde52df4 100644 (file)
@@ -1348,7 +1348,10 @@ void dce110_set_avmute(struct pipe_ctx *pipe_ctx, bool enable)
                 * process the mute state, especially after link re-establishment
                 * with HDMI 2.0 scrambling enabled.
                 */
-               if (enable && pipe_ctx->stream_res.tg->funcs->is_tg_enabled(pipe_ctx->stream_res.tg)) {
+               if (enable && pipe_ctx->stream_res.tg &&
+                   pipe_ctx->stream_res.tg->funcs->is_tg_enabled &&
+                   pipe_ctx->stream_res.tg->funcs->wait_for_state &&
+                   pipe_ctx->stream_res.tg->funcs->is_tg_enabled(pipe_ctx->stream_res.tg)) {
                        int i;
 
                        pipe_ctx->stream_res.tg->funcs->wait_for_state(pipe_ctx->stream_res.tg, CRTC_STATE_VACTIVE);