summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/vgpu/mm_vgpu.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/vgpu/mm_vgpu.c')
-rw-r--r--drivers/gpu/nvgpu/vgpu/mm_vgpu.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/vgpu/mm_vgpu.c b/drivers/gpu/nvgpu/vgpu/mm_vgpu.c
index 2b23c4e6..b5846043 100644
--- a/drivers/gpu/nvgpu/vgpu/mm_vgpu.c
+++ b/drivers/gpu/nvgpu/vgpu/mm_vgpu.c
@@ -53,9 +53,18 @@ static int vgpu_init_mm_setup_sw(struct gk20a *g)
53 53
54int vgpu_init_mm_support(struct gk20a *g) 54int vgpu_init_mm_support(struct gk20a *g)
55{ 55{
56 int err;
57
56 gk20a_dbg_fn(""); 58 gk20a_dbg_fn("");
57 59
58 return vgpu_init_mm_setup_sw(g); 60 err = vgpu_init_mm_setup_sw(g);
61 if (err)
62 return err;
63
64 if (g->ops.mm.init_mm_setup_hw)
65 err = g->ops.mm.init_mm_setup_hw(g);
66
67 return err;
59} 68}
60 69
61static u64 vgpu_locked_gmmu_map(struct vm_gk20a *vm, 70static u64 vgpu_locked_gmmu_map(struct vm_gk20a *vm,
@@ -275,7 +284,7 @@ static int vgpu_vm_alloc_share(struct gk20a_as_share *as_share,
275 for (i = 0; i < gmmu_nr_page_sizes; i++) 284 for (i = 0; i < gmmu_nr_page_sizes; i++)
276 vm->gmmu_page_sizes[i] = gmmu_page_sizes[i]; 285 vm->gmmu_page_sizes[i] = gmmu_page_sizes[i];
277 286
278 vm->big_pages = true; 287 vm->big_pages = !mm->disable_bigpage;
279 vm->big_page_size = big_page_size; 288 vm->big_page_size = big_page_size;
280 289
281 vm->va_start = big_page_size << 10; /* create a one pde hole */ 290 vm->va_start = big_page_size << 10; /* create a one pde hole */
@@ -450,4 +459,5 @@ void vgpu_init_mm_ops(struct gpu_ops *gops)
450 gops->mm.tlb_invalidate = vgpu_mm_tlb_invalidate; 459 gops->mm.tlb_invalidate = vgpu_mm_tlb_invalidate;
451 gops->mm.get_physical_addr_bits = gk20a_mm_get_physical_addr_bits; 460 gops->mm.get_physical_addr_bits = gk20a_mm_get_physical_addr_bits;
452 gops->mm.get_iova_addr = gk20a_mm_iova_addr; 461 gops->mm.get_iova_addr = gk20a_mm_iova_addr;
462 gops->mm.init_mm_setup_hw = NULL;
453} 463}