From: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>

Dst_y can become negative in extreme odm 4to1 cases. While not strictly
invalid, this should be limited to 0 for rq/dlg/ttu calculation.

Reviewed-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
Signed-off-by: Dmytro Laktyushkin <dmytro.laktyush...@amd.com>
---
 .../gpu/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c
index cd3cfcb2a2b0..0497a5d74a62 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn30/display_rq_dlg_calc_30.c
@@ -980,7 +980,7 @@ static void dml_rq_dlg_get_dlg_params(struct 
display_mode_lib *mode_lib,
 
        unsigned int vstartup_start = 0;
        unsigned int dst_x_after_scaler = 0;
-       unsigned int dst_y_after_scaler = 0;
+       int dst_y_after_scaler = 0;
        double line_wait = 0;
        double dst_y_prefetch = 0;
        double dst_y_per_vm_vblank = 0;
@@ -1171,6 +1171,8 @@ static void dml_rq_dlg_get_dlg_params(struct 
display_mode_lib *mode_lib,
 
        dst_x_after_scaler = get_dst_x_after_scaler(mode_lib, e2e_pipe_param, 
num_pipes, pipe_idx);
        dst_y_after_scaler = get_dst_y_after_scaler(mode_lib, e2e_pipe_param, 
num_pipes, pipe_idx);
+       if (dst_y_after_scaler < 0)
+               dst_y_after_scaler = 0;
 
        // do some adjustment on the dst_after scaler to account for odm 
combine mode
        dml_print("DML_DLG: %s: input dst_x_after_scaler                     = 
%d\n",
-- 
2.34.1

Reply via email to