diff options
author | Debarshi Dutta <ddutta@nvidia.com> | 2017-08-08 02:38:03 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-08-24 04:10:37 -0400 |
commit | 3fa47b877db1edc16018d662e7b9915d92354745 (patch) | |
tree | c1d9a8734e7d92b5ae647fbc3f582a01207a23f6 /drivers/gpu/nvgpu/gk20a/sched_gk20a.c | |
parent | 8662fae334f2419da2e7fd220f7734217ec52433 (diff) |
gpu: nvgpu: Replace kref for refcounting in nvgpu
- added wrapper struct nvgpu_ref over nvgpu_atomic_t
- added nvgpu_ref_* APIs to access the above struct
JIRA NVGPU-140
Change-Id: Id47f897995dd4721751f7610b6d4d4fbfe4d6b9a
Signed-off-by: Debarshi Dutta <ddutta@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1540899
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/sched_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/sched_gk20a.c | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/sched_gk20a.c b/drivers/gpu/nvgpu/gk20a/sched_gk20a.c index 014848ba..ac54addd 100644 --- a/drivers/gpu/nvgpu/gk20a/sched_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/sched_gk20a.c | |||
@@ -189,7 +189,7 @@ static int gk20a_sched_dev_ioctl_get_params(struct gk20a_sched_ctrl *sched, | |||
189 | return -EINVAL; | 189 | return -EINVAL; |
190 | 190 | ||
191 | tsg = &f->tsg[tsgid]; | 191 | tsg = &f->tsg[tsgid]; |
192 | if (!kref_get_unless_zero(&tsg->refcount)) | 192 | if (!nvgpu_ref_get_unless_zero(&tsg->refcount)) |
193 | return -ENXIO; | 193 | return -ENXIO; |
194 | 194 | ||
195 | arg->pid = tsg->tgid; /* kernel tgid corresponds to user pid */ | 195 | arg->pid = tsg->tgid; /* kernel tgid corresponds to user pid */ |
@@ -206,7 +206,7 @@ static int gk20a_sched_dev_ioctl_get_params(struct gk20a_sched_ctrl *sched, | |||
206 | arg->compute_preempt_mode = 0; | 206 | arg->compute_preempt_mode = 0; |
207 | } | 207 | } |
208 | 208 | ||
209 | kref_put(&tsg->refcount, gk20a_tsg_release); | 209 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
210 | 210 | ||
211 | return 0; | 211 | return 0; |
212 | } | 212 | } |
@@ -227,7 +227,7 @@ static int gk20a_sched_dev_ioctl_tsg_set_timeslice( | |||
227 | return -EINVAL; | 227 | return -EINVAL; |
228 | 228 | ||
229 | tsg = &f->tsg[tsgid]; | 229 | tsg = &f->tsg[tsgid]; |
230 | if (!kref_get_unless_zero(&tsg->refcount)) | 230 | if (!nvgpu_ref_get_unless_zero(&tsg->refcount)) |
231 | return -ENXIO; | 231 | return -ENXIO; |
232 | 232 | ||
233 | err = gk20a_busy(g); | 233 | err = gk20a_busy(g); |
@@ -239,7 +239,7 @@ static int gk20a_sched_dev_ioctl_tsg_set_timeslice( | |||
239 | gk20a_idle(g); | 239 | gk20a_idle(g); |
240 | 240 | ||
241 | done: | 241 | done: |
242 | kref_put(&tsg->refcount, gk20a_tsg_release); | 242 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
243 | 243 | ||
244 | return err; | 244 | return err; |
245 | } | 245 | } |
@@ -260,7 +260,7 @@ static int gk20a_sched_dev_ioctl_tsg_set_runlist_interleave( | |||
260 | return -EINVAL; | 260 | return -EINVAL; |
261 | 261 | ||
262 | tsg = &f->tsg[tsgid]; | 262 | tsg = &f->tsg[tsgid]; |
263 | if (!kref_get_unless_zero(&tsg->refcount)) | 263 | if (!nvgpu_ref_get_unless_zero(&tsg->refcount)) |
264 | return -ENXIO; | 264 | return -ENXIO; |
265 | 265 | ||
266 | err = gk20a_busy(g); | 266 | err = gk20a_busy(g); |
@@ -272,7 +272,7 @@ static int gk20a_sched_dev_ioctl_tsg_set_runlist_interleave( | |||
272 | gk20a_idle(g); | 272 | gk20a_idle(g); |
273 | 273 | ||
274 | done: | 274 | done: |
275 | kref_put(&tsg->refcount, gk20a_tsg_release); | 275 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
276 | 276 | ||
277 | return err; | 277 | return err; |
278 | } | 278 | } |
@@ -320,7 +320,7 @@ static int gk20a_sched_dev_ioctl_get_tsg(struct gk20a_sched_ctrl *sched, | |||
320 | return -EINVAL; | 320 | return -EINVAL; |
321 | 321 | ||
322 | tsg = &f->tsg[tsgid]; | 322 | tsg = &f->tsg[tsgid]; |
323 | if (!kref_get_unless_zero(&tsg->refcount)) | 323 | if (!nvgpu_ref_get_unless_zero(&tsg->refcount)) |
324 | return -ENXIO; | 324 | return -ENXIO; |
325 | 325 | ||
326 | nvgpu_mutex_acquire(&sched->status_lock); | 326 | nvgpu_mutex_acquire(&sched->status_lock); |
@@ -328,7 +328,7 @@ static int gk20a_sched_dev_ioctl_get_tsg(struct gk20a_sched_ctrl *sched, | |||
328 | nvgpu_warn(g, "tsgid=%d already referenced", tsgid); | 328 | nvgpu_warn(g, "tsgid=%d already referenced", tsgid); |
329 | /* unlock status_lock as gk20a_tsg_release locks it */ | 329 | /* unlock status_lock as gk20a_tsg_release locks it */ |
330 | nvgpu_mutex_release(&sched->status_lock); | 330 | nvgpu_mutex_release(&sched->status_lock); |
331 | kref_put(&tsg->refcount, gk20a_tsg_release); | 331 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
332 | return -ENXIO; | 332 | return -ENXIO; |
333 | } | 333 | } |
334 | 334 | ||
@@ -364,7 +364,7 @@ static int gk20a_sched_dev_ioctl_put_tsg(struct gk20a_sched_ctrl *sched, | |||
364 | nvgpu_mutex_release(&sched->status_lock); | 364 | nvgpu_mutex_release(&sched->status_lock); |
365 | 365 | ||
366 | tsg = &f->tsg[tsgid]; | 366 | tsg = &f->tsg[tsgid]; |
367 | kref_put(&tsg->refcount, gk20a_tsg_release); | 367 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
368 | 368 | ||
369 | return 0; | 369 | return 0; |
370 | } | 370 | } |
@@ -507,7 +507,7 @@ int gk20a_sched_dev_release(struct inode *inode, struct file *filp) | |||
507 | for (tsgid = 0; tsgid < f->num_channels; tsgid++) { | 507 | for (tsgid = 0; tsgid < f->num_channels; tsgid++) { |
508 | if (NVGPU_SCHED_ISSET(tsgid, sched->ref_tsg_bitmap)) { | 508 | if (NVGPU_SCHED_ISSET(tsgid, sched->ref_tsg_bitmap)) { |
509 | tsg = &f->tsg[tsgid]; | 509 | tsg = &f->tsg[tsgid]; |
510 | kref_put(&tsg->refcount, gk20a_tsg_release); | 510 | nvgpu_ref_put(&tsg->refcount, gk20a_tsg_release); |
511 | } | 511 | } |
512 | } | 512 | } |
513 | 513 | ||