mirror of
https://github.com/raspberrypi/linux.git
synced 2026-01-02 15:53:42 +00:00
drm/amd/display: Prevent VStartup Overflow
[Why] For some VR headsets with large blanks, it's possible to overflow the OTG_VSTARTUP_PARAM:VSTARTUP_START register. This can lead to incorrect DML calculations and underflow downstream. [How] Min the calcualted max_vstartup_lines with the max value of the register. Reviewed-by: Dillon Varone <dillon.varone@amd.com> Signed-off-by: Ryan Seto <ryanseto@amd.com> Signed-off-by: Tom Chung <chiahsuan.chung@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
//#define DML_MODE_SUPPORT_USE_DPM_DRAM_BW
|
||||
//#define DML_GLOBAL_PREFETCH_CHECK
|
||||
#define ALLOW_SDPIF_RATE_LIMIT_PRE_CSTATE
|
||||
#define DML_MAX_VSTARTUP_START 1023
|
||||
|
||||
const char *dml2_core_internal_bw_type_str(enum dml2_core_internal_bw_type bw_type)
|
||||
{
|
||||
@@ -3737,6 +3738,7 @@ static unsigned int CalculateMaxVStartup(
|
||||
dml2_printf("DML::%s: vblank_avail = %u\n", __func__, vblank_avail);
|
||||
dml2_printf("DML::%s: max_vstartup_lines = %u\n", __func__, max_vstartup_lines);
|
||||
#endif
|
||||
max_vstartup_lines = (unsigned int)math_min2(max_vstartup_lines, DML_MAX_VSTARTUP_START);
|
||||
return max_vstartup_lines;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user