[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