From: "Lee, Alvin" <alvin.l...@amd.com>

[Description]
Regkey option for forcing num ways for
subvp for debug purposes

Reviewed-by: Jun Lei <jun....@amd.com>
Acked-by: Pavle Kotarac <pavle.kota...@amd.com>
Signed-off-by: Alvin Lee <alvin.l...@amd.com>
---
 drivers/gpu/drm/amd/display/dc/dc.h                   |  1 +
 .../drm/amd/display/dc/dcn32/dcn32_resource_helpers.c | 11 ++++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index c48403d49f2e..e8e8e031b9d7 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -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;
diff --git a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c 
b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c
index 13cd1f2e50ca..7c37575d69c7 100644
--- a/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c
+++ b/drivers/gpu/drm/amd/display/dc/dcn32/dcn32_resource_helpers.c
@@ -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;
 }
 
-- 
2.34.1

Reply via email to