On 10/11/26 03:45, Avi Weiss wrote:
dml_core_mode_programming() memsets (clears) its scratch structure
before calculating TD-LUT settings, but does not initialize
tdlut_mpc_width_flag or is_gfx11.

Both inputs therefore remain false regardless of the plane
configuration which can result in incorrect calculations.

Initialize both fields using the same sources as the mode
support path (now both paths are aligned).

Fixes: 70839da63605 ("drm/amd/display: Add new DCN401 sources")
Signed-off-by: Avi Weiss <[email protected]>

Reviewed-by: Harry Wentland <[email protected]>

The issue sashiko found is also a real problem but somewhat
unrelated.

Harry

---
 .../dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c        | 2 ++
 1 file changed, 2 insertions(+)

diff --git 
a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c
 
b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c
index 72acf12e9251..0ee385e8ba5f 100644
--- 
a/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c
+++ 
b/drivers/gpu/drm/amd/display/dc/dml2_0/dml21/src/dml2_core/dml2_core_dcn4_calcs.c
@@ -11074,6 +11074,8 @@ static bool dml_core_mode_programming(struct 
dml2_core_calcs_mode_programming_ex
                calculate_tdlut_setting_params->cursor_buffer_size = 
mode_lib->ip.cursor_buffer_size;
                calculate_tdlut_setting_params->gpuvm_enable = 
display_cfg->gpuvm_enable;
                calculate_tdlut_setting_params->gpuvm_page_size_kbytes = 
display_cfg->plane_descriptors[k].overrides.gpuvm_min_page_size_kbytes;
+               calculate_tdlut_setting_params->tdlut_mpc_width_flag = 
display_cfg->plane_descriptors[k].tdlut.tdlut_mpc_width_flag;
+               calculate_tdlut_setting_params->is_gfx11 = 
dml_get_gfx_version(display_cfg->plane_descriptors[k].surface.tiling);
// output
                calculate_tdlut_setting_params->tdlut_pte_bytes_per_frame = 
&s->tdlut_pte_bytes_per_frame[k];

Reply via email to