drm/amd/display: Added debug option for forcing subvp num ways
authorLee, Alvin <Alvin.Lee2@amd.com>
Thu, 25 Aug 2022 20:05:03 +0000 (16:05 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 13 Sep 2022 18:33:00 +0000 (14:33 -0400)
[Description]
Regkey option for forcing num ways for subvp for debug purposes

Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Pavle Kotarac <Pavle.Kotarac@amd.com>
Signed-off-by: Alvin Lee <Alvin.Lee2@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c

index c48403d..e8e8e03 100644 (file)
@@ -831,6 +831,7 @@ struct dc_debug_options {
        bool force_disable_subvp;
        bool force_subvp_mclk_switch;
        bool allow_sw_cursor_fallback;
+       unsigned int force_subvp_num_ways;
        bool force_usr_allow;
        /* uses value at boot and disables switch */
        bool disable_dtb_ref_clk_switch;
index 1f195c5..417dfdc 100644 (file)
@@ -54,13 +54,14 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat
        uint32_t num_mblks = 0;
        uint32_t cache_lines_per_plane = 0;
        uint32_t i = 0, j = 0;
-       uint32_t mblk_width = 0;
-       uint32_t mblk_height = 0;
+       uint16_t mblk_width = 0;
+       uint16_t mblk_height = 0;
        uint32_t full_vp_width_blk_aligned = 0;
        uint32_t full_vp_height_blk_aligned = 0;
        uint32_t mall_alloc_width_blk_aligned = 0;
        uint32_t mall_alloc_height_blk_aligned = 0;
-       uint32_t full_vp_height = 0;
+       uint16_t full_vp_height = 0;
+       bool subvp_in_use = false;
 
        for (i = 0; i < dc->res_pool->pipe_count; i++) {
                struct pipe_ctx *pipe = &context->res_ctx.pipe_ctx[i];
@@ -70,6 +71,7 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat
                                pipe->stream->mall_stream_config.type == SUBVP_PHANTOM) {
                        struct pipe_ctx *main_pipe = NULL;
 
+                       subvp_in_use = true;
                        /* Get full viewport height from main pipe (required for MBLK calculation) */
                        for (j = 0; j < dc->res_pool->pipe_count; j++) {
                                main_pipe = &context->res_ctx.pipe_ctx[j];
@@ -129,6 +131,9 @@ uint32_t dcn32_helper_calculate_num_ways_for_subvp(struct dc *dc, struct dc_stat
        if (cache_lines_used % lines_per_way > 0)
                num_ways++;
 
+       if (subvp_in_use && dc->debug.force_subvp_num_ways > 0)
+               num_ways = dc->debug.force_subvp_num_ways;
+
        return num_ways;
 }