All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] drm/amd/powerplay: add limit of pp_feature for smu (v2)
@ 2019-02-26  8:15 likun Gao
       [not found] ` <1551168913-17088-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: likun Gao @ 2019-02-26  8:15 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW
  Cc: Alex Deucher, Likun Gao, Huang Rui

From: Likun Gao <Likun.Gao@amd.com>

Move pp_feature from the struct of amd_powerplay to amdgpu_device.
Add pp_feature limit for overdrive interface.

v2: put pp_feature into struct amdgpu_pm.

Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Kevin Wang <kevin1.wang@amd.com>
Suggested-by: Alex Deucher <alexander.deucher@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu.h            | 1 -
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c     | 2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h        | 3 +++
 drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c        | 2 +-
 drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c         | 6 ++++--
 drivers/gpu/drm/amd/amdgpu/ci_dpm.c            | 2 +-
 drivers/gpu/drm/amd/amdgpu/kv_dpm.c            | 2 +-
 drivers/gpu/drm/amd/amdgpu/soc15.c             | 2 +-
 drivers/gpu/drm/amd/powerplay/amd_powerplay.c  | 2 +-
 drivers/gpu/drm/amd/powerplay/amdgpu_smu.c     | 4 ++++
 drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 3 +++
 11 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
index e4ff186..5b82579 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
@@ -704,7 +704,6 @@ enum amd_hw_ip_block_type {
 struct amd_powerplay {
 	void *pp_handle;
 	const struct amd_pm_funcs *pp_funcs;
-	uint32_t pp_feature;
 };
 
 #define AMDGPU_RESET_MAGIC_NUM 64
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index e20dce4..ec7cb627 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -1506,7 +1506,7 @@ static int amdgpu_device_ip_early_init(struct amdgpu_device *adev)
 			return -EAGAIN;
 	}
 
-	adev->powerplay.pp_feature = amdgpu_pp_feature_mask;
+	adev->pm.pp_feature = amdgpu_pp_feature_mask;
 
 	for (i = 0; i < adev->num_ip_blocks; i++) {
 		if ((amdgpu_ip_block_mask & (1 << i)) == 0) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
index 2278489..077d710 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
@@ -445,6 +445,9 @@ struct amdgpu_pm {
 	uint32_t                smu_prv_buffer_size;
 	struct amdgpu_bo        *smu_prv_buffer;
 	bool ac_power;
+	/* powerplay feature */
+	uint32_t pp_feature;
+
 };
 
 #define R600_SSTU_DFLT                               0
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
index 97a60da..997932e 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
@@ -390,7 +390,7 @@ void amdgpu_gfx_compute_mqd_sw_fini(struct amdgpu_device *adev)
 
 void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)
 {
-	if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK))
+	if (!(adev->pm.pp_feature & PP_GFXOFF_MASK))
 		return;
 
 	if (!adev->powerplay.pp_funcs || !adev->powerplay.pp_funcs->set_powergating_by_smu)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index ba9a5c9..2b9bbba 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -2557,7 +2557,8 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device *adev)
 				"pp_power_profile_mode\n");
 		return ret;
 	}
-	if (is_support_sw_smu(adev) || hwmgr->od_enabled) {
+	if ((is_support_sw_smu(adev) && adev->smu.od_enabled) ||
+	    (!is_support_sw_smu(adev) && hwmgr->od_enabled)) {
 		ret = device_create_file(adev->dev,
 				&dev_attr_pp_od_clk_voltage);
 		if (ret) {
@@ -2633,7 +2634,8 @@ void amdgpu_pm_sysfs_fini(struct amdgpu_device *adev)
 	device_remove_file(adev->dev, &dev_attr_pp_mclk_od);
 	device_remove_file(adev->dev,
 			&dev_attr_pp_power_profile_mode);
-	if (hwmgr->od_enabled)
+	if ((is_support_sw_smu(adev) && adev->smu.od_enabled) ||
+	    (!is_support_sw_smu(adev) && hwmgr->od_enabled))
 		device_remove_file(adev->dev,
 				&dev_attr_pp_od_clk_voltage);
 	device_remove_file(adev->dev, &dev_attr_gpu_busy_percent);
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
index 86e14c7..9ae65bf 100644
--- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
@@ -5903,7 +5903,7 @@ static int ci_dpm_init(struct amdgpu_device *adev)
 	pi->pcie_dpm_key_disabled = 0;
 	pi->thermal_sclk_dpm_enabled = 0;
 
-	if (adev->powerplay.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
+	if (adev->pm.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
 		pi->caps_sclk_ds = true;
 	else
 		pi->caps_sclk_ds = false;
diff --git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
index 0c9a2c0..f2e6b14 100644
--- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
@@ -2824,7 +2824,7 @@ static int kv_dpm_init(struct amdgpu_device *adev)
 		pi->caps_tcp_ramping = true;
 	}
 
-	if (adev->powerplay.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
+	if (adev->pm.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
 		pi->caps_sclk_ds = true;
 	else
 		pi->caps_sclk_ds = false;
diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c
index ed259ae..3e22a49 100644
--- a/drivers/gpu/drm/amd/amdgpu/soc15.c
+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
@@ -931,7 +931,7 @@ static int soc15_common_early_init(void *handle)
 			adev->pg_flags = AMD_PG_SUPPORT_SDMA | AMD_PG_SUPPORT_VCN;
 		}
 
-		if (adev->powerplay.pp_feature & PP_GFXOFF_MASK)
+		if (adev->pm.pp_feature & PP_GFXOFF_MASK)
 			adev->pg_flags |= AMD_PG_SUPPORT_GFX_PG |
 				AMD_PG_SUPPORT_CP |
 				AMD_PG_SUPPORT_RLC_SMU_HS;
diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
index 3f73f7c..a66917d 100644
--- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
+++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
@@ -53,7 +53,7 @@ static int amd_powerplay_create(struct amdgpu_device *adev)
 	mutex_init(&hwmgr->smu_lock);
 	hwmgr->chip_family = adev->family;
 	hwmgr->chip_id = adev->asic_type;
-	hwmgr->feature_mask = adev->powerplay.pp_feature;
+	hwmgr->feature_mask = adev->pm.pp_feature;
 	hwmgr->display_config = &adev->pm.pm_display_cfg;
 	adev->powerplay.pp_handle = hwmgr;
 	adev->powerplay.pp_funcs = &pp_dpm_funcs;
diff --git a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
index 792c3e1..a6bbac9 100644
--- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
+++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
@@ -282,6 +282,9 @@ static int smu_set_funcs(struct amdgpu_device *adev)
 
 	switch (adev->asic_type) {
 	case CHIP_VEGA20:
+		smu->feature_mask &= ~PP_GFXOFF_MASK;
+		if (smu->feature_mask & PP_OVERDRIVE_MASK)
+			smu->od_enabled = true;
 		smu_v11_0_set_smu_funcs(smu);
 		break;
 	default:
@@ -298,6 +301,7 @@ static int smu_early_init(void *handle)
 
 	smu->adev = adev;
 	mutex_init(&smu->mutex);
+	smu->feature_mask = adev->pm.pp_feature;
 
 	return smu_set_funcs(adev);
 }
diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
index b53da1a..0aa8ec2 100644
--- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
+++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
@@ -384,6 +384,7 @@ struct smu_context
 	uint32_t pstate_sclk;
 	uint32_t pstate_mclk;
 
+	bool od_enabled;
 	uint32_t power_limit;
 	uint32_t default_power_limit;
 
@@ -399,6 +400,8 @@ struct smu_context
 	uint32_t workload_setting[WORKLOAD_POLICY_MAX];
 	uint32_t power_profile_mode;
 	uint32_t default_power_profile_mode;
+
+	uint32_t feature_mask;
 };
 
 struct pptable_funcs {
-- 
2.7.4

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

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

* RE: [PATCH v2] drm/amd/powerplay: add limit of pp_feature for smu (v2)
       [not found] ` <1551168913-17088-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
