summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2014-09-04 10:02:00 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:11:10 -0400
commit8095b3cf9cadbcf42a0e5fdcf3fb32cf87c55798 (patch)
tree8ea662e804502a705f41ad1f67e35559cfaff2dd /drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
parentb81e9a2431e9a045e586ff028e0262e99202b3f0 (diff)
gpu: nvgpu: get VM reference for TSG
We store a reference to common address space of channels in struct tsg_gk20a without increasing the refcount This could result in freeing the address space even when some channel in TSG needs it or when we need to free common gr_ctx Fix this by getting ref using gk20a_vm_get() when we store the VM reference. We drop this reference with gk20a_vm_put() when closing the TSG Bug 1470692 Change-Id: Ifc1f29d32cd721810bfbb5a4db96095770318c17 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/495668 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/tsg_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
index e7b70894..849c3f6a 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
@@ -161,8 +161,10 @@ static void gk20a_tsg_release(struct kref *ref)
161 gr_gk20a_free_tsg_gr_ctx(tsg); 161 gr_gk20a_free_tsg_gr_ctx(tsg);
162 tsg->tsg_gr_ctx = NULL; 162 tsg->tsg_gr_ctx = NULL;
163 } 163 }
164 if (tsg->vm) 164 if (tsg->vm) {
165 gk20a_vm_put(tsg->vm);
165 tsg->vm = NULL; 166 tsg->vm = NULL;
167 }
166 168
167 release_used_tsg(&g->fifo, tsg); 169 release_used_tsg(&g->fifo, tsg);
168 170