summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2018-05-25 13:43:01 -0400
committerTejal Kudav <tkudav@nvidia.com>2018-06-14 09:44:07 -0400
commitd4dfa63e6c324430ad2cac4fabb73a95858b2573 (patch)
tree1a4816e148827901ac1d23a6fbdf2729d1633469
parent27694ca572c4d7698b107c6713f0f0604b41c186 (diff)
gpu: nvgpu: Combine variants of init_mm_setup_hw
gp10b and gk20a variants of init_mm_setup_hw were essentially the same. Delete the gp10b version and use gk20a variant instead. gv11b variant now also inherits gk20a variant. JIRA NVGPU-588 Change-Id: I842516a1c0be68562ad0ece6e1837a1416d24957 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1730897 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gp106/hal_gp106.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/gp10b/mm_gp10b.c31
-rw-r--r--drivers/gpu/nvgpu/gp10b/mm_gp10b.h1
-rw-r--r--drivers/gpu/nvgpu/gv11b/mm_gv11b.c10
5 files changed, 3 insertions, 43 deletions
diff --git a/drivers/gpu/nvgpu/gp106/hal_gp106.c b/drivers/gpu/nvgpu/gp106/hal_gp106.c
index f35abac7..67a7968a 100644
--- a/drivers/gpu/nvgpu/gp106/hal_gp106.c
+++ b/drivers/gpu/nvgpu/gp106/hal_gp106.c
@@ -578,7 +578,7 @@ static const struct gpu_ops gp106_ops = {
578 .gpu_phys_addr = gm20b_gpu_phys_addr, 578 .gpu_phys_addr = gm20b_gpu_phys_addr,
579 .get_mmu_levels = gp10b_mm_get_mmu_levels, 579 .get_mmu_levels = gp10b_mm_get_mmu_levels,
580 .init_pdb = gp10b_mm_init_pdb, 580 .init_pdb = gp10b_mm_init_pdb,
581 .init_mm_setup_hw = gp10b_init_mm_setup_hw, 581 .init_mm_setup_hw = gk20a_init_mm_setup_hw,
582 .is_bar1_supported = gm20b_mm_is_bar1_supported, 582 .is_bar1_supported = gm20b_mm_is_bar1_supported,
583 .alloc_inst_block = gk20a_alloc_inst_block, 583 .alloc_inst_block = gk20a_alloc_inst_block,
584 .init_inst_block = gk20a_init_inst_block, 584 .init_inst_block = gk20a_init_inst_block,
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
index 8cd2a582..d966f49a 100644
--- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
@@ -549,7 +549,7 @@ static const struct gpu_ops gp10b_ops = {
549 .get_iommu_bit = gp10b_mm_get_iommu_bit, 549 .get_iommu_bit = gp10b_mm_get_iommu_bit,
550 .get_mmu_levels = gp10b_mm_get_mmu_levels, 550 .get_mmu_levels = gp10b_mm_get_mmu_levels,
551 .init_pdb = gp10b_mm_init_pdb, 551 .init_pdb = gp10b_mm_init_pdb,
552 .init_mm_setup_hw = gp10b_init_mm_setup_hw, 552 .init_mm_setup_hw = gk20a_init_mm_setup_hw,
553 .is_bar1_supported = gm20b_mm_is_bar1_supported, 553 .is_bar1_supported = gm20b_mm_is_bar1_supported,
554 .alloc_inst_block = gk20a_alloc_inst_block, 554 .alloc_inst_block = gk20a_alloc_inst_block,
555 .init_inst_block = gk20a_init_inst_block, 555 .init_inst_block = gk20a_init_inst_block,
diff --git a/drivers/gpu/nvgpu/gp10b/mm_gp10b.c b/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
index 50c96f36..54772d42 100644
--- a/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/mm_gp10b.c
@@ -46,37 +46,6 @@ u32 gp10b_mm_get_iommu_bit(struct gk20a *g)
46 return 36; 46 return 36;
47} 47}
48 48
49int gp10b_init_mm_setup_hw(struct gk20a *g)
50{
51 struct mm_gk20a *mm = &g->mm;
52 struct nvgpu_mem *inst_block = &mm->bar1.inst_block;
53 int err = 0;
54
55 nvgpu_log_fn(g, " ");
56
57 g->ops.fb.set_mmu_page_size(g);
58
59 gk20a_writel(g, fb_niso_flush_sysmem_addr_r(),
60 nvgpu_mem_get_addr(g, &g->mm.sysmem_flush) >> 8ULL);
61
62 g->ops.bus.bar1_bind(g, inst_block);
63
64 if (g->ops.bus.bar2_bind) {
65 err = g->ops.bus.bar2_bind(g, &g->mm.bar2.inst_block);
66 if (err)
67 return err;
68 }
69
70 if (gk20a_mm_fb_flush(g) || gk20a_mm_fb_flush(g))
71 return -EBUSY;
72
73 err = gp10b_replayable_pagefault_buffer_init(g);
74
75 nvgpu_log_fn(g, "done");
76 return err;
77
78}
79
80int gp10b_init_bar2_vm(struct gk20a *g) 49int gp10b_init_bar2_vm(struct gk20a *g)
81{ 50{
82 int err; 51 int err;
diff --git a/drivers/gpu/nvgpu/gp10b/mm_gp10b.h b/drivers/gpu/nvgpu/gp10b/mm_gp10b.h
index 4f37aae6..cf84f7cf 100644
--- a/drivers/gpu/nvgpu/gp10b/mm_gp10b.h
+++ b/drivers/gpu/nvgpu/gp10b/mm_gp10b.h
@@ -30,7 +30,6 @@ struct vm_gk20a;
30 30
31u32 gp10b_mm_get_default_big_page_size(void); 31u32 gp10b_mm_get_default_big_page_size(void);
32u32 gp10b_mm_get_iommu_bit(struct gk20a *g); 32u32 gp10b_mm_get_iommu_bit(struct gk20a *g);
33int gp10b_init_mm_setup_hw(struct gk20a *g);
34int gp10b_init_bar2_vm(struct gk20a *g); 33int gp10b_init_bar2_vm(struct gk20a *g);
35const struct gk20a_mmu_level *gp10b_mm_get_mmu_levels(struct gk20a *g, 34const struct gk20a_mmu_level *gp10b_mm_get_mmu_levels(struct gk20a *g,
36 u32 big_page_size); 35 u32 big_page_size);
diff --git a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
index 6c38365c..e1d90829 100644
--- a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
@@ -232,15 +232,7 @@ int gv11b_init_mm_setup_hw(struct gk20a *g)
232 232
233 nvgpu_log_fn(g, " "); 233 nvgpu_log_fn(g, " ");
234 234
235 g->ops.fb.set_mmu_page_size(g); 235 err = gk20a_init_mm_setup_hw(g);
236 g->ops.fb.init_hw(g);
237
238 err = g->ops.bus.bar2_bind(g, &g->mm.bar2.inst_block);
239 if (err)
240 return err;
241
242 if (gk20a_mm_fb_flush(g) || gk20a_mm_fb_flush(g))
243 return -EBUSY;
244 236
245 err = gv11b_mm_mmu_fault_setup_sw(g); 237 err = gv11b_mm_mmu_fault_setup_sw(g);
246 if (!err) 238 if (!err)