mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-06 00:55:05 -05:00
drm/amd/display: fail instead of div by zero/bugcheck
[why] If pbn_per_slot is 0, fail instead of dividing by zero and bugchecking. [how] Check for zero divisor before division operation. Signed-off-by: Ashley Thomas <Ashley.Thomas2@amd.com> Reviewed-by: Wyatt Wood <Wyatt.Wood@amd.com> Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
81e8da715c
commit
7dd4f4df99
@@ -420,6 +420,8 @@ char *dc_status_to_str(enum dc_status status)
|
||||
return "Fail clk below required CFG (hard_min in PPLIB)";
|
||||
case DC_NOT_SUPPORTED:
|
||||
return "The operation is not supported.";
|
||||
case DC_UNSUPPORTED_VALUE:
|
||||
return "The value specified is not supported.";
|
||||
case DC_ERROR_UNEXPECTED:
|
||||
return "Unexpected error";
|
||||
}
|
||||
|
||||
@@ -2952,6 +2952,10 @@ enum dc_status dc_link_allocate_mst_payload(struct pipe_ctx *pipe_ctx)
|
||||
|
||||
/* slot X.Y for only current stream */
|
||||
pbn_per_slot = get_pbn_per_slot(stream);
|
||||
if (pbn_per_slot.value == 0) {
|
||||
DC_LOG_ERROR("Failure: pbn_per_slot==0 not allowed. Cannot continue, returning DC_UNSUPPORTED_VALUE.\n");
|
||||
return DC_UNSUPPORTED_VALUE;
|
||||
}
|
||||
pbn = get_pbn_from_timing(pipe_ctx);
|
||||
avg_time_slots_per_mtp = dc_fixpt_div(pbn, pbn_per_slot);
|
||||
|
||||
|
||||
@@ -51,6 +51,7 @@ enum dc_status {
|
||||
DC_FAIL_CLK_BELOW_CFG_REQUIRED = 23, /*THIS IS hard_min in PPLIB*/
|
||||
|
||||
DC_NOT_SUPPORTED = 24,
|
||||
DC_UNSUPPORTED_VALUE = 25,
|
||||
|
||||
DC_ERROR_UNEXPECTED = -1
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user