]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
drm/amd/display: Ignore scalar validation failure if pipe is phantom
authorChris Park <chris.park@amd.com>
Mon, 4 Nov 2024 18:18:39 +0000 (13:18 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 20 Nov 2024 14:39:27 +0000 (09:39 -0500)
[Why]
There are some pipe scaler validation failure when the pipe is phantom
and causes crash in DML validation. Since, scalar parameters are not
as important in phantom pipe and we require this plane to do successful
MCLK switches, the failure condition can be ignored.

[How]
Ignore scalar validation failure if the pipe validation is marked as
phantom pipe.

Cc: stable@vger.kernel.org # 6.11+
Reviewed-by: Dillon Varone <dillon.varone@amd.com>
Signed-off-by: Chris Park <chris.park@amd.com>
Signed-off-by: Hamza Mahfooz <hamza.mahfooz@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/core/dc_resource.c

index 33125b95c3a13258eef4d2bc4a04e51b5862798f..619fad17de55447afaed21e2190f5ae4a4fbcda2 100644 (file)
@@ -1501,6 +1501,10 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
                res = spl_calculate_scaler_params(spl_in, spl_out);
                // Convert respective out params from SPL to scaler data
                translate_SPL_out_params_to_pipe_ctx(pipe_ctx, spl_out);
+
+               /* Ignore scaler failure if pipe context plane is phantom plane */
+               if (!res && plane_state->is_phantom)
+                       res = true;
        } else {
 #endif
        /* depends on h_active */
@@ -1571,6 +1575,10 @@ bool resource_build_scaling_params(struct pipe_ctx *pipe_ctx)
                                        &plane_state->scaling_quality);
        }
 
+       /* Ignore scaler failure if pipe context plane is phantom plane */
+       if (!res && plane_state->is_phantom)
+               res = true;
+
        if (res && (pipe_ctx->plane_res.scl_data.taps.v_taps != temp.v_taps ||
                pipe_ctx->plane_res.scl_data.taps.h_taps != temp.h_taps ||
                pipe_ctx->plane_res.scl_data.taps.v_taps_c != temp.v_taps_c ||