diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mc_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mc_gk20a.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c index 53701605..4d176403 100644 --- a/drivers/gpu/nvgpu/gk20a/mc_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mc_gk20a.c | |||
@@ -71,7 +71,7 @@ irqreturn_t mc_gk20a_intr_thread_stall(struct gk20a *g) | |||
71 | 71 | ||
72 | gk20a_dbg(gpu_dbg_intr, "stall intr %08x\n", mc_intr_0); | 72 | gk20a_dbg(gpu_dbg_intr, "stall intr %08x\n", mc_intr_0); |
73 | 73 | ||
74 | if (mc_intr_0 & mc_intr_0_pgraph_pending_f()) | 74 | if (mc_intr_0 & BIT(g->fifo.engine_info[ENGINE_GR_GK20A].intr_id)) |
75 | gr_gk20a_elpg_protected_call(g, gk20a_gr_isr(g)); | 75 | gr_gk20a_elpg_protected_call(g, gk20a_gr_isr(g)); |
76 | if (mc_intr_0 & mc_intr_0_pfifo_pending_f()) | 76 | if (mc_intr_0 & mc_intr_0_pfifo_pending_f()) |
77 | gk20a_fifo_isr(g); | 77 | gk20a_fifo_isr(g); |
@@ -105,7 +105,7 @@ irqreturn_t mc_gk20a_intr_thread_nonstall(struct gk20a *g) | |||
105 | 105 | ||
106 | if (mc_intr_1 & mc_intr_0_pfifo_pending_f()) | 106 | if (mc_intr_1 & mc_intr_0_pfifo_pending_f()) |
107 | gk20a_fifo_nonstall_isr(g); | 107 | gk20a_fifo_nonstall_isr(g); |
108 | if (mc_intr_1 & mc_intr_0_pgraph_pending_f()) | 108 | if (mc_intr_1 & BIT(g->fifo.engine_info[ENGINE_GR_GK20A].intr_id)) |
109 | gk20a_gr_nonstall_isr(g); | 109 | gk20a_gr_nonstall_isr(g); |
110 | 110 | ||
111 | gk20a_writel(g, mc_intr_en_1_r(), | 111 | gk20a_writel(g, mc_intr_en_1_r(), |
@@ -119,9 +119,20 @@ irqreturn_t mc_gk20a_intr_thread_nonstall(struct gk20a *g) | |||
119 | 119 | ||
120 | void mc_gk20a_intr_enable(struct gk20a *g) | 120 | void mc_gk20a_intr_enable(struct gk20a *g) |
121 | { | 121 | { |
122 | u32 eng_intr_mask = gk20a_fifo_engine_interrupt_mask(g); | ||
123 | |||
124 | gk20a_writel(g, mc_intr_mask_1_r(), | ||
125 | mc_intr_0_pfifo_pending_f() | ||
126 | | eng_intr_mask); | ||
122 | gk20a_writel(g, mc_intr_en_1_r(), | 127 | gk20a_writel(g, mc_intr_en_1_r(), |
123 | mc_intr_en_1_inta_hardware_f()); | 128 | mc_intr_en_1_inta_hardware_f()); |
124 | 129 | ||
130 | gk20a_writel(g, mc_intr_mask_0_r(), | ||
131 | mc_intr_0_pfifo_pending_f() | ||
132 | | mc_intr_0_priv_ring_pending_f() | ||
133 | | mc_intr_0_ltc_pending_f() | ||
134 | | mc_intr_0_pbus_pending_f() | ||
135 | | eng_intr_mask); | ||
125 | gk20a_writel(g, mc_intr_en_0_r(), | 136 | gk20a_writel(g, mc_intr_en_0_r(), |
126 | mc_intr_en_0_inta_hardware_f()); | 137 | mc_intr_en_0_inta_hardware_f()); |
127 | } | 138 | } |