summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2018-07-02 06:59:54 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-07-05 12:57:22 -0400
commit7f09c477c9cb85c7571bab4bf87dac4a72f25696 (patch)
tree46caf2e6fe425357224020eb21a3f12ceae0c975 /drivers/gpu/nvgpu/gv11b/fb_gv11b.c
parent5529f20b409a4c4c61a2ba65f45fd48a51fced36 (diff)
gpu: nvgpu: add HAL to invalidate replay mmu fault
Add new HAL gops.fb.mmu_invalidate_replay() to invalidate replay mmu fault Use existing API gv11b_fb_mmu_invalidate_replay() to set to this HAL on all Volta chips Bug 2228914 Jira NVGPU-838 Jira NVGPUT-73 Change-Id: I394901857d41499f3ea44023393fe271fb664260 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1767970 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/fb_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/fb_gv11b.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
index 54f0d2d8..d50885f9 100644
--- a/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/fb_gv11b.c
@@ -47,9 +47,6 @@
47static int gv11b_fb_fix_page_fault(struct gk20a *g, 47static int gv11b_fb_fix_page_fault(struct gk20a *g,
48 struct mmu_fault_info *mmfault); 48 struct mmu_fault_info *mmfault);
49 49
50static int gv11b_fb_mmu_invalidate_replay(struct gk20a *g,
51 u32 invalidate_replay_val);
52
53static void gv11b_init_nvlink_soc_credits(struct gk20a *g) 50static void gv11b_init_nvlink_soc_credits(struct gk20a *g)
54{ 51{
55 if (nvgpu_is_bpmp_running(g) && (!nvgpu_platform_is_simulation(g))) { 52 if (nvgpu_is_bpmp_running(g) && (!nvgpu_platform_is_simulation(g))) {
@@ -989,12 +986,12 @@ static int gv11b_fb_replay_or_cancel_faults(struct gk20a *g,
989 * cancel faults so that next time it faults as 986 * cancel faults so that next time it faults as
990 * replayable faults and channel recovery can be done 987 * replayable faults and channel recovery can be done
991 */ 988 */
992 err = gv11b_fb_mmu_invalidate_replay(g, 989 err = g->ops.fb.mmu_invalidate_replay(g,
993 fb_mmu_invalidate_replay_cancel_global_f()); 990 fb_mmu_invalidate_replay_cancel_global_f());
994 } else if (invalidate_replay_val & 991 } else if (invalidate_replay_val &
995 fb_mmu_invalidate_replay_start_ack_all_f()) { 992 fb_mmu_invalidate_replay_start_ack_all_f()) {
996 /* pte valid is fixed. replay faulting request */ 993 /* pte valid is fixed. replay faulting request */
997 err = gv11b_fb_mmu_invalidate_replay(g, 994 err = g->ops.fb.mmu_invalidate_replay(g,
998 fb_mmu_invalidate_replay_start_ack_all_f()); 995 fb_mmu_invalidate_replay_start_ack_all_f());
999 } 996 }
1000 997
@@ -1441,7 +1438,7 @@ bool gv11b_fb_mmu_fault_pending(struct gk20a *g)
1441 return false; 1438 return false;
1442} 1439}
1443 1440
1444static int gv11b_fb_mmu_invalidate_replay(struct gk20a *g, 1441int gv11b_fb_mmu_invalidate_replay(struct gk20a *g,
1445 u32 invalidate_replay_val) 1442 u32 invalidate_replay_val)
1446{ 1443{
1447 int err = -ETIMEDOUT; 1444 int err = -ETIMEDOUT;