diff options
author | Seema Khowala <seemaj@nvidia.com> | 2017-03-01 16:40:32 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-30 19:39:11 -0400 |
commit | f21659431f47722bc7596aa72d22a268967ea696 (patch) | |
tree | 3bd6d1167df2cd2411f092cf4f00120c4e622c8d /drivers/gpu/nvgpu/gp10b | |
parent | 8aa218e0ec54bfca3ad6d6d67a3b936c56335644 (diff) |
gpu: ngpu: add fb ops for hub isr
If supported, detect and handle hub interrupt
JIRA GPUT19X-7
Change-Id: I431c92160636afb2bc94ff2677614023de595681
Signed-off-by: Seema Khowala <seemaj@nvidia.com>
Reviewed-on: http://git-master/r/1313452
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b')
-rw-r--r-- | drivers/gpu/nvgpu/gp10b/mc_gp10b.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c index 4b0cbc1c..4a8dc4c1 100644 --- a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c +++ b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c | |||
@@ -131,7 +131,7 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g) | |||
131 | mc_intr_0 = gk20a_readl(g, mc_intr_r(0)); | 131 | mc_intr_0 = gk20a_readl(g, mc_intr_r(0)); |
132 | hw_irq_count = atomic_read(&g->hw_irq_stall_count); | 132 | hw_irq_count = atomic_read(&g->hw_irq_stall_count); |
133 | 133 | ||
134 | gk20a_dbg(gpu_dbg_intr, "stall intr %08x\n", mc_intr_0); | 134 | gk20a_dbg(gpu_dbg_intr, "stall intr 0x%08x\n", mc_intr_0); |
135 | 135 | ||
136 | for (engine_id_idx = 0; engine_id_idx < g->fifo.num_engines; engine_id_idx++) { | 136 | for (engine_id_idx = 0; engine_id_idx < g->fifo.num_engines; engine_id_idx++) { |
137 | active_engine_id = g->fifo.active_engines_list[engine_id_idx]; | 137 | active_engine_id = g->fifo.active_engines_list[engine_id_idx]; |
@@ -153,6 +153,9 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g) | |||
153 | } | 153 | } |
154 | } | 154 | } |
155 | } | 155 | } |
156 | if (g->ops.mc.is_intr_hub_pending && | ||
157 | g->ops.mc.is_intr_hub_pending(g, mc_intr_0)) | ||
158 | g->ops.fb.hub_isr(g); | ||
156 | if (mc_intr_0 & mc_intr_pfifo_pending_f()) | 159 | if (mc_intr_0 & mc_intr_pfifo_pending_f()) |
157 | gk20a_fifo_isr(g); | 160 | gk20a_fifo_isr(g); |
158 | if (mc_intr_0 & mc_intr_pmu_pending_f()) | 161 | if (mc_intr_0 & mc_intr_pmu_pending_f()) |
@@ -167,6 +170,8 @@ irqreturn_t mc_gp10b_intr_thread_stall(struct gk20a *g) | |||
167 | /* sync handled irq counter before re-enabling interrupts */ | 170 | /* sync handled irq counter before re-enabling interrupts */ |
168 | atomic_set(&g->sw_irq_stall_last_handled, hw_irq_count); | 171 | atomic_set(&g->sw_irq_stall_last_handled, hw_irq_count); |
169 | 172 | ||
173 | gk20a_dbg(gpu_dbg_intr, "stall intr done 0x%08x\n", mc_intr_0); | ||
174 | |||
170 | gk20a_writel(g, mc_intr_en_set_r(NVGPU_MC_INTR_STALLING), | 175 | gk20a_writel(g, mc_intr_en_set_r(NVGPU_MC_INTR_STALLING), |
171 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_STALLING]); | 176 | g->ops.mc.intr_mask_restore[NVGPU_MC_INTR_STALLING]); |
172 | 177 | ||