drm/amd/display: Fic incorrect pipe being used for clk update
authorBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Thu, 5 May 2022 20:16:47 +0000 (16:16 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 26 May 2022 18:56:31 +0000 (14:56 -0400)
[Why]
we save the prev_dppclk value using "dpp_inst" but
when reading this value we use the index "i". In
a case where a pipe is fused off we can end up reading
the incorrect instance because i != dpp_inst in this
case.

[How]
read the prev_dppclk using dpp_inst instead of i

Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com>
Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@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/clk_mgr/dcn21/rn_clk_mgr.c

index 02943ca65807abff7a1cf54632981a0872e8ba89..cf1b5f354ae99f80723f020d0cad05042ef97928 100644 (file)
@@ -122,7 +122,7 @@ static void rn_update_clocks_update_dpp_dto(struct clk_mgr_internal *clk_mgr,
                dpp_inst = clk_mgr->base.ctx->dc->res_pool->dpps[i]->inst;
                dppclk_khz = context->res_ctx.pipe_ctx[i].plane_res.bw.dppclk_khz;
 
-               prev_dppclk_khz = clk_mgr->dccg->pipe_dppclk_khz[i];
+               prev_dppclk_khz = clk_mgr->dccg->pipe_dppclk_khz[dpp_inst];
 
                if (safe_to_lower || prev_dppclk_khz < dppclk_khz)
                        clk_mgr->dccg->funcs->update_dpp_dto(