summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
diff options
context:
space:
mode:
authorArto Merilainen <amerilainen@nvidia.com>2014-04-08 07:29:38 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:09:44 -0400
commitf2ef74fbfff11cad91cd08b3f1be69840f0aadda (patch)
tree35e3b3876673eff088a3415e0d7e97e08070465b /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c
parent6b71c1d7402837dc72da079e22f0bd0f068eaf14 (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.c21
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}