diff options
author | Seema Khowala <seemaj@nvidia.com> | 2017-05-15 19:33:41 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-07-12 10:44:49 -0400 |
commit | 66fb130bfdf12175c117f36737503b1b5f33d42e (patch) | |
tree | d6a26dee697fc5e9f16e43328a448705a39ff5d4 /drivers/gpu/nvgpu/gv11b/ce_gv11b.c | |
parent | 971c90e3b6b7f1e3f5dff67ccd701c99c1b0f7b5 (diff) |
gpu: nvgpu: gv11b: recover from replay and ce mmu fault
Fix pte valid bit for replayable fault and ce fault
JIRA GPUT19X-12
Change-Id: I77a7a452d9b5b304f182e120e8d75959d46d4422
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1515538
GVS: Gerrit_Virtual_Submit
Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/ce_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/ce_gv11b.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/ce_gv11b.c b/drivers/gpu/nvgpu/gv11b/ce_gv11b.c index af87f990..9716c6d6 100644 --- a/drivers/gpu/nvgpu/gv11b/ce_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/ce_gv11b.c | |||
@@ -75,14 +75,23 @@ static void gv11b_ce_isr(struct gk20a *g, u32 inst_id, u32 pri_base) | |||
75 | gp10b_ce_isr(g, inst_id, pri_base); | 75 | gp10b_ce_isr(g, inst_id, pri_base); |
76 | } | 76 | } |
77 | 77 | ||
78 | void gv11b_ce_mthd_buffer_fault_in_bar2_fault(struct gk20a *g) | 78 | u32 gv11b_ce_get_num_lce(struct gk20a *g) |
79 | { | 79 | { |
80 | u32 reg_val, num_lce, lce, clear_intr; | 80 | u32 reg_val, num_lce; |
81 | 81 | ||
82 | reg_val = gk20a_readl(g, top_num_ces_r()); | 82 | reg_val = gk20a_readl(g, top_num_ces_r()); |
83 | num_lce = top_num_ces_value_v(reg_val); | 83 | num_lce = top_num_ces_value_v(reg_val); |
84 | nvgpu_log_info(g, "num LCE: %d", num_lce); | 84 | nvgpu_log_info(g, "num LCE: %d", num_lce); |
85 | 85 | ||
86 | return num_lce; | ||
87 | } | ||
88 | |||
89 | void gv11b_ce_mthd_buffer_fault_in_bar2_fault(struct gk20a *g) | ||
90 | { | ||
91 | u32 reg_val, num_lce, lce, clear_intr; | ||
92 | |||
93 | num_lce = gv11b_ce_get_num_lce(g); | ||
94 | |||
86 | for (lce = 0; lce < num_lce; lce++) { | 95 | for (lce = 0; lce < num_lce; lce++) { |
87 | reg_val = gk20a_readl(g, ce_intr_status_r(lce)); | 96 | reg_val = gk20a_readl(g, ce_intr_status_r(lce)); |
88 | if (reg_val & ce_intr_status_mthd_buffer_fault_pending_f()) { | 97 | if (reg_val & ce_intr_status_mthd_buffer_fault_pending_f()) { |