Skip to content

Commit 79f3f1b

Browse files
Samson Tamalexdeucher
authored andcommitted
drm/amd/display: fix num_ways overflow error
[Why] Helper function calculates num_ways using 32-bit. But is returned as 8-bit. If num_ways exceeds 8-bit, then it reports back the incorrect num_ways and erroneously uses MALL when it should not [How] Make returned value 32-bit and convert after it checks against caps.cache_num_ways, which is under 8-bit Reviewed-by: Alvin Lee <alvin.lee2@amd.com> Acked-by: Roman Li <roman.li@amd.com> Signed-off-by: Samson Tam <samson.tam@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent c4066d8 commit 79f3f1b

1 file changed

Lines changed: 4 additions & 3 deletions

File tree

drivers/gpu/drm/amd/display/dc/hwss/dcn32/dcn32_hwseq.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ static bool dcn32_check_no_memory_request_for_cab(struct dc *dc)
217217
static uint32_t dcn32_calculate_cab_allocation(struct dc *dc, struct dc_state *ctx)
218218
{
219219
int i;
220-
uint8_t num_ways = 0;
220+
uint32_t num_ways = 0;
221221
uint32_t mall_ss_size_bytes = 0;
222222

223223
mall_ss_size_bytes = ctx->bw_ctx.bw.dcn.mall_ss_size_bytes;
@@ -247,7 +247,8 @@ static uint32_t dcn32_calculate_cab_allocation(struct dc *dc, struct dc_state *c
247247
bool dcn32_apply_idle_power_optimizations(struct dc *dc, bool enable)
248248
{
249249
union dmub_rb_cmd cmd;
250-
uint8_t ways, i;
250+
uint8_t i;
251+
uint32_t ways;
251252
int j;
252253
bool mall_ss_unsupported = false;
253254
struct dc_plane_state *plane = NULL;
@@ -307,7 +308,7 @@ bool dcn32_apply_idle_power_optimizations(struct dc *dc, bool enable)
307308
cmd.cab.header.type = DMUB_CMD__CAB_FOR_SS;
308309
cmd.cab.header.sub_type = DMUB_CMD__CAB_DCN_SS_FIT_IN_CAB;
309310
cmd.cab.header.payload_bytes = sizeof(cmd.cab) - sizeof(cmd.cab.header);
310-
cmd.cab.cab_alloc_ways = ways;
311+
cmd.cab.cab_alloc_ways = (uint8_t)ways;
311312

312313
dm_execute_dmub_cmd(dc->ctx, &cmd, DM_DMUB_WAIT_TYPE_NO_WAIT);
313314

0 commit comments

Comments
 (0)