summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
diff options
context:
space:
mode:
authorRichard Zhao <rizhao@nvidia.com>2015-11-10 14:32:35 -0500
committerVladislav Buzov <vbuzov@nvidia.com>2015-11-13 18:04:45 -0500
commit5a24e95fe605a2e7ec4d1a126c9bffd64bd77590 (patch)
treeb80ab4d7d8ac3675461e5d07a8ab7a6d533afe4c /drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
parentf25f21c23181740972978b949b338a320698bc1e (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/gpu/nvgpu/vgpu/fifo_vgpu.c')
-rw-r--r--drivers/gpu/nvgpu/vgpu/fifo_vgpu.c8
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