diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2018-07-02 06:59:54 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-07-05 12:57:22 -0400 |
commit | 7f09c477c9cb85c7571bab4bf87dac4a72f25696 (patch) | |
tree | 46caf2e6fe425357224020eb21a3f12ceae0c975 /drivers/gpu/nvgpu/gv11b/fb_gv11b.c | |
parent | 5529f20b409a4c4c61a2ba65f45fd48a51fced36 (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.c | 9 |
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 @@ | |||
47 | static int gv11b_fb_fix_page_fault(struct gk20a *g, | 47 | static int gv11b_fb_fix_page_fault(struct gk20a *g, |
48 | struct mmu_fault_info *mmfault); | 48 | struct mmu_fault_info *mmfault); |
49 | 49 | ||
50 | static int gv11b_fb_mmu_invalidate_replay(struct gk20a *g, | ||
51 | u32 invalidate_replay_val); | ||
52 | |||
53 | static void gv11b_init_nvlink_soc_credits(struct gk20a *g) | 50 | static 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 | ||
1444 | static int gv11b_fb_mmu_invalidate_replay(struct gk20a *g, | 1441 | int 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; |