diff options
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu')
-rw-r--r-- | drivers/gpu/nvgpu/vgpu/fifo_vgpu.c | 9 |
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 | } |