aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRex Zhu <Rex.Zhu@amd.com>2018-01-23 04:12:29 -0500
committerAlex Deucher <alexander.deucher@amd.com>2018-02-19 14:18:47 -0500
commitc7429b3ae97fe3fdbbc8fb61ab0a032a558bba9e (patch)
treeea84fccabd3bc0ab47f59084bdb7d71a6db45009
parent527d9427fa21814988bec378f9a8b2c2d441fcc1 (diff)
drm/amd/pp: Add struct profile_mode_setting for smu7
Move configurable profiling parameters to struct profile_mode_setting and initialize current_profile_setting. Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Signed-off-by: Rex Zhu <Rex.Zhu@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c10
-rw-r--r--drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h15
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c14
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c14
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c14
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c14
-rw-r--r--drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c14
7 files changed, 56 insertions, 39 deletions
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
index 3ff9536a2641..f6236f93ed13 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.c
@@ -1484,8 +1484,6 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
1484 1484
1485 data->dll_default_on = false; 1485 data->dll_default_on = false;
1486 data->mclk_dpm0_activity_target = 0xa; 1486 data->mclk_dpm0_activity_target = 0xa;
1487 data->mclk_activity_target = SMU7_MCLK_TARGETACTIVITY_DFLT;
1488 data->sclk_activity_target = SMU7_SCLK_TARGETACTIVITY_DFLT;
1489 data->vddc_vddgfx_delta = 300; 1487 data->vddc_vddgfx_delta = 300;
1490 data->static_screen_threshold = SMU7_STATICSCREENTHRESHOLD_DFLT; 1488 data->static_screen_threshold = SMU7_STATICSCREENTHRESHOLD_DFLT;
1491 data->static_screen_threshold_unit = SMU7_STATICSCREENTHRESHOLDUNIT_DFLT; 1489 data->static_screen_threshold_unit = SMU7_STATICSCREENTHRESHOLDUNIT_DFLT;
@@ -1509,6 +1507,14 @@ static void smu7_init_dpm_defaults(struct pp_hwmgr *hwmgr)
1509 data->enable_pkg_pwr_tracking_feature = true; 1507 data->enable_pkg_pwr_tracking_feature = true;
1510 data->force_pcie_gen = PP_PCIEGenInvalid; 1508 data->force_pcie_gen = PP_PCIEGenInvalid;
1511 data->ulv_supported = hwmgr->feature_mask & PP_ULV_MASK ? true : false; 1509 data->ulv_supported = hwmgr->feature_mask & PP_ULV_MASK ? true : false;
1510 data->current_profile_setting.bupdate_sclk = 1;
1511 data->current_profile_setting.sclk_up_hyst = 0;
1512 data->current_profile_setting.sclk_down_hyst = 100;
1513 data->current_profile_setting.sclk_activity = SMU7_SCLK_TARGETACTIVITY_DFLT;
1514 data->current_profile_setting.bupdate_sclk = 1;
1515 data->current_profile_setting.mclk_up_hyst = 0;
1516 data->current_profile_setting.mclk_down_hyst = 100;
1517 data->current_profile_setting.mclk_activity = SMU7_MCLK_TARGETACTIVITY_DFLT;
1512 1518
1513 if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->is_kicker) { 1519 if (hwmgr->chip_id == CHIP_POLARIS12 || hwmgr->is_kicker) {
1514 uint8_t tmp1, tmp2; 1520 uint8_t tmp1, tmp2;
diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
index 375fa10942f8..3bcfc61cd5a2 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/smu7_hwmgr.h
@@ -186,6 +186,17 @@ struct smu7_odn_dpm_table {
186 uint32_t odn_mclk_min_limit; 186 uint32_t odn_mclk_min_limit;
187}; 187};
188 188
189struct profile_mode_setting {
190 uint8_t bupdate_sclk;
191 uint8_t sclk_up_hyst;
192 uint8_t sclk_down_hyst;
193 uint16_t sclk_activity;
194 uint8_t bupdate_mclk;
195 uint8_t mclk_up_hyst;
196 uint8_t mclk_down_hyst;
197 uint16_t mclk_activity;
198};
199
189struct smu7_hwmgr { 200struct smu7_hwmgr {
190 struct smu7_dpm_table dpm_table; 201 struct smu7_dpm_table dpm_table;
191 struct smu7_dpm_table golden_dpm_table; 202 struct smu7_dpm_table golden_dpm_table;
@@ -289,8 +300,6 @@ struct smu7_hwmgr {
289 struct smu7_pcie_perf_range pcie_lane_power_saving; 300 struct smu7_pcie_perf_range pcie_lane_power_saving;
290 bool use_pcie_performance_levels; 301 bool use_pcie_performance_levels;
291 bool use_pcie_power_saving_levels; 302 bool use_pcie_power_saving_levels;
292 uint16_t mclk_activity_target;
293 uint16_t sclk_activity_target;
294 uint32_t mclk_dpm0_activity_target; 303 uint32_t mclk_dpm0_activity_target;
295 uint32_t low_sclk_interrupt_threshold; 304 uint32_t low_sclk_interrupt_threshold;
296 uint32_t last_mclk_dpm_enable_mask; 305 uint32_t last_mclk_dpm_enable_mask;
@@ -316,6 +325,8 @@ struct smu7_hwmgr {
316 uint16_t mem_latency_high; 325 uint16_t mem_latency_high;
317 uint16_t mem_latency_low; 326 uint16_t mem_latency_low;
318 uint32_t vr_config; 327 uint32_t vr_config;
328 struct profile_mode_setting custom_profile_setting;
329 struct profile_mode_setting current_profile_setting;
319}; 330};
320 331
321/* To convert to Q8.8 format for firmware */ 332/* To convert to Q8.8 format for firmware */
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
index 01cf32ccab5e..61dbbf19fed9 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/ci_smumgr.c
@@ -444,8 +444,8 @@ static int ci_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
444 level->EnabledForActivity = 0; 444 level->EnabledForActivity = 0;
445 /* this level can be used for throttling.*/ 445 /* this level can be used for throttling.*/
446 level->EnabledForThrottle = 1; 446 level->EnabledForThrottle = 1;
447 level->UpH = 0; 447 level->UpH = data->current_profile_setting.sclk_up_hyst;
448 level->DownH = 0; 448 level->DownH = data->current_profile_setting.sclk_down_hyst;
449 level->VoltageDownH = 0; 449 level->VoltageDownH = 0;
450 level->PowerThrottle = 0; 450 level->PowerThrottle = 0;
451 451
@@ -492,7 +492,7 @@ static int ci_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
492 for (i = 0; i < dpm_table->sclk_table.count; i++) { 492 for (i = 0; i < dpm_table->sclk_table.count; i++) {
493 result = ci_populate_single_graphic_level(hwmgr, 493 result = ci_populate_single_graphic_level(hwmgr,
494 dpm_table->sclk_table.dpm_levels[i].value, 494 dpm_table->sclk_table.dpm_levels[i].value,
495 data->sclk_activity_target, 495 data->current_profile_setting.sclk_activity,
496 &levels[i]); 496 &levels[i]);
497 if (result) 497 if (result)
498 return result; 498 return result;
@@ -1226,12 +1226,12 @@ static int ci_populate_single_memory_level(
1226 1226
1227 memory_level->EnabledForThrottle = 1; 1227 memory_level->EnabledForThrottle = 1;
1228 memory_level->EnabledForActivity = 1; 1228 memory_level->EnabledForActivity = 1;
1229 memory_level->UpH = 0; 1229 memory_level->UpH = data->current_profile_setting.mclk_up_hyst;
1230 memory_level->DownH = 100; 1230 memory_level->DownH = data->current_profile_setting.mclk_down_hyst;
1231 memory_level->VoltageDownH = 0; 1231 memory_level->VoltageDownH = 0;
1232 1232
1233 /* Indicates maximum activity level for this performance level.*/ 1233 /* Indicates maximum activity level for this performance level.*/
1234 memory_level->ActivityLevel = data->mclk_activity_target; 1234 memory_level->ActivityLevel = data->current_profile_setting.mclk_activity;
1235 memory_level->StutterEnable = 0; 1235 memory_level->StutterEnable = 0;
1236 memory_level->StrobeEnable = 0; 1236 memory_level->StrobeEnable = 0;
1237 memory_level->EdcReadEnable = 0; 1237 memory_level->EdcReadEnable = 0;
@@ -1515,7 +1515,7 @@ static int ci_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
1515 table->MemoryACPILevel.DownH = 100; 1515 table->MemoryACPILevel.DownH = 100;
1516 table->MemoryACPILevel.VoltageDownH = 0; 1516 table->MemoryACPILevel.VoltageDownH = 0;
1517 /* Indicates maximum activity level for this performance level.*/ 1517 /* Indicates maximum activity level for this performance level.*/
1518 table->MemoryACPILevel.ActivityLevel = PP_HOST_TO_SMC_US(data->mclk_activity_target); 1518 table->MemoryACPILevel.ActivityLevel = PP_HOST_TO_SMC_US(data->current_profile_setting.mclk_activity);
1519 1519
1520 table->MemoryACPILevel.StutterEnable = 0; 1520 table->MemoryACPILevel.StutterEnable = 0;
1521 table->MemoryACPILevel.StrobeEnable = 0; 1521 table->MemoryACPILevel.StrobeEnable = 0;
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
index e54038075886..1d0bc6632217 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/fiji_smumgr.c
@@ -1001,8 +1001,8 @@ static int fiji_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
1001 level->CcPwrDynRm1 = 0; 1001 level->CcPwrDynRm1 = 0;
1002 level->EnabledForActivity = 0; 1002 level->EnabledForActivity = 0;
1003 level->EnabledForThrottle = 1; 1003 level->EnabledForThrottle = 1;
1004 level->UpHyst = 10; 1004 level->UpHyst = data->current_profile_setting.sclk_up_hyst;
1005 level->DownHyst = 0; 1005 level->DownHyst = data->current_profile_setting.sclk_down_hyst;
1006 level->VoltageDownHyst = 0; 1006 level->VoltageDownHyst = 0;
1007 level->PowerThrottle = 0; 1007 level->PowerThrottle = 0;
1008 1008
@@ -1059,7 +1059,7 @@ static int fiji_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
1059 for (i = 0; i < dpm_table->sclk_table.count; i++) { 1059 for (i = 0; i < dpm_table->sclk_table.count; i++) {
1060 result = fiji_populate_single_graphic_level(hwmgr, 1060 result = fiji_populate_single_graphic_level(hwmgr,
1061 dpm_table->sclk_table.dpm_levels[i].value, 1061 dpm_table->sclk_table.dpm_levels[i].value,
1062 data->sclk_activity_target, 1062 data->current_profile_setting.sclk_activity,
1063 &levels[i]); 1063 &levels[i]);
1064 if (result) 1064 if (result)
1065 return result; 1065 return result;
@@ -1222,10 +1222,10 @@ static int fiji_populate_single_memory_level(struct pp_hwmgr *hwmgr,
1222 1222
1223 mem_level->EnabledForThrottle = 1; 1223 mem_level->EnabledForThrottle = 1;
1224 mem_level->EnabledForActivity = 0; 1224 mem_level->EnabledForActivity = 0;
1225 mem_level->UpHyst = 0; 1225 mem_level->UpHyst = data->current_profile_setting.mclk_up_hyst;
1226 mem_level->DownHyst = 100; 1226 mem_level->DownHyst = data->current_profile_setting.mclk_down_hyst;
1227 mem_level->VoltageDownHyst = 0; 1227 mem_level->VoltageDownHyst = 0;
1228 mem_level->ActivityLevel = data->mclk_activity_target; 1228 mem_level->ActivityLevel = data->current_profile_setting.mclk_activity;
1229 mem_level->StutterEnable = false; 1229 mem_level->StutterEnable = false;
1230 1230
1231 mem_level->DisplayWatermark = PPSMC_DISPLAY_WATERMARK_LOW; 1231 mem_level->DisplayWatermark = PPSMC_DISPLAY_WATERMARK_LOW;
@@ -1443,7 +1443,7 @@ static int fiji_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
1443 table->MemoryACPILevel.DownHyst = 100; 1443 table->MemoryACPILevel.DownHyst = 100;
1444 table->MemoryACPILevel.VoltageDownHyst = 0; 1444 table->MemoryACPILevel.VoltageDownHyst = 0;
1445 table->MemoryACPILevel.ActivityLevel = 1445 table->MemoryACPILevel.ActivityLevel =
1446 PP_HOST_TO_SMC_US(data->mclk_activity_target); 1446 PP_HOST_TO_SMC_US(data->current_profile_setting.mclk_activity);
1447 1447
1448 table->MemoryACPILevel.StutterEnable = false; 1448 table->MemoryACPILevel.StutterEnable = false;
1449 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MclkFrequency); 1449 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MclkFrequency);
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
index 5cf588d6660c..bf58a684d624 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/iceland_smumgr.c
@@ -928,8 +928,8 @@ static int iceland_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
928 graphic_level->EnabledForActivity = 0; 928 graphic_level->EnabledForActivity = 0;
929 /* this level can be used for throttling.*/ 929 /* this level can be used for throttling.*/
930 graphic_level->EnabledForThrottle = 1; 930 graphic_level->EnabledForThrottle = 1;
931 graphic_level->UpHyst = 0; 931 graphic_level->UpHyst = data->current_profile_setting.sclk_up_hyst;
932 graphic_level->DownHyst = 100; 932 graphic_level->DownHyst = data->current_profile_setting.sclk_down_hyst;
933 graphic_level->VoltageDownHyst = 0; 933 graphic_level->VoltageDownHyst = 0;
934 graphic_level->PowerThrottle = 0; 934 graphic_level->PowerThrottle = 0;
935 935
@@ -985,7 +985,7 @@ static int iceland_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
985 for (i = 0; i < dpm_table->sclk_table.count; i++) { 985 for (i = 0; i < dpm_table->sclk_table.count; i++) {
986 result = iceland_populate_single_graphic_level(hwmgr, 986 result = iceland_populate_single_graphic_level(hwmgr,
987 dpm_table->sclk_table.dpm_levels[i].value, 987 dpm_table->sclk_table.dpm_levels[i].value,
988 data->sclk_activity_target, 988 data->current_profile_setting.sclk_activity,
989 &(smu_data->smc_state_table.GraphicsLevel[i])); 989 &(smu_data->smc_state_table.GraphicsLevel[i]));
990 if (result != 0) 990 if (result != 0)
991 return result; 991 return result;
@@ -1271,12 +1271,12 @@ static int iceland_populate_single_memory_level(
1271 1271
1272 memory_level->EnabledForThrottle = 1; 1272 memory_level->EnabledForThrottle = 1;
1273 memory_level->EnabledForActivity = 0; 1273 memory_level->EnabledForActivity = 0;
1274 memory_level->UpHyst = 0; 1274 memory_level->UpHyst = data->current_profile_setting.mclk_up_hyst;
1275 memory_level->DownHyst = 100; 1275 memory_level->DownHyst = data->current_profile_setting.mclk_down_hyst;
1276 memory_level->VoltageDownHyst = 0; 1276 memory_level->VoltageDownHyst = 0;
1277 1277
1278 /* Indicates maximum activity level for this performance level.*/ 1278 /* Indicates maximum activity level for this performance level.*/
1279 memory_level->ActivityLevel = data->mclk_activity_target; 1279 memory_level->ActivityLevel = data->current_profile_setting.mclk_activity;
1280 memory_level->StutterEnable = 0; 1280 memory_level->StutterEnable = 0;
1281 memory_level->StrobeEnable = 0; 1281 memory_level->StrobeEnable = 0;
1282 memory_level->EdcReadEnable = 0; 1282 memory_level->EdcReadEnable = 0;
@@ -1557,7 +1557,7 @@ static int iceland_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
1557 table->MemoryACPILevel.DownHyst = 100; 1557 table->MemoryACPILevel.DownHyst = 100;
1558 table->MemoryACPILevel.VoltageDownHyst = 0; 1558 table->MemoryACPILevel.VoltageDownHyst = 0;
1559 /* Indicates maximum activity level for this performance level.*/ 1559 /* Indicates maximum activity level for this performance level.*/
1560 table->MemoryACPILevel.ActivityLevel = PP_HOST_TO_SMC_US(data->mclk_activity_target); 1560 table->MemoryACPILevel.ActivityLevel = PP_HOST_TO_SMC_US(data->current_profile_setting.mclk_activity);
1561 1561
1562 table->MemoryACPILevel.StutterEnable = 0; 1562 table->MemoryACPILevel.StutterEnable = 0;
1563 table->MemoryACPILevel.StrobeEnable = 0; 1563 table->MemoryACPILevel.StrobeEnable = 0;
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
index f9856e1c89ff..d2f8e34e0a4e 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/polaris10_smumgr.c
@@ -968,8 +968,8 @@ static int polaris10_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
968 level->CcPwrDynRm1 = 0; 968 level->CcPwrDynRm1 = 0;
969 level->EnabledForActivity = 0; 969 level->EnabledForActivity = 0;
970 level->EnabledForThrottle = 1; 970 level->EnabledForThrottle = 1;
971 level->UpHyst = 10; 971 level->UpHyst = data->current_profile_setting.sclk_up_hyst;
972 level->DownHyst = 0; 972 level->DownHyst = data->current_profile_setting.sclk_down_hyst;
973 level->VoltageDownHyst = 0; 973 level->VoltageDownHyst = 0;
974 level->PowerThrottle = 0; 974 level->PowerThrottle = 0;
975 data->display_timing.min_clock_in_sr = hwmgr->display_config.min_core_set_clock_in_sr; 975 data->display_timing.min_clock_in_sr = hwmgr->display_config.min_core_set_clock_in_sr;
@@ -1033,7 +1033,7 @@ static int polaris10_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
1033 1033
1034 result = polaris10_populate_single_graphic_level(hwmgr, 1034 result = polaris10_populate_single_graphic_level(hwmgr,
1035 dpm_table->sclk_table.dpm_levels[i].value, 1035 dpm_table->sclk_table.dpm_levels[i].value,
1036 hw_data->sclk_activity_target, 1036 hw_data->current_profile_setting.sclk_activity,
1037 &(smu_data->smc_state_table.GraphicsLevel[i])); 1037 &(smu_data->smc_state_table.GraphicsLevel[i]));
1038 if (result) 1038 if (result)
1039 return result; 1039 return result;
@@ -1130,10 +1130,10 @@ static int polaris10_populate_single_memory_level(struct pp_hwmgr *hwmgr,
1130 mem_level->MclkFrequency = clock; 1130 mem_level->MclkFrequency = clock;
1131 mem_level->EnabledForThrottle = 1; 1131 mem_level->EnabledForThrottle = 1;
1132 mem_level->EnabledForActivity = 0; 1132 mem_level->EnabledForActivity = 0;
1133 mem_level->UpHyst = 0; 1133 mem_level->UpHyst = data->current_profile_setting.mclk_up_hyst;
1134 mem_level->DownHyst = 100; 1134 mem_level->DownHyst = data->current_profile_setting.mclk_down_hyst;
1135 mem_level->VoltageDownHyst = 0; 1135 mem_level->VoltageDownHyst = 0;
1136 mem_level->ActivityLevel = data->mclk_activity_target; 1136 mem_level->ActivityLevel = data->current_profile_setting.mclk_activity;
1137 mem_level->StutterEnable = false; 1137 mem_level->StutterEnable = false;
1138 mem_level->DisplayWatermark = PPSMC_DISPLAY_WATERMARK_LOW; 1138 mem_level->DisplayWatermark = PPSMC_DISPLAY_WATERMARK_LOW;
1139 1139
@@ -1314,7 +1314,7 @@ static int polaris10_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
1314 table->MemoryACPILevel.DownHyst = 100; 1314 table->MemoryACPILevel.DownHyst = 100;
1315 table->MemoryACPILevel.VoltageDownHyst = 0; 1315 table->MemoryACPILevel.VoltageDownHyst = 0;
1316 table->MemoryACPILevel.ActivityLevel = 1316 table->MemoryACPILevel.ActivityLevel =
1317 PP_HOST_TO_SMC_US(data->mclk_activity_target); 1317 PP_HOST_TO_SMC_US(data->current_profile_setting.mclk_activity);
1318 1318
1319 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MclkFrequency); 1319 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MclkFrequency);
1320 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MinVoltage); 1320 CONVERT_FROM_HOST_TO_SMC_UL(table->MemoryACPILevel.MinVoltage);
diff --git a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
index ce6e740074af..70888478533f 100644
--- a/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
+++ b/drivers/gpu/drm/amd/powerplay/smumgr/tonga_smumgr.c
@@ -644,8 +644,8 @@ static int tonga_populate_single_graphic_level(struct pp_hwmgr *hwmgr,
644 graphic_level->EnabledForActivity = 0; 644 graphic_level->EnabledForActivity = 0;
645 /* this level can be used for throttling.*/ 645 /* this level can be used for throttling.*/
646 graphic_level->EnabledForThrottle = 1; 646 graphic_level->EnabledForThrottle = 1;
647 graphic_level->UpHyst = 0; 647 graphic_level->UpHyst = data->current_profile_setting.sclk_up_hyst;
648 graphic_level->DownHyst = 0; 648 graphic_level->DownHyst = data->current_profile_setting.sclk_down_hyst;
649 graphic_level->VoltageDownHyst = 0; 649 graphic_level->VoltageDownHyst = 0;
650 graphic_level->PowerThrottle = 0; 650 graphic_level->PowerThrottle = 0;
651 651
@@ -704,7 +704,7 @@ static int tonga_populate_all_graphic_levels(struct pp_hwmgr *hwmgr)
704 for (i = 0; i < dpm_table->sclk_table.count; i++) { 704 for (i = 0; i < dpm_table->sclk_table.count; i++) {
705 result = tonga_populate_single_graphic_level(hwmgr, 705 result = tonga_populate_single_graphic_level(hwmgr,
706 dpm_table->sclk_table.dpm_levels[i].value, 706 dpm_table->sclk_table.dpm_levels[i].value,
707 data->sclk_activity_target, 707 data->current_profile_setting.sclk_activity,
708 &(smu_data->smc_state_table.GraphicsLevel[i])); 708 &(smu_data->smc_state_table.GraphicsLevel[i]));
709 if (result != 0) 709 if (result != 0)
710 return result; 710 return result;
@@ -994,12 +994,12 @@ static int tonga_populate_single_memory_level(
994 994
995 memory_level->EnabledForThrottle = 1; 995 memory_level->EnabledForThrottle = 1;
996 memory_level->EnabledForActivity = 0; 996 memory_level->EnabledForActivity = 0;
997 memory_level->UpHyst = 0; 997 memory_level->UpHyst = data->current_profile_setting.mclk_up_hyst;
998 memory_level->DownHyst = 100; 998 memory_level->DownHyst = data->current_profile_setting.mclk_down_hyst;
999 memory_level->VoltageDownHyst = 0; 999 memory_level->VoltageDownHyst = 0;
1000 1000
1001 /* Indicates maximum activity level for this performance level.*/ 1001 /* Indicates maximum activity level for this performance level.*/
1002 memory_level->ActivityLevel = data->mclk_activity_target; 1002 memory_level->ActivityLevel = data->current_profile_setting.mclk_activity;
1003 memory_level->StutterEnable = 0; 1003 memory_level->StutterEnable = 0;
1004 memory_level->StrobeEnable = 0; 1004 memory_level->StrobeEnable = 0;
1005 memory_level->EdcReadEnable = 0; 1005 memory_level->EdcReadEnable = 0;
@@ -1289,7 +1289,7 @@ static int tonga_populate_smc_acpi_level(struct pp_hwmgr *hwmgr,
1289 table->MemoryACPILevel.VoltageDownHyst = 0; 1289 table->MemoryACPILevel.VoltageDownHyst = 0;
1290 /* Indicates maximum activity level for this performance level.*/ 1290 /* Indicates maximum activity level for this performance level.*/
1291 table->MemoryACPILevel.ActivityLevel = 1291 table->MemoryACPILevel.ActivityLevel =
1292 PP_HOST_TO_SMC_US(data->mclk_activity_target); 1292 PP_HOST_TO_SMC_US(data->current_profile_setting.mclk_activity);
1293 1293
1294 table->MemoryACPILevel.StutterEnable = 0; 1294 table->MemoryACPILevel.StutterEnable = 0;
1295 table->MemoryACPILevel.StrobeEnable = 0; 1295 table->MemoryACPILevel.StrobeEnable = 0;