DF-3707 / fix.diff
--- a/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c +++ b/sys/dev/drm/amd/powerplay/hwmgr/vega10_hwmgr.c @@ -4535,7 +4535,11 @@ static int vega10_get_sclk_od(struct pp_h int value = sclk_table->dpm_levels[sclk_table->count - 1].value; int golden_value = golden_sclk_table->dpm_levels [golden_sclk_table->count - 1].value; + if (!golden_value) /* crafted/blank VBIOS table: avoid divide-by-zero */ + return 0; + value -= golden_value; value = DIV_ROUND_UP(value * 100, golden_value); @@ -4586,7 +4586,11 @@ static int vega10_get_mclk_od(struct pp_h int value = mclk_table->dpm_levels[mclk_table->count - 1].value; int golden_value = golden_mclk_table->dpm_levels [golden_mclk_table->count - 1].value; + if (!golden_value) /* crafted/blank VBIOS table: avoid divide-by-zero */ + return 0; + value -= golden_value; value = DIV_ROUND_UP(value * 100, golden_value); |