diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/tsg_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/tsg_gk20a.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c index 7c65c695..d4ece147 100644 --- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c | |||
@@ -165,6 +165,9 @@ int gk20a_tsg_dev_open(struct inode *inode, struct file *filp) | |||
165 | tsg->g = g; | 165 | tsg->g = g; |
166 | tsg->num_runnable_channels = 0; | 166 | tsg->num_runnable_channels = 0; |
167 | 167 | ||
168 | tsg->tsg_gr_ctx = NULL; | ||
169 | tsg->vm = NULL; | ||
170 | |||
168 | filp->private_data = tsg; | 171 | filp->private_data = tsg; |
169 | 172 | ||
170 | gk20a_dbg(gpu_dbg_fn, "tsg opened %d\n", tsg->tsgid); | 173 | gk20a_dbg(gpu_dbg_fn, "tsg opened %d\n", tsg->tsgid); |
@@ -185,6 +188,13 @@ int gk20a_tsg_dev_release(struct inode *inode, struct file *filp) | |||
185 | return -EBUSY; | 188 | return -EBUSY; |
186 | } | 189 | } |
187 | 190 | ||
191 | if (tsg->tsg_gr_ctx) { | ||
192 | gr_gk20a_free_tsg_gr_ctx(tsg); | ||
193 | tsg->tsg_gr_ctx = NULL; | ||
194 | } | ||
195 | if (tsg->vm) | ||
196 | tsg->vm = NULL; | ||
197 | |||
188 | release_used_tsg(&g->fifo, tsg); | 198 | release_used_tsg(&g->fifo, tsg); |
189 | 199 | ||
190 | gk20a_dbg(gpu_dbg_fn, "tsg released %d\n", tsg->tsgid); | 200 | gk20a_dbg(gpu_dbg_fn, "tsg released %d\n", tsg->tsgid); |