drm/amd/display: Check stream pointer is initialized before accessing
authorSung Joon Kim <sungjoon.kim@amd.com>
Wed, 3 Jul 2024 20:15:59 +0000 (16:15 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 23 Jul 2024 21:07:13 +0000 (17:07 -0400)
[why & how]
We calculate static screen wait frames based
on the current timing info in the active stream.
If stream is not initialized, then we should skip
the calculation and go with the default values.

Reviewed-by: Gabe Teeger <gabe.teeger@amd.com>
Signed-off-by: Jerry Zuo <jerry.zuo@amd.com>
Signed-off-by: Sung Joon Kim <sungjoon.kim@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/hwss/dcn35/dcn35_hwseq.c

index ddf0807db627ba1d894f9115f45966c017e55773..ac1e3331a77c7b0577b4d6e42b86084d270f5ee7 100644 (file)
@@ -1461,10 +1461,9 @@ void dcn35_set_drr(struct pipe_ctx **pipe_ctx,
 
        for (i = 0; i < num_pipes; i++) {
                if ((pipe_ctx[i]->stream_res.tg != NULL) && pipe_ctx[i]->stream_res.tg->funcs) {
-                       struct dc_crtc_timing *timing = &pipe_ctx[i]->stream->timing;
-                       struct dc *dc = pipe_ctx[i]->stream->ctx->dc;
-
-                       if (dc->debug.static_screen_wait_frames) {
+                       if (pipe_ctx[i]->stream && pipe_ctx[i]->stream->ctx->dc->debug.static_screen_wait_frames) {
+                               struct dc_crtc_timing *timing = &pipe_ctx[i]->stream->timing;
+                               struct dc *dc = pipe_ctx[i]->stream->ctx->dc;
                                unsigned int frame_rate = timing->pix_clk_100hz / (timing->h_total * timing->v_total);
 
                                if (frame_rate >= 120 && dc->caps.ips_support &&