summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r--drivers/gpu/nvgpu/gv11b/hal_gv11b.c1
-rw-r--r--drivers/gpu/nvgpu/gv11b/mm_gv11b.c18
-rw-r--r--drivers/gpu/nvgpu/gv11b/mm_gv11b.h1
3 files changed, 14 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
index efac772c..d479fef8 100644
--- a/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/hal_gv11b.c
@@ -656,6 +656,7 @@ static const struct gpu_ops gv11b_ops = {
656 .init_bar2_vm = gp10b_init_bar2_vm, 656 .init_bar2_vm = gp10b_init_bar2_vm,
657 .remove_bar2_vm = gp10b_remove_bar2_vm, 657 .remove_bar2_vm = gp10b_remove_bar2_vm,
658 .fault_info_mem_destroy = gv11b_mm_fault_info_mem_destroy, 658 .fault_info_mem_destroy = gv11b_mm_fault_info_mem_destroy,
659 .mmu_fault_disable_hw = gv11b_mm_mmu_fault_disable_hw,
659 }, 660 },
660 .therm = { 661 .therm = {
661 .init_therm_setup_hw = gv11b_init_therm_setup_hw, 662 .init_therm_setup_hw = gv11b_init_therm_setup_hw,
diff --git a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
index 9373ee19..39c79bba 100644
--- a/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/mm_gv11b.c
@@ -67,15 +67,10 @@ bool gv11b_mm_mmu_fault_pending(struct gk20a *g)
67 return g->ops.fb.mmu_fault_pending(g); 67 return g->ops.fb.mmu_fault_pending(g);
68} 68}
69 69
70void gv11b_mm_fault_info_mem_destroy(struct gk20a *g) 70void gv11b_mm_mmu_fault_disable_hw(struct gk20a *g)
71{ 71{
72 struct vm_gk20a *vm = g->mm.bar2.vm;
73
74 nvgpu_log_fn(g, " ");
75
76 nvgpu_mutex_acquire(&g->mm.hub_isr_mutex); 72 nvgpu_mutex_acquire(&g->mm.hub_isr_mutex);
77 73
78
79 if ((g->ops.fb.is_fault_buf_enabled(g, 74 if ((g->ops.fb.is_fault_buf_enabled(g,
80 NVGPU_FB_MMU_FAULT_NONREPLAY_REG_INDEX))) { 75 NVGPU_FB_MMU_FAULT_NONREPLAY_REG_INDEX))) {
81 g->ops.fb.fault_buf_set_state_hw(g, 76 g->ops.fb.fault_buf_set_state_hw(g,
@@ -90,6 +85,17 @@ void gv11b_mm_fault_info_mem_destroy(struct gk20a *g)
90 NVGPU_FB_MMU_FAULT_BUF_DISABLED); 85 NVGPU_FB_MMU_FAULT_BUF_DISABLED);
91 } 86 }
92 87
88 nvgpu_mutex_release(&g->mm.hub_isr_mutex);
89}
90
91void gv11b_mm_fault_info_mem_destroy(struct gk20a *g)
92{
93 struct vm_gk20a *vm = g->mm.bar2.vm;
94
95 nvgpu_log_fn(g, " ");
96
97 nvgpu_mutex_acquire(&g->mm.hub_isr_mutex);
98
93 if (nvgpu_mem_is_valid( 99 if (nvgpu_mem_is_valid(
94 &g->mm.hw_fault_buf[NVGPU_MM_MMU_FAULT_TYPE_OTHER_AND_NONREPLAY])) 100 &g->mm.hw_fault_buf[NVGPU_MM_MMU_FAULT_TYPE_OTHER_AND_NONREPLAY]))
95 nvgpu_dma_unmap_free(vm, 101 nvgpu_dma_unmap_free(vm,
diff --git a/drivers/gpu/nvgpu/gv11b/mm_gv11b.h b/drivers/gpu/nvgpu/gv11b/mm_gv11b.h
index 6ad4a91a..ba247088 100644
--- a/drivers/gpu/nvgpu/gv11b/mm_gv11b.h
+++ b/drivers/gpu/nvgpu/gv11b/mm_gv11b.h
@@ -37,5 +37,6 @@ void gv11b_mm_l2_flush(struct gk20a *g, bool invalidate);
37u64 gv11b_gpu_phys_addr(struct gk20a *g, 37u64 gv11b_gpu_phys_addr(struct gk20a *g,
38 struct nvgpu_gmmu_attrs *attrs, u64 phys); 38 struct nvgpu_gmmu_attrs *attrs, u64 phys);
39void gv11b_mm_fault_info_mem_destroy(struct gk20a *g); 39void gv11b_mm_fault_info_mem_destroy(struct gk20a *g);
40void gv11b_mm_mmu_fault_disable_hw(struct gk20a *g);
40 41
41#endif 42#endif