Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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 <evan.quan@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Evan Quan and committed by
Alex Deucher
7358462f 1d447326

+19 -19
+19 -19
drivers/gpu/drm/amd/powerplay/hwmgr/vega20_hwmgr.c
··· 984 984 { 985 985 struct vega20_hwmgr *data = 986 986 (struct vega20_hwmgr *)(hwmgr->backend); 987 - uint64_t features_enabled; 988 - int i; 989 - bool enabled; 990 - int ret = 0; 987 + int i, ret = 0; 991 988 992 989 PP_ASSERT_WITH_CODE((ret = smum_send_msg_to_smc(hwmgr, 993 990 PPSMC_MSG_DisableAllSmuFeatures, ··· 992 995 "[DisableAllSMUFeatures] Failed to disable all smu features!", 993 996 return ret); 994 997 995 - ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled); 996 - PP_ASSERT_WITH_CODE(!ret, 997 - "[DisableAllSMUFeatures] Failed to get enabled smc features!", 998 - return ret); 999 - 1000 - for (i = 0; i < GNLD_FEATURES_MAX; i++) { 1001 - enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ? 1002 - true : false; 1003 - data->smu_features[i].enabled = enabled; 1004 - data->smu_features[i].supported = enabled; 1005 - } 998 + for (i = 0; i < GNLD_FEATURES_MAX; i++) 999 + data->smu_features[i].enabled = 0; 1006 1000 1007 1001 return 0; 1008 1002 } ··· 3230 3242 3231 3243 static int vega20_set_ppfeature_status(struct pp_hwmgr *hwmgr, uint64_t new_ppfeature_masks) 3232 3244 { 3233 - uint64_t features_enabled; 3234 - uint64_t features_to_enable; 3235 - uint64_t features_to_disable; 3236 - int ret = 0; 3245 + struct vega20_hwmgr *data = 3246 + (struct vega20_hwmgr *)(hwmgr->backend); 3247 + uint64_t features_enabled, features_to_enable, features_to_disable; 3248 + int i, ret = 0; 3249 + bool enabled; 3237 3250 3238 3251 if (new_ppfeature_masks >= (1ULL << GNLD_FEATURES_MAX)) 3239 3252 return -EINVAL; ··· 3261 3272 ret = vega20_enable_smc_features(hwmgr, true, features_to_enable); 3262 3273 if (ret) 3263 3274 return ret; 3275 + } 3276 + 3277 + /* Update the cached feature enablement state */ 3278 + ret = vega20_get_enabled_smc_features(hwmgr, &features_enabled); 3279 + if (ret) 3280 + return ret; 3281 + 3282 + for (i = 0; i < GNLD_FEATURES_MAX; i++) { 3283 + enabled = (features_enabled & data->smu_features[i].smu_feature_bitmap) ? 3284 + true : false; 3285 + data->smu_features[i].enabled = enabled; 3264 3286 } 3265 3287 3266 3288 return 0;