[PATCH 2/2] drm/amd/powerplay: enforce display related settings only on needed

Alex Deucher alexdeucher at gmail.com
Thu Jan 17 15:44:04 UTC 2019


Reviewed-by: Alex Deucher <alexander.deucher at amd.com>

On Thu, Jan 17, 2019 at 6:48 AM Evan Quan <evan.quan at amd.com> wrote:
>
> No display related settings are needed on dpm level change.
>
> Change-Id: I86b32687a3bc14521be89dd4a3c9fb7de7f06c4b
> Signed-off-by: Evan Quan <evan.quan at amd.com>
> ---
>  drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c  | 10 +++++-----
>  drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c | 11 +++++------
>  drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h |  2 +-
>  3 files changed, 11 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> index 310b102a9292..6cd6497c6fc2 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/hwmgr.c
> @@ -273,7 +273,7 @@ int hwmgr_hw_fini(struct pp_hwmgr *hwmgr)
>
>         phm_stop_thermal_controller(hwmgr);
>         psm_set_boot_states(hwmgr);
> -       psm_adjust_power_state_dynamic(hwmgr, false, NULL);
> +       psm_adjust_power_state_dynamic(hwmgr, true, NULL);
>         phm_disable_dynamic_state_management(hwmgr);
>         phm_disable_clock_power_gatings(hwmgr);
>
> @@ -295,7 +295,7 @@ int hwmgr_suspend(struct pp_hwmgr *hwmgr)
>         ret = psm_set_boot_states(hwmgr);
>         if (ret)
>                 return ret;
> -       ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
> +       ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
>         if (ret)
>                 return ret;
>         ret = phm_power_down_asic(hwmgr);
> @@ -325,7 +325,7 @@ int hwmgr_resume(struct pp_hwmgr *hwmgr)
>         if (ret)
>                 return ret;
>
> -       ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
> +       ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
>
>         return ret;
>  }
> @@ -379,12 +379,12 @@ int hwmgr_handle_task(struct pp_hwmgr *hwmgr, enum amd_pp_task task_id,
>                 ret = psm_set_user_performance_state(hwmgr, requested_ui_label, &requested_ps);
>                 if (ret)
>                         return ret;
> -               ret = psm_adjust_power_state_dynamic(hwmgr, false, requested_ps);
> +               ret = psm_adjust_power_state_dynamic(hwmgr, true, requested_ps);
>                 break;
>         }
>         case AMD_PP_TASK_COMPLETE_INIT:
>         case AMD_PP_TASK_READJUST_POWER_STATE:
> -               ret = psm_adjust_power_state_dynamic(hwmgr, false, NULL);
> +               ret = psm_adjust_power_state_dynamic(hwmgr, true, NULL);
>                 break;
>         default:
>                 break;
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> index 68f3dcaa8070..ce177d7f04cb 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> @@ -256,16 +256,14 @@ static void power_state_management(struct pp_hwmgr *hwmgr,
>         }
>  }
>
> -int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
> +int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip_display_settings,
>                                                 struct pp_power_state *new_ps)
>  {
>         uint32_t index;
>         long workload;
>
> -       if (skip)
> -               return 0;
> -
> -       phm_display_configuration_changed(hwmgr);
> +       if (!skip_display_settings)
> +               phm_display_configuration_changed(hwmgr);
>
>         if (hwmgr->ps)
>                 power_state_management(hwmgr, new_ps);
> @@ -276,7 +274,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
>                  */
>                 phm_apply_clock_adjust_rules(hwmgr);
>
> -       phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
> +       if (!skip_display_settings)
> +               phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
>
>         if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
>             !phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
> index fa1b6825036a..b62d55f1f289 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.h
> @@ -34,7 +34,7 @@ int psm_set_user_performance_state(struct pp_hwmgr *hwmgr,
>                                         enum PP_StateUILabel label_id,
>                                         struct pp_power_state **state);
>  int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr,
> -                               bool skip,
> +                               bool skip_display_settings,
>                                 struct pp_power_state *new_ps);
>
>  #endif
> --
> 2.20.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list