summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
diff options
context:
space:
mode:
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