drm/amd/display: Clear link res when merging a pipe split
authorAlvin Lee <Alvin.Lee2@amd.com>
Fri, 2 Dec 2022 16:10:48 +0000 (11:10 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 15 Dec 2022 17:18:19 +0000 (12:18 -0500)
[Description]
- When merging a pipe that was previously pipe split, we need
  to also clear the link resources or the next stream/plane that
  uses the pipe may have an incorrect link resource state

Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com>
Reviewed-by: Nevenko Stupar <Nevenko.Stupar@amd.com>
Acked-by: Jasdeep Dhillon <jdhillon@amd.com>
Signed-off-by: Alvin Lee <Alvin.Lee2@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dml/dcn32/dcn32_fpu.c

index e655173..efffe92 100644 (file)
@@ -1647,6 +1647,7 @@ bool dcn32_internal_validate_bw(struct dc *dc,
                                dcn20_release_dsc(&context->res_ctx, dc->res_pool, &pipe->stream_res.dsc);
                        memset(&pipe->plane_res, 0, sizeof(pipe->plane_res));
                        memset(&pipe->stream_res, 0, sizeof(pipe->stream_res));
+                       memset(&pipe->link_res, 0, sizeof(pipe->link_res));
                        repopulate_pipes = true;
                } else if (pipe->top_pipe && pipe->top_pipe->plane_state == pipe->plane_state) {
                        struct pipe_ctx *top_pipe = pipe->top_pipe;
@@ -1662,6 +1663,7 @@ bool dcn32_internal_validate_bw(struct dc *dc,
                        pipe->stream = NULL;
                        memset(&pipe->plane_res, 0, sizeof(pipe->plane_res));
                        memset(&pipe->stream_res, 0, sizeof(pipe->stream_res));
+                       memset(&pipe->link_res, 0, sizeof(pipe->link_res));
                        repopulate_pipes = true;
                } else
                        ASSERT(0); /* Should never try to merge master pipe */