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.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
index 55b3de07..7029498d 100644
--- a/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/fifo_vgpu.c
@@ -270,17 +270,21 @@ static int vgpu_init_fifo_setup_sw(struct gk20a *g)
270 } 270 }
271 271
272 /* bar1 va */ 272 /* bar1 va */
273 f->userd.gpu_va = vgpu_bar1_map(g, &f->userd.priv.sgt, f->userd.size); 273 if (g->ops.mm.is_bar1_supported(g)) {
274 if (!f->userd.gpu_va) { 274 f->userd.gpu_va = vgpu_bar1_map(g, &f->userd.priv.sgt,
275 dev_err(d, "gmmu mapping failed\n"); 275 f->userd.size);
276 goto clean_up; 276 if (!f->userd.gpu_va) {
277 dev_err(d, "gmmu mapping failed\n");
278 goto clean_up;
279 }
280 /* if reduced BAR1 range is specified, use offset of 0
281 * (server returns offset assuming full BAR1 range)
282 */
283 if (resource_size(g->bar1_mem) ==
284 (resource_size_t)f->userd.size)
285 f->userd.gpu_va = 0;
277 } 286 }
278 287
279 /* if reduced BAR1 range is specified, use offset of 0
280 (server returns offset assuming full BAR1 range) */
281 if (resource_size(g->bar1_mem) == (resource_size_t)f->userd.size)
282 f->userd.gpu_va = 0;
283
284 gk20a_dbg(gpu_dbg_map_v, "userd bar1 va = 0x%llx", f->userd.gpu_va); 288 gk20a_dbg(gpu_dbg_map_v, "userd bar1 va = 0x%llx", f->userd.gpu_va);
285 289
286 f->channel = nvgpu_vzalloc(g, f->num_channels * sizeof(*f->channel)); 290 f->channel = nvgpu_vzalloc(g, f->num_channels * sizeof(*f->channel));
@@ -403,7 +407,8 @@ int vgpu_init_fifo_support(struct gk20a *g)
403 if (err) 407 if (err)
404 return err; 408 return err;
405 409
406 err = vgpu_init_fifo_setup_hw(g); 410 if (g->ops.fifo.init_fifo_setup_hw)
411 err = g->ops.fifo.init_fifo_setup_hw(g);
407 return err; 412 return err;
408} 413}
409 414
@@ -788,6 +793,7 @@ u32 vgpu_fifo_default_timeslice_us(struct gk20a *g)
788 793
789void vgpu_init_fifo_ops(struct gpu_ops *gops) 794void vgpu_init_fifo_ops(struct gpu_ops *gops)
790{ 795{
796 gops->fifo.init_fifo_setup_hw = vgpu_init_fifo_setup_hw;
791 gops->fifo.bind_channel = vgpu_channel_bind; 797 gops->fifo.bind_channel = vgpu_channel_bind;
792 gops->fifo.unbind_channel = vgpu_channel_unbind; 798 gops->fifo.unbind_channel = vgpu_channel_unbind;
793 gops->fifo.enable_channel = vgpu_channel_enable; 799 gops->fifo.enable_channel = vgpu_channel_enable;