diff options
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()) { |