From: James Lin <[email protected]>
Previous fix converted most mpcc_id assignments in dc_hw_sequencer.c
from pipe_ctx->plane_res.hubp->inst to plane_res.mpcc_inst, but missed
the update_visual_confirm and power_on_mpc_mem_pwr paths in
hwss_build_fast_sequence(). On DCE ASICs the pipe owns no HUBP, so those
two remaining hubp->inst reads can NULL-deref.
Use mpcc_inst for the remaining two assignments, matching the rest of
the function and avoiding the NULL pointer dereference (same issue
addressed upstream by "avoid NULL hubp deref when filling mpcc_id on
DCE").
Fixes: f0b207067bb3 ("drm/amd/display: Use mpcc_id instead of hubp instance")
Reviewed-by: Tomasz Siemek <[email protected]>
Signed-off-by: James Lin <[email protected]>
Signed-off-by: Alex Hung <[email protected]>
---
drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
b/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
index 8b723c3ca933..47320ac01711 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_hw_sequencer.c
@@ -1610,13 +1610,13 @@ void hwss_build_fast_sequence(struct dc *dc,
dc->hwss.update_visual_confirm_color) {
block_sequence[*num_steps].params.update_visual_confirm_params.dc = dc;
block_sequence[*num_steps].params.update_visual_confirm_params.pipe_ctx =
current_mpc_pipe;
-
block_sequence[*num_steps].params.update_visual_confirm_params.mpcc_id =
current_mpc_pipe->plane_res.hubp->inst;
+
block_sequence[*num_steps].params.update_visual_confirm_params.mpcc_id =
current_mpc_pipe->plane_res.mpcc_inst;
block_sequence[*num_steps].func =
MPC_UPDATE_VISUAL_CONFIRM;
(*num_steps)++;
}
if
(current_mpc_pipe->stream->update_flags.bits.out_csc) {
block_sequence[*num_steps].params.power_on_mpc_mem_pwr_params.mpc =
dc->res_pool->mpc;
-
block_sequence[*num_steps].params.power_on_mpc_mem_pwr_params.mpcc_id =
current_mpc_pipe->plane_res.hubp->inst;
+
block_sequence[*num_steps].params.power_on_mpc_mem_pwr_params.mpcc_id =
current_mpc_pipe->plane_res.mpcc_inst;
block_sequence[*num_steps].params.power_on_mpc_mem_pwr_params.power_on = true;
block_sequence[*num_steps].func =
MPC_POWER_ON_MPC_MEM_PWR;
(*num_steps)++;
--
2.43.0