@ 2019-02-26  9:57   ` Huang, Ray
  0 siblings, 0 replies; 2+ messages in thread
From: Huang, Ray @ 2019-02-26  9:57 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Deucher, Alexander, Gao, Likun

> -----Original Message-----
> From: amd-gfx [mailto:amd-gfx-bounces@lists.freedesktop.org] On Behalf
> Of likun Gao
> Sent: Tuesday, February 26, 2019 4:15 PM
> To: amd-gfx@lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher@amd.com>; Gao, Likun
> <Likun.Gao@amd.com>; Huang, Ray <Ray.Huang@amd.com>
> Subject: [PATCH v2] drm/amd/powerplay: add limit of pp_feature for smu
> (v2)
> 
> From: Likun Gao <Likun.Gao@amd.com>
> 
> Move pp_feature from the struct of amd_powerplay to amdgpu_device.
> Add pp_feature limit for overdrive interface.
> 
> v2: put pp_feature into struct amdgpu_pm.
> 
> Signed-off-by: Likun Gao <Likun.Gao@amd.com>
> Reviewed-by: Kevin Wang <kevin1.wang@amd.com>
> Suggested-by: Alex Deucher <alexander.deucher@amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu.h            | 1 -
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c     | 2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h        | 3 +++
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c        | 2 +-
>  drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c         | 6 ++++--
>  drivers/gpu/drm/amd/amdgpu/ci_dpm.c            | 2 +-
>  drivers/gpu/drm/amd/amdgpu/kv_dpm.c            | 2 +-
>  drivers/gpu/drm/amd/amdgpu/soc15.c             | 2 +-
>  drivers/gpu/drm/amd/powerplay/amd_powerplay.c  | 2 +-
>  drivers/gpu/drm/amd/powerplay/amdgpu_smu.c     | 4 ++++
>  drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h | 3 +++
>  11 files changed, 20 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> index e4ff186..5b82579 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h
> @@ -704,7 +704,6 @@ enum amd_hw_ip_block_type {  struct
> amd_powerplay {
>  	void *pp_handle;
>  	const struct amd_pm_funcs *pp_funcs;
> -	uint32_t pp_feature;
>  };
> 
>  #define AMDGPU_RESET_MAGIC_NUM 64
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index e20dce4..ec7cb627 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -1506,7 +1506,7 @@ static int amdgpu_device_ip_early_init(struct
> amdgpu_device *adev)
>  			return -EAGAIN;
>  	}
> 
> -	adev->powerplay.pp_feature = amdgpu_pp_feature_mask;
> +	adev->pm.pp_feature = amdgpu_pp_feature_mask;
> 
>  	for (i = 0; i < adev->num_ip_blocks; i++) {
>  		if ((amdgpu_ip_block_mask & (1 << i)) == 0) { diff --git
> a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> index 2278489..077d710 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_dpm.h
> @@ -445,6 +445,9 @@ struct amdgpu_pm {
>  	uint32_t                smu_prv_buffer_size;
>  	struct amdgpu_bo        *smu_prv_buffer;
>  	bool ac_power;
> +	/* powerplay feature */
> +	uint32_t pp_feature;
> +
>  };
> 
>  #define R600_SSTU_DFLT                               0
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index 97a60da..997932e 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -390,7 +390,7 @@ void amdgpu_gfx_compute_mqd_sw_fini(struct
> amdgpu_device *adev)
> 
>  void amdgpu_gfx_off_ctrl(struct amdgpu_device *adev, bool enable)  {
> -	if (!(adev->powerplay.pp_feature & PP_GFXOFF_MASK))
> +	if (!(adev->pm.pp_feature & PP_GFXOFF_MASK))
>  		return;
> 
>  	if (!adev->powerplay.pp_funcs || !adev->powerplay.pp_funcs-
> >set_powergating_by_smu)
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> index ba9a5c9..2b9bbba 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
> @@ -2557,7 +2557,8 @@ int amdgpu_pm_sysfs_init(struct amdgpu_device
> *adev)
>  				"pp_power_profile_mode\n");
>  		return ret;
>  	}
> -	if (is_support_sw_smu(adev) || hwmgr->od_enabled) {
> +	if ((is_support_sw_smu(adev) && adev->smu.od_enabled) ||
> +	    (!is_support_sw_smu(adev) && hwmgr->od_enabled)) {
>  		ret = device_create_file(adev->dev,
>  				&dev_attr_pp_od_clk_voltage);
>  		if (ret) {
> @@ -2633,7 +2634,8 @@ void amdgpu_pm_sysfs_fini(struct amdgpu_device
> *adev)
>  	device_remove_file(adev->dev, &dev_attr_pp_mclk_od);
>  	device_remove_file(adev->dev,
>  			&dev_attr_pp_power_profile_mode);
> -	if (hwmgr->od_enabled)
> +	if ((is_support_sw_smu(adev) && adev->smu.od_enabled) ||
> +	    (!is_support_sw_smu(adev) && hwmgr->od_enabled))
>  		device_remove_file(adev->dev,
>  				&dev_attr_pp_od_clk_voltage);
>  	device_remove_file(adev->dev, &dev_attr_gpu_busy_percent); diff
> --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
> b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
> index 86e14c7..9ae65bf 100644
> --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
> @@ -5903,7 +5903,7 @@ static int ci_dpm_init(struct amdgpu_device *adev)
>  	pi->pcie_dpm_key_disabled = 0;
>  	pi->thermal_sclk_dpm_enabled = 0;
> 
> -	if (adev->powerplay.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
> +	if (adev->pm.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
>  		pi->caps_sclk_ds = true;
>  	else
>  		pi->caps_sclk_ds = false;
> diff --git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
> b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
> index 0c9a2c0..f2e6b14 100644
> --- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c
> @@ -2824,7 +2824,7 @@ static int kv_dpm_init(struct amdgpu_device *adev)
>  		pi->caps_tcp_ramping = true;
>  	}
> 
> -	if (adev->powerplay.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
> +	if (adev->pm.pp_feature & PP_SCLK_DEEP_SLEEP_MASK)
>  		pi->caps_sclk_ds = true;
>  	else
>  		pi->caps_sclk_ds = false;
> diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c
> b/drivers/gpu/drm/amd/amdgpu/soc15.c
> index ed259ae..3e22a49 100644
> --- a/drivers/gpu/drm/amd/amdgpu/soc15.c
> +++ b/drivers/gpu/drm/amd/amdgpu/soc15.c
> @@ -931,7 +931,7 @@ static int soc15_common_early_init(void *handle)
>  			adev->pg_flags = AMD_PG_SUPPORT_SDMA |
> AMD_PG_SUPPORT_VCN;
>  		}
> 
> -		if (adev->powerplay.pp_feature & PP_GFXOFF_MASK)
> +		if (adev->pm.pp_feature & PP_GFXOFF_MASK)
>  			adev->pg_flags |= AMD_PG_SUPPORT_GFX_PG |
>  				AMD_PG_SUPPORT_CP |
>  				AMD_PG_SUPPORT_RLC_SMU_HS;
> diff --git a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> index 3f73f7c..a66917d 100644
> --- a/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> +++ b/drivers/gpu/drm/amd/powerplay/amd_powerplay.c
> @@ -53,7 +53,7 @@ static int amd_powerplay_create(struct amdgpu_device
> *adev)
>  	mutex_init(&hwmgr->smu_lock);
>  	hwmgr->chip_family = adev->family;
>  	hwmgr->chip_id = adev->asic_type;
> -	hwmgr->feature_mask = adev->powerplay.pp_feature;
> +	hwmgr->feature_mask = adev->pm.pp_feature;
>  	hwmgr->display_config = &adev->pm.pm_display_cfg;
>  	adev->powerplay.pp_handle = hwmgr;
>  	adev->powerplay.pp_funcs = &pp_dpm_funcs; diff --git
> a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> index 792c3e1..a6bbac9 100644
> --- a/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/powerplay/amdgpu_smu.c
> @@ -282,6 +282,9 @@ static int smu_set_funcs(struct amdgpu_device
> *adev)
> 
>  	switch (adev->asic_type) {
>  	case CHIP_VEGA20:
> +		smu->feature_mask &= ~PP_GFXOFF_MASK;
> +		if (smu->feature_mask & PP_OVERDRIVE_MASK)
> +			smu->od_enabled = true;

Do we still add feature_mask in smu_context structure? How about using adev->pm.pp_feature directly here?

Thanks,
Ray

>  		smu_v11_0_set_smu_funcs(smu);
>  		break;
>  	default:
> @@ -298,6 +301,7 @@ static int smu_early_init(void *handle)
> 
>  	smu->adev = adev;
>  	mutex_init(&smu->mutex);
> +	smu->feature_mask = adev->pm.pp_feature;
> 
>  	return smu_set_funcs(adev);
>  }
> diff --git a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> index b53da1a..0aa8ec2 100644
> --- a/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/powerplay/inc/amdgpu_smu.h
> @@ -384,6 +384,7 @@ struct smu_context
>  	uint32_t pstate_sclk;
>  	uint32_t pstate_mclk;
> 
> +	bool od_enabled;
>  	uint32_t power_limit;
>  	uint32_t default_power_limit;
> 
> @@ -399,6 +400,8 @@ struct smu_context
>  	uint32_t workload_setting[WORKLOAD_POLICY_MAX];
>  	uint32_t power_profile_mode;
>  	uint32_t default_power_profile_mode;
> +
> +	uint32_t feature_mask;
>  };
> 
>  struct pptable_funcs {
> --
> 2.7.4
> 
> _______________________________________________
> 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] 2+ messages in thread

end of thread, other threads:[~2019-02-26  9:57 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-26  8:15 [PATCH v2] drm/amd/powerplay: add limit of pp_feature for smu (v2) likun Gao
     [not found] ` <1551168913-17088-1-git-send-email-likun.gao-5C7GfCeVMHo@public.gmane.org>
2019-02-26  9:57   ` Huang, Ray

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.