DF-1142 / fix.diff
diff --git a/sys/dev/drm/amd/amdgpu/ci_dpm.c b/sys/dev/drm/amd/amdgpu/ci_dpm.c --- a/sys/dev/drm/amd/amdgpu/ci_dpm.c +++ b/sys/dev/drm/amd/amdgpu/ci_dpm.c @@ -2789,7 +2789,8 @@ int ret = -EINVAL; table->UvdLevelCount = - adev->pm.dpm.dyn_state.uvd_clock_voltage_dependency_table.count; + min_t(u8, adev->pm.dpm.dyn_state.uvd_clock_voltage_dependency_table.count, + SMU7_MAX_LEVELS_UVD); for (count = 0; count < table->UvdLevelCount; count++) { table->UvdLevel[count].VclkFrequency = @@ -2832,7 +2833,8 @@ int ret = -EINVAL; table->VceLevelCount = - adev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table.count; + min_t(u8, adev->pm.dpm.dyn_state.vce_clock_voltage_dependency_table.count, + SMU7_MAX_LEVELS_VCE); for (count = 0; count < table->VceLevelCount; count++) { table->VceLevel[count].Frequency = @@ -2864,8 +2866,9 @@ struct atom_clock_dividers dividers; int ret = -EINVAL; - table->AcpLevelCount = (u8) - (adev->pm.dpm.dyn_state.acp_clock_voltage_dependency_table.count); + table->AcpLevelCount = + min_t(u8, adev->pm.dpm.dyn_state.acp_clock_voltage_dependency_table.count, + SMU7_MAX_LEVELS_ACP); for (count = 0; count < table->AcpLevelCount; count++) { table->AcpLevel[count].Frequency = @@ -2897,7 +2900,8 @@ int ret = -EINVAL; table->SamuLevelCount = - adev->pm.dpm.dyn_state.samu_clock_voltage_dependency_table.count; + min_t(u8, adev->pm.dpm.dyn_state.samu_clock_voltage_dependency_table.count, + SMU7_MAX_LEVELS_SAMU); for (count = 0; count < table->SamuLevelCount; count++) { table->SamuLevel[count].Frequency = |