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.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
index 9591c72a..11f389fb 100644
--- a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
@@ -175,6 +175,8 @@ static int init_engine_info(struct fifo_gk20a *f)
175 175
176 /* FIXME: retrieve this from server */ 176 /* FIXME: retrieve this from server */
177 gr_info->runlist_id = 0; 177 gr_info->runlist_id = 0;
178 f->active_engines_list[0] = gr_sw_id;
179
178 return 0; 180 return 0;
179} 181}
180 182
@@ -281,11 +283,14 @@ static int vgpu_init_fifo_setup_sw(struct gk20a *g)
281 f->tsg = vzalloc(f->num_channels * sizeof(*f->tsg)); 283 f->tsg = vzalloc(f->num_channels * sizeof(*f->tsg));
282 f->engine_info = kzalloc(f->max_engines * sizeof(*f->engine_info), 284 f->engine_info = kzalloc(f->max_engines * sizeof(*f->engine_info),
283 GFP_KERNEL); 285 GFP_KERNEL);
286 f->active_engines_list = kzalloc(f->max_engines * sizeof(u32),
287 GFP_KERNEL);
284 288
285 if (!(f->channel && f->tsg && f->engine_info)) { 289 if (!(f->channel && f->tsg && f->engine_info && f->active_engines_list)) {
286 err = -ENOMEM; 290 err = -ENOMEM;
287 goto clean_up; 291 goto clean_up;
288 } 292 }
293 memset(f->active_engines_list, 0xff, (f->max_engines * sizeof(u32)));
289 294
290 init_engine_info(f); 295 init_engine_info(f);
291 296
@@ -327,6 +332,8 @@ clean_up:
327 f->tsg = NULL; 332 f->tsg = NULL;
328 kfree(f->engine_info); 333 kfree(f->engine_info);
329 f->engine_info = NULL; 334 f->engine_info = NULL;
335 kfree(f->active_engines_list);
336 f->active_engines_list = NULL;
330 337
331 return err; 338 return err;
332} 339}