@@ -979,28 +979,16 @@ static int vega20_disable_all_smu_features(struct pp_hwmgr *hwmgr)
979
979
{
980
980
struct vega20_hwmgr * data =
981
981
(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 ;
986
983
987
984
PP_ASSERT_WITH_CODE ((ret = smum_send_msg_to_smc (hwmgr ,
988
985
PPSMC_MSG_DisableAllSmuFeatures ,
989
986
NULL )) == 0 ,
990
987
"[DisableAllSMUFeatures] Failed to disable all smu features!" ,
991
988
return ret );
992
989
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 ;
1004
992
1005
993
return 0 ;
1006
994
}
@@ -3230,10 +3218,11 @@ static int vega20_get_ppfeature_status(struct pp_hwmgr *hwmgr, char *buf)
3230
3218
3231
3219
static int vega20_set_ppfeature_status (struct pp_hwmgr * hwmgr , uint64_t new_ppfeature_masks )
3232
3220
{
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 ;
3237
3226
3238
3227
if (new_ppfeature_masks >= (1ULL << GNLD_FEATURES_MAX ))
3239
3228
return - EINVAL ;
@@ -3262,6 +3251,17 @@ static int vega20_set_ppfeature_status(struct pp_hwmgr *hwmgr, uint64_t new_ppfe
3262
3251
return ret ;
3263
3252
}
3264
3253
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
+
3265
3265
return 0 ;
3266
3266
}
3267
3267
0 commit comments