Skip to content

Commit 266d81d

Browse files
Evan Quanalexdeucher
authored andcommitted
drm/amd/powerplay: correct Vega20 cached smu feature state
Correct the cached smu feature state on pp_features sysfs setting. Signed-off-by: Evan Quan <[email protected]> Acked-by: Alex Deucher <[email protected]> Signed-off-by: Alex Deucher <[email protected]>
1 parent d5bbb47 commit 266d81d

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -979,28 +979,16 @@ static int vega20_disable_all_smu_features(struct pp_hwmgr *hwmgr)
979979
{
980980
struct vega20_hwmgr *data =
981981
(struct vega20_hwmgr *)(hwmgr->backend);
982-
uint64_t features_enabled;
983-
int i;
984-
bool enabled;
985-
int ret = 0;
982+
int i, ret = 0;
986983

987984
PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc(hwmgr,
988985
PPSMC_MSG_DisableAllSmuFeatures,
989986
NULL)) == 0,
990987
"[DisableAllSMUFeatures] Failed to disable all smu features!",
991988
return ret);
992989

993-
ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled);
994-
PP_ASSERT_WITH_CODE(!ret,
995-
"[DisableAllSMUFeatures] Failed to get enabled smc features!",
996-
return ret);
997-
998-
for (i = 0; i < GNLD_FEATURES_MAX; i++) {
999-
enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ?
1000-
true : false;
1001-
data->smu_features[i].enabled = enabled;
1002-
data->smu_features[i].supported = enabled;
1003-
}
990+
for (i = 0; i < GNLD_FEATURES_MAX; i++)
991+
data->smu_features[i].enabled = 0;
1004992

1005993
return 0;
1006994
}
@@ -3230,10 +3218,11 @@ static int vega20_get_ppfeature_status(struct pp_hwmgr *hwmgr, char *buf)
32303218

32313219
static int vega20_set_ppfeature_status(struct pp_hwmgr *hwmgr, uint64_t new_ppfeature_masks)
32323220
{
3233-
uint64_t features_enabled;
3234-
uint64_t features_to_enable;
3235-
uint64_t features_to_disable;
3236-
int ret = 0;
3221+
struct vega20_hwmgr *data =
3222+
(struct vega20_hwmgr *)(hwmgr->backend);
3223+
uint64_t features_enabled, features_to_enable, features_to_disable;
3224+
int i, ret = 0;
3225+
bool enabled;
32373226

32383227
if (new_ppfeature_masks >= (1ULL << GNLD_FEATURES_MAX))
32393228
return -EINVAL;
@@ -3262,6 +3251,17 @@ static int vega20_set_ppfeature_status(struct pp_hwmgr *hwmgr, uint64_t new_ppfe
32623251
return ret;
32633252
}
32643253

3254+
/* Update the cached feature enablement state */
3255+
ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled);
3256+
if (ret)
3257+
return ret;
3258+
3259+
for (i = 0; i < GNLD_FEATURES_MAX; i++) {
3260+
enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ?
3261+
true : false;
3262+
data->smu_features[i].enabled = enabled;
3263+
}
3264+
32653265
return 0;
32663266
}
32673267

0 commit comments

Comments
 (0)