[PATCH v3 3/3] drm/amdgpu/pm: Don't show pp_power_profile_mode for unsupported devices
Lazar, Lijo
lijo.lazar at amd.com
Tue Nov 2 08:17:31 UTC 2021
On 11/2/2021 2:58 AM, Mario Limonciello wrote:
> This command corresponding to this attribute was deprecated in the PMFW
> for YC so don't show a non-functional attribute.
>
Now it's a generic patch, not specific to YC. Maybe a generic one like
"for ASICs not supporting power profile mode, don't show the attribute".
Series is
Reviewed-by: Lijo Lazar <lijo.lazar at amd.com>
Thanks,
Lijo
> Verify that the function has been implemented by the subsystem.
>
> Suggested-by: Alex Deucher <alexander.deucher at amd.com>
> Signed-off-by: Mario Limonciello <mario.limonciello at amd.com>
> ---
> Changes from v2->v3:
> * Handle powerplay to return this as well
>
> drivers/gpu/drm/amd/pm/amdgpu_pm.c | 4 ++++
> drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c | 14 ++------------
> drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c | 11 +++++++----
> 3 files changed, 13 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/pm/amdgpu_pm.c b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> index 49fe4155c374..41472ed99253 100644
> --- a/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/pm/amdgpu_pm.c
> @@ -2094,6 +2094,10 @@ static int default_attr_update(struct amdgpu_device *adev, struct amdgpu_device_
> } else if (DEVICE_ATTR_IS(pp_dpm_dclk)) {
> if (!(asic_type == CHIP_VANGOGH || asic_type == CHIP_SIENNA_CICHLID))
> *states = ATTR_STATE_UNSUPPORTED;
> + } else if (DEVICE_ATTR_IS(pp_power_profile_mode)) {
> + if (!adev->powerplay.pp_funcs->get_power_profile_mode ||
> + amdgpu_dpm_get_power_profile_mode(adev, NULL) == -EOPNOTSUPP)
> + *states = ATTR_STATE_UNSUPPORTED;
> }
>
> switch (asic_type) {
> diff --git a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
> index 79e565121206..8d796ed3b7d1 100644
> --- a/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
> +++ b/drivers/gpu/drm/amd/pm/powerplay/amd_powerplay.c
> @@ -877,16 +877,11 @@ static int pp_get_power_profile_mode(void *handle, char *buf)
> struct pp_hwmgr *hwmgr = handle;
> int ret;
>
> - if (!hwmgr || !hwmgr->pm_en)
> + if (!hwmgr || !hwmgr->pm_en || !hwmgr->hwmgr_func->get_power_profile_mode)
> return -EOPNOTSUPP;
> if (!buf)
> return -EINVAL;
>
> - if (hwmgr->hwmgr_func->get_power_profile_mode == NULL) {
> - pr_info_ratelimited("%s was not implemented.\n", __func__);
> - return snprintf(buf, PAGE_SIZE, "\n");
> - }
> -
> mutex_lock(&hwmgr->smu_lock);
> ret = hwmgr->hwmgr_func->get_power_profile_mode(hwmgr, buf);
> mutex_unlock(&hwmgr->smu_lock);
> @@ -898,13 +893,8 @@ static int pp_set_power_profile_mode(void *handle, long *input, uint32_t size)
> struct pp_hwmgr *hwmgr = handle;
> int ret = -EOPNOTSUPP;
>
> - if (!hwmgr || !hwmgr->pm_en)
> - return ret;
> -
> - if (hwmgr->hwmgr_func->set_power_profile_mode == NULL) {
> - pr_info_ratelimited("%s was not implemented.\n", __func__);
> + if (!hwmgr || !hwmgr->pm_en || !hwmgr->hwmgr_func->set_power_profile_mode)
> return ret;
> - }
>
> if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) {
> pr_debug("power profile setting is for manual dpm mode only.\n");
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index b06c59dcc1b4..821ae6e78703 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -2534,13 +2534,15 @@ static int smu_get_power_profile_mode(void *handle, char *buf)
> struct smu_context *smu = handle;
> int ret = 0;
>
> - if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
> + if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled ||
> + !smu->ppt_funcs->get_power_profile_mode)
> return -EOPNOTSUPP;
> + if (!buf)
> + return -EINVAL;
>
> mutex_lock(&smu->mutex);
>
> - if (smu->ppt_funcs->get_power_profile_mode)
> - ret = smu->ppt_funcs->get_power_profile_mode(smu, buf);
> + ret = smu->ppt_funcs->get_power_profile_mode(smu, buf);
>
> mutex_unlock(&smu->mutex);
>
> @@ -2554,7 +2556,8 @@ static int smu_set_power_profile_mode(void *handle,
> struct smu_context *smu = handle;
> int ret = 0;
>
> - if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled)
> + if (!smu->pm_enabled || !smu->adev->pm.dpm_enabled ||
> + !smu->ppt_funcs->set_power_profile_mode)
> return -EOPNOTSUPP;
>
> mutex_lock(&smu->mutex);
>
More information about the amd-gfx
mailing list