diff options
author | Arto Merilainen <amerilainen@nvidia.com> | 2014-04-08 07:29:38 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:09:44 -0400 |
commit | f2ef74fbfff11cad91cd08b3f1be69840f0aadda (patch) | |
tree | 35e3b3876673eff088a3415e0d7e97e08070465b /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |
parent | 6b71c1d7402837dc72da079e22f0bd0f068eaf14 (diff) |
gpu: nvgpu: Fix return value in pmu mutex release
Bug 1495617
Change-Id: I689ed4303bb3959bb24bf79d52891de28431fc67
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/394904
(cherry-picked from commit a04c51430b186d23953960965ce3ab229968d1f7)
Reviewed-on: http://git-master/r/399565
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 0f1af8ab..234255ce 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -1244,18 +1244,19 @@ int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token) | |||
1244 | return -EINVAL; | 1244 | return -EINVAL; |
1245 | } | 1245 | } |
1246 | 1246 | ||
1247 | if (--mutex->ref_cnt == 0) { | 1247 | if (--mutex->ref_cnt > 0) |
1248 | gk20a_writel(g, pwr_pmu_mutex_r(mutex->index), | 1248 | return -EBUSY; |
1249 | pwr_pmu_mutex_value_initial_lock_f()); | ||
1250 | 1249 | ||
1251 | data = gk20a_readl(g, pwr_pmu_mutex_id_release_r()); | 1250 | gk20a_writel(g, pwr_pmu_mutex_r(mutex->index), |
1252 | data = set_field(data, pwr_pmu_mutex_id_release_value_m(), | 1251 | pwr_pmu_mutex_value_initial_lock_f()); |
1253 | pwr_pmu_mutex_id_release_value_f(owner)); | ||
1254 | gk20a_writel(g, pwr_pmu_mutex_id_release_r(), data); | ||
1255 | 1252 | ||
1256 | gk20a_dbg_pmu("mutex released: id=%d, token=0x%x", | 1253 | data = gk20a_readl(g, pwr_pmu_mutex_id_release_r()); |
1257 | mutex->index, *token); | 1254 | data = set_field(data, pwr_pmu_mutex_id_release_value_m(), |
1258 | } | 1255 | pwr_pmu_mutex_id_release_value_f(owner)); |
1256 | gk20a_writel(g, pwr_pmu_mutex_id_release_r(), data); | ||
1257 | |||
1258 | gk20a_dbg_pmu("mutex released: id=%d, token=0x%x", | ||
1259 | mutex->index, *token); | ||
1259 | 1260 | ||
1260 | return 0; | 1261 | return 0; |
1261 | } | 1262 | } |