[PATCH 2/7] drm/amd/pm: drop unneeded vcn/jpeg_gate_lock

Quan, Evan Evan.Quan at amd.com
Fri Jan 7 02:20:28 UTC 2022


[Public]



> -----Original Message-----
> From: Chen, Guchun <Guchun.Chen at amd.com>
> Sent: Thursday, January 6, 2022 9:22 PM
> To: Quan, Evan <Evan.Quan at amd.com>; amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>
> Subject: RE: [PATCH 2/7] drm/amd/pm: drop unneeded vcn/jpeg_gate_lock
> 
> [Public]
> 
> err0_out:
> -	mutex_unlock(&power_gate->jpeg_gate_lock);
> -	mutex_unlock(&power_gate->vcn_gate_lock);
> -
>  	return ret;
> 
> Is it better to refactor the code to drop error path of "err0_out"?
[Quan, Evan] Sure, I can do that.

BR
Evan
> 
> Regards,
> Guchun
> 
> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Evan
> Quan
> Sent: Thursday, January 6, 2022 1:57 PM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>; Quan, Evan
> <Evan.Quan at amd.com>
> Subject: [PATCH 2/7] drm/amd/pm: drop unneeded vcn/jpeg_gate_lock
> 
> As those related APIs are already protected by adev->pm.mutex.
> 
> Signed-off-by: Evan Quan <evan.quan at amd.com>
> Change-Id: I762fab96bb1c034c153b029f939ec6e498460007
> ---
>  drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c     | 56 +++----------------
>  drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h |  2 -
>  2 files changed, 8 insertions(+), 50 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> index ae91ef2078bf..ecbc768dfe2f 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> +++ b/drivers/gpu/drm/amd/pm/swsmu/amdgpu_smu.c
> @@ -158,8 +158,8 @@ static u32 smu_get_sclk(void *handle, bool low)
>  	return clk_freq * 100;
>  }
> 
> -static int smu_dpm_set_vcn_enable_locked(struct smu_context *smu,
> -					 bool enable)
> +static int smu_dpm_set_vcn_enable(struct smu_context *smu,
> +				  bool enable)
>  {
>  	struct smu_power_context *smu_power = &smu->smu_power;
>  	struct smu_power_gate *power_gate = &smu_power->power_gate;
> @@ -178,24 +178,8 @@ static int smu_dpm_set_vcn_enable_locked(struct
> smu_context *smu,
>  	return ret;
>  }
> 
> -static int smu_dpm_set_vcn_enable(struct smu_context *smu,
> -				  bool enable)
> -{
> -	struct smu_power_context *smu_power = &smu->smu_power;
> -	struct smu_power_gate *power_gate = &smu_power->power_gate;
> -	int ret = 0;
> -
> -	mutex_lock(&power_gate->vcn_gate_lock);
> -
> -	ret = smu_dpm_set_vcn_enable_locked(smu, enable);
> -
> -	mutex_unlock(&power_gate->vcn_gate_lock);
> -
> -	return ret;
> -}
> -
> -static int smu_dpm_set_jpeg_enable_locked(struct smu_context *smu,
> -					  bool enable)
> +static int smu_dpm_set_jpeg_enable(struct smu_context *smu,
> +				   bool enable)
>  {
>  	struct smu_power_context *smu_power = &smu->smu_power;
>  	struct smu_power_gate *power_gate = &smu_power->power_gate;
> @@ -214,22 +198,6 @@ static int smu_dpm_set_jpeg_enable_locked(struct
> smu_context *smu,
>  	return ret;
>  }
> 
> -static int smu_dpm_set_jpeg_enable(struct smu_context *smu,
> -				   bool enable)
> -{
> -	struct smu_power_context *smu_power = &smu->smu_power;
> -	struct smu_power_gate *power_gate = &smu_power->power_gate;
> -	int ret = 0;
> -
> -	mutex_lock(&power_gate->jpeg_gate_lock);
> -
> -	ret = smu_dpm_set_jpeg_enable_locked(smu, enable);
> -
> -	mutex_unlock(&power_gate->jpeg_gate_lock);
> -
> -	return ret;
> -}
> -
>  /**
>   * smu_dpm_set_power_gate - power gate/ungate the specific IP block
>   *
> @@ -619,17 +587,14 @@ static int smu_set_default_dpm_table(struct
> smu_context *smu)
>  	if (!smu->ppt_funcs->set_default_dpm_table)
>  		return 0;
> 
> -	mutex_lock(&power_gate->vcn_gate_lock);
> -	mutex_lock(&power_gate->jpeg_gate_lock);
> -
>  	vcn_gate = atomic_read(&power_gate->vcn_gated);
>  	jpeg_gate = atomic_read(&power_gate->jpeg_gated);
> 
> -	ret = smu_dpm_set_vcn_enable_locked(smu, true);
> +	ret = smu_dpm_set_vcn_enable(smu, true);
>  	if (ret)
>  		goto err0_out;
> 
> -	ret = smu_dpm_set_jpeg_enable_locked(smu, true);
> +	ret = smu_dpm_set_jpeg_enable(smu, true);
>  	if (ret)
>  		goto err1_out;
> 
> @@ -638,13 +603,10 @@ static int smu_set_default_dpm_table(struct
> smu_context *smu)
>  		dev_err(smu->adev->dev,
>  			"Failed to setup default dpm clock tables!\n");
> 
> -	smu_dpm_set_jpeg_enable_locked(smu, !jpeg_gate);
> +	smu_dpm_set_jpeg_enable(smu, !jpeg_gate);
>  err1_out:
> -	smu_dpm_set_vcn_enable_locked(smu, !vcn_gate);
> +	smu_dpm_set_vcn_enable(smu, !vcn_gate);
>  err0_out:
> -	mutex_unlock(&power_gate->jpeg_gate_lock);
> -	mutex_unlock(&power_gate->vcn_gate_lock);
> -
>  	return ret;
>  }
> 
> @@ -1006,8 +968,6 @@ static int smu_sw_init(void *handle)
> 
>  	atomic_set(&smu->smu_power.power_gate.vcn_gated, 1);
>  	atomic_set(&smu->smu_power.power_gate.jpeg_gated, 1);
> -	mutex_init(&smu->smu_power.power_gate.vcn_gate_lock);
> -	mutex_init(&smu->smu_power.power_gate.jpeg_gate_lock);
> 
>  	smu->workload_mask = 1 << smu-
> >workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT];
>  	smu-
> >workload_prority[PP_SMC_POWER_PROFILE_BOOTUP_DEFAULT] = 0; 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 00760f3c6da5..c3efe4fea5e0 100644
> --- a/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> +++ b/drivers/gpu/drm/amd/pm/swsmu/inc/amdgpu_smu.h
> @@ -376,8 +376,6 @@ struct smu_power_gate {
>  	bool vce_gated;
>  	atomic_t vcn_gated;
>  	atomic_t jpeg_gated;
> -	struct mutex vcn_gate_lock;
> -	struct mutex jpeg_gate_lock;
>  };
> 
>  struct smu_power_context {
> --
> 2.29.0


More information about the amd-gfx mailing list