]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amd/display: Add null check for phantom pipes in prepare mcache
authorDillon Varone <dillon.varone@amd.com>
Mon, 27 May 2024 13:17:04 +0000 (09:17 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Jun 2024 20:18:26 +0000 (16:18 -0400)
[WHY&HOW]
Sometimes this function is called with a partially deconstructed phantom
stream toplolgy, and should ignore phantoms with no plane state.

Reviewed-by: Alvin Lee <alvin.lee2@amd.com>
Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com>
Signed-off-by: Dillon Varone <dillon.varone@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/dml2/dml21/dml21_wrapper.c

index c4542c3dded9807f817792c5967679525314e54e..b442e1f9f20497538861675f32e6caa186c94c00 100644 (file)
@@ -325,7 +325,10 @@ void dml21_prepare_mcache_programming(struct dc *in_dc, struct dc_state *context
                }
 
                /* get config for each phantom pipe */
-               if (pln_prog->phantom_plane.valid && dc_phantom_pipes[0]) {
+               if (pln_prog->phantom_plane.valid &&
+                               dc_phantom_pipes[0] &&
+                               dc_main_pipes[0]->stream &&
+                               dc_phantom_pipes[0]->plane_state) {
                        mcache_config = &l->build_mcache_programming_params.mcache_configurations[dml_phantom_prog_idx];
                        memset(mcache_config, 0, sizeof(struct dml2_plane_mcache_configuration_descriptor));
                        mcache_config->plane_descriptor = pln_prog->plane_descriptor;
@@ -368,7 +371,10 @@ void dml21_prepare_mcache_programming(struct dc *in_dc, struct dc_state *context
                }
 
                /* get config for each phantom pipe */
-               if (pln_prog->phantom_plane.valid && dc_phantom_pipes[0]) {
+               if (pln_prog->phantom_plane.valid &&
+                               dc_phantom_pipes[0] &&
+                               dc_main_pipes[0]->stream &&
+                               dc_phantom_pipes[0]->plane_state) {
                        for (dc_pipe_index = 0; dc_pipe_index < num_pipes; dc_pipe_index++) {
                                ASSERT(dc_phantom_pipes[dc_pipe_index]);
                                if (l->build_mcache_programming_params.per_plane_pipe_mcache_regs[dml_phantom_prog_idx][dc_pipe_index]) {