[Public]


> -----Original Message-----
> From: Chen, Guchun <[email protected]>
> Sent: Thursday, January 6, 2022 9:22 PM
> To: Quan, Evan <[email protected]>; [email protected]
> Cc: Deucher, Alexander <[email protected]>; Quan, Evan
> <[email protected]>
> 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 <[email protected]> On Behalf Of Evan
> Quan
> Sent: Thursday, January 6, 2022 1:57 PM
> To: [email protected]
> Cc: Deucher, Alexander <[email protected]>; Quan, Evan
> <[email protected]>
> 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 <[email protected]>
> 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

Reply via email to