[PATCH 3/7] drm/amd/pm: drop the redundant 'supported' member of smu_feature structure

Quan, Evan Evan.Quan at amd.com
Tue Jan 25 09:04:00 UTC 2022


[AMD Official Use Only]



> -----Original Message-----
> From: Lazar, Lijo <Lijo.Lazar at amd.com>
> Sent: Monday, January 24, 2022 1:03 PM
> To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Chen, Guchun
> <Guchun.Chen at amd.com>; Huang, Ray <Ray.Huang at amd.com>
> Subject: Re: [PATCH 3/7] drm/amd/pm: drop the redundant 'supported'
> member of smu_feature structure
> 
> 
> 
> On 1/24/2022 9:51 AM, Quan, Evan wrote:
> > [AMD Official Use Only]
> >
> >
> >
> >> -----Original Message-----
> >> From: Lazar, Lijo <Lijo.Lazar at amd.com>
> >> Sent: Friday, January 21, 2022 5:37 PM
> >> To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org
> >> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Chen, Guchun
> >> <Guchun.Chen at amd.com>; Huang, Ray <Ray.Huang at amd.com>
> >> Subject: Re: [PATCH 3/7] drm/amd/pm: drop the redundant 'supported'
> >> member of smu_feature structure
> >>
> >>
> >>
> >> On 1/21/2022 2:56 PM, Quan, Evan wrote:
> >>> [AMD Official Use Only]
> >>>
> >>>
> >>>
> >>>> -----Original Message-----
> >>>> From: Lazar, Lijo <Lijo.Lazar at amd.com>
> >>>> Sent: Friday, January 21, 2022 4:52 PM
> >>>> To: Quan, Evan <Evan.Quan at amd.com>; amd-
> gfx at lists.freedesktop.org
> >>>> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Chen,
> Guchun
> >>>> <Guchun.Chen at amd.com>; Huang, Ray <Ray.Huang at amd.com>
> >>>> Subject: Re: [PATCH 3/7] drm/amd/pm: drop the redundant
> 'supported'
> >>>> member of smu_feature structure
> >>>>
> >>>>
> >>>>
> >>>> On 1/21/2022 1:14 PM, Evan Quan wrote:
> >>>>> As it has exactly the same value as the 'enabled' member and also
> >>>>> do the same thing.
> >>>>>
> >>>>
> >>>> I believe the original intention is different. We need to cache the
> >>>> features which are really supported by PMFW on that device on init.
> >>>> When a request comes through sysfs node for enable/disable of a
> >>>> feature, we should check against this and disallow those which are
> >>>> not
> >> supported.
> >>> [Quan, Evan] Uh, I doubt it was designed with such intention. As if
> >>> it was,
> >> there should be checks in ->get_allowed_feature_mask(e.g.
> >> navi10_get_allowed_feature_mask) whether driver tries to
> >> enable/disable different features from PMFW.
> >>> " When a request comes through sysfs node for enable/disable of a
> >> feature" If the sysfs node mentioned is "pp_features", I might be
> >> able to provide some insights why there is no such checks added when I
> made them.
> >> Considering there may be some dependency between those dpm
> >> features(e.g. gfx ulv depends on gfx dpm), we actually cannot guard
> >> user whether their settings will succeed. E.g. If PMFW supports both
> >> GFX ULV and DPM but user wants ULV only, the checks against pmfw
> >> supported features seem fine. But actually that cannot work due to
> >> the dependency between them. So, instead of applying some checks
> >> which actually cannot guard anything, we just let user take the risks.
> >>>
> >>
> >> Below is one example
> >>
> >>   > -	if (!smu_cmn_feature_is_supported(smu,
> >> SMU_FEATURE_FAN_CONTROL_BIT))
> >>   > +	if (!smu_cmn_feature_is_enabled(smu,
> >> SMU_FEATURE_FAN_CONTROL_BIT))
> >>
> >> Let's say user switched to manual mode, that time we disable fan
> >> control and move to manual mode. Next time when user requests auto
> >> mode, we check if fan control is originally supported on that platform and
> switch to auto.
> >>
> > [Quan, Evan] Logically yes. But in reality I assume this should not
> > happen. As during our post-silicon bringup, we enable those
> > features(and corresponding sysfs interfaces)support only after verified. It
> means if the feature(auto fan control) is not supported, the sysfs interface
> should be not visible to user.
> 
> Well, there are multiple examples -
> 
>                          amdgpu_asic_update_umd_stable_pstate(smu->adev,
> false);
>                          smu_deep_sleep_control(smu, true);
>                          smu_gfx_ulv_control(smu, true);
>                          smu_gpo_control(smu, true);
> 
> This is yet another one. Some aspects are disabled while umd profiling and
> then they are enabled back when it's back to FW control. This is internal logic
> and it could be disastrous if we try to enable a feature without checking if it's
> really supported on production SKUs.
> 
> >> Either way, we should cache the features which are originally
> >> supported on the platform (through a combination of PPTable features
> >> and allowed feature masks on ASICs which are applicable) and disallow
> >> anything outside of that.
> > [Quan, Evan] Although I doubt the necessity of such cache. But I do keep a
> structure member "feature->allowed" which does the similar job.
> > It may be more reasonable to expand its scope to handle the job described
> here.
> >
> 
> It would be needed for both internal and external interfaces, I strongly
> suggest to keep it. The name 'supported' is more intuitive and 'allowed
> feature' concept from PMFW is not there for all ASICs, though I don't mind
> the name anyway.
[Quan, Evan] I'm fine to keep it. Please check the new patch series then.

