diff options
author | Richard Zhao <rizhao@nvidia.com> | 2015-11-10 14:32:35 -0500 |
---|---|---|
committer | Vladislav Buzov <vbuzov@nvidia.com> | 2015-11-13 18:04:45 -0500 |
commit | 5a24e95fe605a2e7ec4d1a126c9bffd64bd77590 (patch) | |
tree | b80ab4d7d8ac3675461e5d07a8ab7a6d533afe4c /drivers | |
parent | f25f21c23181740972978b949b338a320698bc1e (diff) |
gpu: nvgpu: vgpu: add tsg initialization
It fixed kernel dump when run CUDA L0 test.
Bug 1594604
Change-Id: Ic986b34629052e915f4ccc5a5b6df198afaf2ff9
Signed-off-by: Richard Zhao <rizhao@nvidia.com>
Reviewed-on: http://git-master/r/831391
(cherry picked from commit 43d4ba4d6ffc6043e8425dc40967975afe3a95f1)
Reviewed-on: http://git-master/r/832416
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vladislav Buzov <vbuzov@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/fifo_vgpu.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c index a2ecd864..664f8c5b 100644 --- a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c +++ b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c | |||
@@ -271,10 +271,12 @@ static int vgpu_init_fifo_setup_sw(struct gk20a *g) | |||
271 | 271 | ||
272 | f->channel = kzalloc(f->num_channels * sizeof(*f->channel), | 272 | f->channel = kzalloc(f->num_channels * sizeof(*f->channel), |
273 | GFP_KERNEL); | 273 | GFP_KERNEL); |
274 | f->tsg = kzalloc(f->num_channels * sizeof(*f->tsg), | ||
275 | GFP_KERNEL); | ||
274 | f->engine_info = kzalloc(f->max_engines * sizeof(*f->engine_info), | 276 | f->engine_info = kzalloc(f->max_engines * sizeof(*f->engine_info), |
275 | GFP_KERNEL); | 277 | GFP_KERNEL); |
276 | 278 | ||
277 | if (!(f->channel && f->engine_info)) { | 279 | if (!(f->channel && f->tsg && f->engine_info)) { |
278 | err = -ENOMEM; | 280 | err = -ENOMEM; |
279 | goto clean_up; | 281 | goto clean_up; |
280 | } | 282 | } |
@@ -296,7 +298,9 @@ static int vgpu_init_fifo_setup_sw(struct gk20a *g) | |||
296 | f->userd.gpu_va + chid * f->userd_entry_size; | 298 | f->userd.gpu_va + chid * f->userd_entry_size; |
297 | 299 | ||
298 | gk20a_init_channel_support(g, chid); | 300 | gk20a_init_channel_support(g, chid); |
301 | gk20a_init_tsg_support(g, chid); | ||
299 | } | 302 | } |
303 | mutex_init(&f->tsg_inuse_mutex); | ||
300 | 304 | ||
301 | f->deferred_reset_pending = false; | 305 | f->deferred_reset_pending = false; |
302 | mutex_init(&f->deferred_reset_mutex); | 306 | mutex_init(&f->deferred_reset_mutex); |
@@ -315,6 +319,8 @@ clean_up: | |||
315 | 319 | ||
316 | kfree(f->channel); | 320 | kfree(f->channel); |
317 | f->channel = NULL; | 321 | f->channel = NULL; |
322 | kfree(f->tsg); | ||
323 | f->tsg = NULL; | ||
318 | kfree(f->engine_info); | 324 | kfree(f->engine_info); |
319 | f->engine_info = NULL; | 325 | f->engine_info = NULL; |
320 | 326 | ||