All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] drm/amd/powerplay: avoid unnecessary dpm level setting
@ 2019-01-17 11:48 Evan Quan
       [not found] ` <20190117114801.7573-1-evan.quan-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Evan Quan @ 2019-01-17 11:48 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Evan Quan

No dpm level setting is needed when the request level
is actually same as current.

Change-Id: I3ffa0b111a7b37f78a6a4dc1a36d49f0496dd6f9
Signed-off-by: Evan Quan <evan.quan@amd.com>
---
 drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
index 56437866d120..68f3dcaa8070 100644
--- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
+++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
@@ -278,7 +278,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
 
 	phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
 
-	if (!phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
+	if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
+	    !phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
 		hwmgr->dpm_level = hwmgr->request_dpm_level;
 
 	if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) {
-- 
2.20.1

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/2] drm/amd/powerplay: enforce display related settings only on needed
       [not found] ` <20190117114801.7573-1-evan.quan-5C7GfCeVMHo@public.gmane.org>
@ 2019-01-17 11:48   ` Evan Quan
       [not found]     ` <20190117114801.7573-2-evan.quan-5C7GfCeVMHo@public.gmane.org>
  2019-01-17 15:39   ` [PATCH 1/2] drm/amd/powerplay: avoid unnecessary dpm level setting Alex Deucher
  1 sibling, 1 reply; 4+ messages in thread
From: Evan Quan @ 2019-01-17 11:48 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Evan Quan

No display related settings are needed on dpm level change.

Change-Id: I86b32687a3bc14521be89dd4a3c9fb7de7f06c4b
Signed-off-by: Evan Quan <evan.quan@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@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH 1/2] drm/amd/powerplay: avoid unnecessary dpm level setting
       [not found] ` <20190117114801.7573-1-evan.quan-5C7GfCeVMHo@public.gmane.org>
  2019-01-17 11:48   ` [PATCH 2/2] drm/amd/powerplay: enforce display related settings only on needed Evan Quan
@ 2019-01-17 15:39   ` Alex Deucher
  1 sibling, 0 replies; 4+ messages in thread
From: Alex Deucher @ 2019-01-17 15:39 UTC (permalink / raw)
  To: Evan Quan; +Cc: amd-gfx list

On Thu, Jan 17, 2019 at 6:48 AM Evan Quan <evan.quan@amd.com> wrote:
>
> No dpm level setting is needed when the request level
> is actually same as current.
>
> Change-Id: I3ffa0b111a7b37f78a6a4dc1a36d49f0496dd6f9
> Signed-off-by: Evan Quan <evan.quan@amd.com>

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

> ---
>  drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> index 56437866d120..68f3dcaa8070 100644
> --- a/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> +++ b/drivers/gpu/drm/amd/powerplay/hwmgr/pp_psm.c
> @@ -278,7 +278,8 @@ int psm_adjust_power_state_dynamic(struct pp_hwmgr *hwmgr, bool skip,
>
>         phm_notify_smc_display_config_after_ps_adjustment(hwmgr);
>
> -       if (!phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
> +       if ((hwmgr->request_dpm_level != hwmgr->dpm_level) &&
> +           !phm_force_dpm_levels(hwmgr, hwmgr->request_dpm_level))
>                 hwmgr->dpm_level = hwmgr->request_dpm_level;
>
>         if (hwmgr->dpm_level != AMD_DPM_FORCED_LEVEL_MANUAL) {
> --
> 2.20.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH 2/2] drm/amd/powerplay: enforce display related settings only on needed
       [not found]     ` <20190117114801.7573-2-evan.quan-5C7GfCeVMHo@public.gmane.org>
@ 2019-01-17 15:44       ` Alex Deucher
  0 siblings, 0 replies; 4+ messages in thread
From: Alex Deucher @ 2019-01-17 15:44 UTC (permalink / raw)
  To: Evan Quan; +Cc: amd-gfx list

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

On Thu, Jan 17, 2019 at 6:48 AM Evan Quan <evan.quan@amd.com> wrote:
>
> No display related settings are needed on dpm level change.
>
> Change-Id: I86b32687a3bc14521be89dd4a3c9fb7de7f06c4b
> Signed-off-by: Evan Quan <evan.quan@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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-01-17 15:44 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-17 11:48 [PATCH 1/2] drm/amd/powerplay: avoid unnecessary dpm level setting Evan Quan
     [not found] ` <20190117114801.7573-1-evan.quan-5C7GfCeVMHo@public.gmane.org>
2019-01-17 11:48   ` [PATCH 2/2] drm/amd/powerplay: enforce display related settings only on needed Evan Quan
     [not found]     ` <20190117114801.7573-2-evan.quan-5C7GfCeVMHo@public.gmane.org>
2019-01-17 15:44       ` Alex Deucher
2019-01-17 15:39   ` [PATCH 1/2] drm/amd/powerplay: avoid unnecessary dpm level setting Alex Deucher

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.