BR
Evan
> 
> Thanks,
> Lijo
> 
> > BR
> > Evan
> >>
> >> Thanks,
> >> Lijo
> >>
> >>> BR
> >>> Evan
> >>>>
> >>>> Thanks,
> >>>> Lijo
> >>>>
> >>>>> Signed-off-by: Evan Quan <evan.quan at amd.com>
> >>>>> Change-Id: I07c9a5ac5290cd0d88a40ce1768d393156419b5a
> >>>>> ---
> >>>>>     drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c     |  1 -
> >>>>>     drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h |  1 -
> >>>>>     .../gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c   |  8 ++++----
> >>>>>     .../amd/pm/swsmu/smu11/sienna_cichlid_ppt.c   | 10 +++++-----
> >>>>>     .../gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c    | 19
> ++++++++---
> >> ----
> >>>> ----
> >>>>>     .../gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c  |  5 +----
> >>>>>     .../gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c    |  5 +----
> >>>>>     .../drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c  |  3 ---
> >>>>>     drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c        | 17 ---------------
> --
> >>>>>     drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h        |  3 ---
> >>>>>     10 files changed, 19 insertions(+), 53 deletions(-)
> >>>>>
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> >>>>> index 5ace30434e60..d3237b89f2c5 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> >>>>> @@ -949,7 +949,6 @@ static int smu_sw_init(void *handle)
> >>>>>
> >>>>>     	smu->pool_size = adev->pm.smu_prv_buffer_size;
> >>>>>     	smu->smu_feature.feature_num = SMU_FEATURE_MAX;
> >>>>> -	bitmap_zero(smu->smu_feature.supported,
> SMU_FEATURE_MAX);
> >>>>>     	bitmap_zero(smu->smu_feature.enabled,
> SMU_FEATURE_MAX);
> >>>>>     	bitmap_zero(smu->smu_feature.allowed,
> SMU_FEATURE_MAX);
> >>>>>
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> >>>>> index 18f24db7d202..3c0360772822 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> >>>>> @@ -388,7 +388,6 @@ struct smu_power_context {
> >>>>>     struct smu_feature
> >>>>>     {
> >>>>>     	uint32_t feature_num;
> >>>>> -	DECLARE_BITMAP(supported, SMU_FEATURE_MAX);
> >>>>>     	DECLARE_BITMAP(allowed, SMU_FEATURE_MAX);
> >>>>>     	DECLARE_BITMAP(enabled, SMU_FEATURE_MAX);
> >>>>>     };
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c
> >>>>> index 84834c24a7e9..9fb290f9aaeb 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/navi10_ppt.c
> >>>>> @@ -1625,8 +1625,8 @@ static int
> >>>>> navi10_display_config_changed(struct
> >>>> smu_context *smu)
> >>>>>     	int ret = 0;
> >>>>>
> >>>>>     	if ((smu->watermarks_bitmap & WATERMARKS_EXIST) &&
> >>>>> -	    smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT) &&
> >>>>> -	    smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_SOCCLK_BIT)) {
> >>>>> +	    smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT) &&
> >>>>> +	    smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_SOCCLK_BIT)) {
> >>>>>     		ret = smu_cmn_send_smc_msg_with_param(smu,
> >>>> SMU_MSG_NumOfDisplays,
> >>>>>     						  smu-
> >display_config-
> >>>>> num_display,
> >>>>>     						  NULL);
> >>>>> @@ -1864,13 +1864,13 @@ static int
> >>>> navi10_notify_smc_display_config(struct smu_context *smu)
> >>>>>     	min_clocks.dcef_clock_in_sr = smu->display_config-
> >>>>> min_dcef_deep_sleep_set_clk;
> >>>>>     	min_clocks.memory_clock = smu->display_config-
> >>>>> min_mem_set_clock;
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT)) {
> >>>>>     		clock_req.clock_type = amd_pp_dcef_clock;
> >>>>>     		clock_req.clock_freq_in_khz = min_clocks.dcef_clock
> * 10;
> >>>>>
> >>>>>     		ret =
> smu_v11_0_display_clock_voltage_request(smu,
> >>>> &clock_req);
> >>>>>     		if (!ret) {
> >>>>> -			if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_DCEFCLK_BIT)) {
> >>>>> +			if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_DCEFCLK_BIT)) {
> >>>>>     				ret =
> >>>> smu_cmn_send_smc_msg_with_param(smu,
> >>>>>
> >>>> SMU_MSG_SetMinDeepSleepDcefclk,
> >>>>>
> >>>> min_clocks.dcef_clock_in_sr/100, diff --git
> >>>>> a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> >>>>> index 651fe748e423..d568d6137a00 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/sienna_cichlid_ppt.c
> >>>>> @@ -1281,8 +1281,8 @@ static int
> >>>> sienna_cichlid_display_config_changed(struct smu_context *smu)
> >>>>>     	int ret = 0;
> >>>>>
> >>>>>     	if ((smu->watermarks_bitmap & WATERMARKS_EXIST) &&
> >>>>> -	    smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT) &&
> >>>>> -	    smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_SOCCLK_BIT)) {
> >>>>> +	    smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT) &&
> >>>>> +	    smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_SOCCLK_BIT)) {
> >>>>>     #if 0
> >>>>>     		ret = smu_cmn_send_smc_msg_with_param(smu,
> >>>> SMU_MSG_NumOfDisplays,
> >>>>>     						  smu-
> >display_config-
> >>>>> num_display, @@ -1521,13 +1521,13 @@ static int
> >>>>> sienna_cichlid_notify_smc_display_config(struct smu_context
> >>>> *smu)
> >>>>>     	min_clocks.dcef_clock_in_sr = smu->display_config-
> >>>>> min_dcef_deep_sleep_set_clk;
> >>>>>     	min_clocks.memory_clock = smu->display_config-
> >>>>> min_mem_set_clock;
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_DCEFCLK_BIT)) {
> >>>>>     		clock_req.clock_type = amd_pp_dcef_clock;
> >>>>>     		clock_req.clock_freq_in_khz = min_clocks.dcef_clock
> * 10;
> >>>>>
> >>>>>     		ret =
> smu_v11_0_display_clock_voltage_request(smu,
> >>>> &clock_req);
> >>>>>     		if (!ret) {
> >>>>> -			if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_DCEFCLK_BIT)) {
> >>>>> +			if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_DCEFCLK_BIT)) {
> >>>>>     				ret =
> >>>> smu_cmn_send_smc_msg_with_param(smu,
> >>>>>
> >>>> SMU_MSG_SetMinDeepSleepDcefclk,
> >>>>>
> >>>> min_clocks.dcef_clock_in_sr/100, @@ -3752,7 +3752,7 @@
> >>>>> static int sienna_cichlid_gpo_control(struct smu_context *smu,
> >>>>>     	int ret = 0;
> >>>>>
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_GFX_GPO_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_GFX_GPO_BIT)) {
> >>>>>     		ret = smu_cmn_get_smc_version(smu, NULL,
> >>>> &smu_version);
> >>>>>     		if (ret)
> >>>>>     			return ret;
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
> >>>>> index b58a4c2823c2..b69c2ecc8e25 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/smu_v11_0.c
> >>>>> @@ -808,7 +808,6 @@ int
> smu_v11_0_system_features_control(struct
> >>>> smu_context *smu,
> >>>>>     		return ret;
> >>>>>
> >>>>>     	bitmap_zero(feature->enabled, feature->feature_num);
> >>>>> -	bitmap_zero(feature->supported, feature->feature_num);
> >>>>>
> >>>>>     	if (en) {
> >>>>>     		ret = smu_cmn_get_enabled_mask(smu,
> feature_mask, 2);
> >>>> @@ -817,8
> >>>>> +816,6 @@ int smu_v11_0_system_features_control(struct
> >> smu_context
> >>>>> *smu,
> >>>>>
> >>>>>     		bitmap_copy(feature->enabled, (unsigned long
> >>>> *)&feature_mask,
> >>>>>     			    feature->feature_num);
> >>>>> -		bitmap_copy(feature->supported, (unsigned long
> >>>> *)&feature_mask,
> >>>>> -			    feature->feature_num);
> >>>>>     	}
> >>>>>
> >>>>>     	return ret;
> >>>>> @@ -1186,7 +1183,7 @@ smu_v11_0_auto_fan_control(struct
> >>>> smu_context *smu, bool auto_fan_control)
> >>>>>     {
> >>>>>     	int ret = 0;
> >>>>>
> >>>>> -	if (!smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT))
> >>>>> +	if (!smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT))
> >>>>>     		return 0;
> >>>>>
> >>>>>     	ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT,
> >>>>> auto_fan_control); @@ -1607,7 +1604,7 @@ bool
> >>>> smu_v11_0_baco_is_support(struct smu_context *smu)
> >>>>>     		return false;
> >>>>>
> >>>>>     	/* Arcturus does not support this bit mask */
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> SMU_FEATURE_BACO_BIT)
> >>>> &&
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> SMU_FEATURE_BACO_BIT)
> >>>> &&
> >>>>>     	   !smu_cmn_feature_is_enabled(smu,
> SMU_FEATURE_BACO_BIT))
> >>>>>     		return false;
> >>>>>
> >>>>> @@ -2150,7 +2147,7 @@ int smu_v11_0_gfx_ulv_control(struct
> >>>> smu_context *smu,
> >>>>>     {
> >>>>>     	int ret = 0;
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_GFX_ULV_BIT))
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_GFX_ULV_BIT))
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_GFX_ULV_BIT,
> >>>>> enablement);
> >>>>>
> >>>>>     	return ret;
> >>>>> @@ -2162,7 +2159,7 @@ int smu_v11_0_deep_sleep_control(struct
> >>>> smu_context *smu,
> >>>>>     	struct amdgpu_device *adev = smu->adev;
> >>>>>     	int ret = 0;
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_GFXCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_GFXCLK_BIT)) {
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_DS_GFXCLK_BIT, enablement);
> >>>>>     		if (ret) {
> >>>>>     			dev_err(adev->dev, "Failed to %s GFXCLK
> DS!\n",
> >>>> enablement ?
> >>>>> "enable" : "disable"); @@ -2170,7 +2167,7 @@ int
> >>>> smu_v11_0_deep_sleep_control(struct smu_context *smu,
> >>>>>     		}
> >>>>>     	}
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_UCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_UCLK_BIT)) {
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_DS_UCLK_BIT, enablement);
> >>>>>     		if (ret) {
> >>>>>     			dev_err(adev->dev, "Failed to %s UCLK
> DS!\n",
> >>>> enablement ?
> >>>>> "enable" : "disable"); @@ -2178,7 +2175,7 @@ int
> >>>> smu_v11_0_deep_sleep_control(struct smu_context *smu,
> >>>>>     		}
> >>>>>     	}
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_FCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_FCLK_BIT)) {
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_DS_FCLK_BIT, enablement);
> >>>>>     		if (ret) {
> >>>>>     			dev_err(adev->dev, "Failed to %s FCLK
> DS!\n",
> >>>> enablement ?
> >>>>> "enable" : "disable"); @@ -2186,7 +2183,7 @@ int
> >>>> smu_v11_0_deep_sleep_control(struct smu_context *smu,
> >>>>>     		}
> >>>>>     	}
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_SOCCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_SOCCLK_BIT)) {
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_DS_SOCCLK_BIT, enablement);
> >>>>>     		if (ret) {
> >>>>>     			dev_err(adev->dev, "Failed to %s SOCCLK
> DS!\n",
> >>>> enablement ?
> >>>>> "enable" : "disable"); @@ -2194,7 +2191,7 @@ int
> >>>> smu_v11_0_deep_sleep_control(struct smu_context *smu,
> >>>>>     		}
> >>>>>     	}
> >>>>>
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DS_LCLK_BIT)) {
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DS_LCLK_BIT)) {
> >>>>>     		ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_DS_LCLK_BIT, enablement);
> >>>>>     		if (ret) {
> >>>>>     			dev_err(adev->dev, "Failed to %s LCLK
> DS!\n",
> >>>> enablement ?
> >>>>> "enable" : "disable"); diff --git
> >>>>> a/drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c
> >>>>> index b4a3c9b8b54e..e72831aa4859 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu11/vangogh_ppt.c
> >>>>> @@ -1960,7 +1960,6 @@ static int
> >>>> vangogh_system_features_control(struct smu_context *smu, bool en)
> >>>>>     						      RLC_STATUS_OFF,
> NULL);
> >>>>>
> >>>>>     	bitmap_zero(feature->enabled, feature->feature_num);
> >>>>> -	bitmap_zero(feature->supported, feature->feature_num);
> >>>>>
> >>>>>     	if (!en)
> >>>>>     		return ret;
> >>>>> @@ -1971,8 +1970,6 @@ static int
> >>>>> vangogh_system_features_control(struct smu_context *smu, bool
> en)
> >>>>>
> >>>>>     	bitmap_copy(feature->enabled, (unsigned long
> *)&feature_mask,
> >>>>>     		    feature->feature_num);
> >>>>> -	bitmap_copy(feature->supported, (unsigned long
> *)&feature_mask,
> >>>>> -		    feature->feature_num);
> >>>>>
> >>>>>     	return 0;
> >>>>>     }
> >>>>> @@ -1989,7 +1986,7 @@ static int vangogh_post_smu_init(struct
> >>>> smu_context *smu)
> >>>>>     		adev->gfx.config.max_sh_per_se *
> >>>>> adev->gfx.config.max_shader_engines;
> >>>>>
> >>>>>     	/* allow message will be sent after enable message on
> Vangogh*/
> >>>>> -	if (smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_DPM_GFXCLK_BIT) &&
> >>>>> +	if (smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_DPM_GFXCLK_BIT) &&
> >>>>>     			(adev->pg_flags &
> AMD_PG_SUPPORT_GFX_PG)) {
> >>>>>     		ret = smu_cmn_send_smc_msg(smu,
> >>>> SMU_MSG_EnableGfxOff, NULL);
> >>>>>     		if (ret) {
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> >>>>> index 1754a3720179..c5d354175675 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/smu_v13_0.c
> >>>>> @@ -774,7 +774,6 @@ int
> smu_v13_0_system_features_control(struct
> >>>> smu_context *smu,
> >>>>>     		return ret;
> >>>>>
> >>>>>     	bitmap_zero(feature->enabled, feature->feature_num);
> >>>>> -	bitmap_zero(feature->supported, feature->feature_num);
> >>>>>
> >>>>>     	if (en) {
> >>>>>     		ret = smu_cmn_get_enabled_mask(smu,
> feature_mask, 2);
> >>>> @@ -783,8
> >>>>> +782,6 @@ int smu_v13_0_system_features_control(struct
> >> smu_context
> >>>>> *smu,
> >>>>>
> >>>>>     		bitmap_copy(feature->enabled, (unsigned long
> >>>> *)&feature_mask,
> >>>>>     			    feature->feature_num);
> >>>>> -		bitmap_copy(feature->supported, (unsigned long
> >>>> *)&feature_mask,
> >>>>> -			    feature->feature_num);
> >>>>>     	}
> >>>>>
> >>>>>     	return ret;
> >>>>> @@ -1071,7 +1068,7 @@ smu_v13_0_auto_fan_control(struct
> >>>> smu_context *smu, bool auto_fan_control)
> >>>>>     {
> >>>>>     	int ret = 0;
> >>>>>
> >>>>> -	if (!smu_cmn_feature_is_supported(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT))
> >>>>> +	if (!smu_cmn_feature_is_enabled(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT))
> >>>>>     		return 0;
> >>>>>
> >>>>>     	ret = smu_cmn_feature_set_enabled(smu,
> >>>> SMU_FEATURE_FAN_CONTROL_BIT,
> >>>>> auto_fan_control); diff --git
> >>>>> a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c
> >>>>> index f425827e2361..e9172622c0c4 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu13/yellow_carp_ppt.c
> >>>>> @@ -204,7 +204,6 @@ static int
> >>>> yellow_carp_system_features_control(struct smu_context *smu, bool
> >>>> en)
> >>>>>     		ret = smu_cmn_send_smc_msg(smu,
> >>>> SMU_MSG_PrepareMp1ForUnload,
> >>>>> NULL);
> >>>>>
> >>>>>     	bitmap_zero(feature->enabled, feature->feature_num);
> >>>>> -	bitmap_zero(feature->supported, feature->feature_num);
> >>>>>
> >>>>>     	if (!en)
> >>>>>     		return ret;
> >>>>> @@ -215,8 +214,6 @@ static int
> >>>>> yellow_carp_system_features_control(struct smu_context *smu,
> bool
> >>>>> en)
> >>>>>
> >>>>>     	bitmap_copy(feature->enabled, (unsigned long
> *)&feature_mask,
> >>>>>     		    feature->feature_num);
> >>>>> -	bitmap_copy(feature->supported, (unsigned long
> *)&feature_mask,
> >>>>> -		    feature->feature_num);
> >>>>>
> >>>>>     	return 0;
> >>>>>     }
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> >>>>> index 50164ebed1cd..49bcabe9d708 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.c
> >>>>> @@ -476,23 +476,6 @@ int smu_cmn_to_asic_specific_index(struct
> >>>> smu_context *smu,
> >>>>>     	}
> >>>>>     }
> >>>>>
> >>>>> -int smu_cmn_feature_is_supported(struct smu_context *smu,
> >>>>> -				 enum smu_feature_mask mask)
> >>>>> -{
> >>>>> -	struct smu_feature *feature = &smu->smu_feature;
> >>>>> -	int feature_id;
> >>>>> -
> >>>>> -	feature_id = smu_cmn_to_asic_specific_index(smu,
> >>>>> -
> >>>> CMN2ASIC_MAPPING_FEATURE,
> >>>>> -						    mask);
> >>>>> -	if (feature_id < 0)
> >>>>> -		return 0;
> >>>>> -
> >>>>> -	WARN_ON(feature_id > feature->feature_num);
> >>>>> -
> >>>>> -	return test_bit(feature_id, feature->supported);
> >>>>> -}
> >>>>> -
> >>>>>     int smu_cmn_feature_is_enabled(struct smu_context *smu,
> >>>>>     			       enum smu_feature_mask mask)
> >>>>>     {
> >>>>> diff --git a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h
> >>>>> b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h
> >>>>> index 4e34c18c6063..19919182260a 100644
> >>>>> --- a/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h
> >>>>> +++ b/drivers/gpu/drm/amd/pm/swsmu/smu_cmn.h
> >>>>> @@ -48,9 +48,6 @@ int smu_cmn_to_asic_specific_index(struct
> >>>> smu_context *smu,
> >>>>>     				   enum
> smu_cmn2asic_mapping_type type,
> >>>>>     				   uint32_t index);
> >>>>>
> >>>>> -int smu_cmn_feature_is_supported(struct smu_context *smu,
> >>>>> -				 enum smu_feature_mask mask);
> >>>>> -
> >>>>>     int smu_cmn_feature_is_enabled(struct smu_context *smu,
> >>>>>     			       enum smu_feature_mask mask);
> >>>>>
> >>>>>


More information about the amd-gfx mailing list