On 3/12/2024 4:29 PM, Ma Jun wrote: > Sometimes user may want to enable the od feature > by setting ppfeaturemask when loading amdgpu driver. > However,not all Asics support this feature. > So we need to restore the ppfeature value and print > a warning info. > > Signed-off-by: Ma Jun <Jun.Ma2@xxxxxxx> > --- > drivers/gpu/drm/amd/pm/amdgpu_dpm.c | 15 ++++++++++++--- > drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h | 2 +- > 2 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > index f84bfed50681..d777056b2f9d 100644 > --- a/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > +++ b/drivers/gpu/drm/amd/pm/amdgpu_dpm.c > @@ -1548,12 +1548,14 @@ int amdgpu_dpm_get_smu_prv_buf_details(struct amdgpu_device *adev, > return ret; > } > > -int amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev) > +bool amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev) > { > + bool od_support; > + > if (is_support_sw_smu(adev)) { > struct smu_context *smu = adev->powerplay.pp_handle; > > - return (smu->od_enabled || smu->is_apu); > + od_support = (smu->od_enabled || smu->is_apu); > } else { > struct pp_hwmgr *hwmgr; > > @@ -1566,8 +1568,15 @@ int amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev) > > hwmgr = (struct pp_hwmgr *)adev->powerplay.pp_handle; > > - return hwmgr->od_enabled; > + od_support = hwmgr->od_enabled; > + } > + > + if (!od_support && (adev->pm.pp_feature & PP_OVERDRIVE_MASK)) { > + adev->pm.pp_feature &= ~PP_OVERDRIVE_MASK; > + DRM_WARN("overdrive feature is not supported\n"); > } > + > + return od_support; Instead of doing this inside DPM API, suggest to keep it outside towards the end of initialization phase. Thanks, Lijo > } > > int amdgpu_dpm_set_pp_table(struct amdgpu_device *adev, > diff --git a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h > index 621200e0823f..0635f9d3a61a 100644 > --- a/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h > +++ b/drivers/gpu/drm/amd/pm/inc/amdgpu_dpm.h > @@ -551,7 +551,7 @@ int amdgpu_dpm_debugfs_print_current_performance_level(struct amdgpu_device *ade > int amdgpu_dpm_get_smu_prv_buf_details(struct amdgpu_device *adev, > void **addr, > size_t *size); > -int amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev); > +bool amdgpu_dpm_is_overdrive_supported(struct amdgpu_device *adev); > int amdgpu_dpm_set_pp_table(struct amdgpu_device *adev, > const char *buf, > size_t size);