summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
authorAparna Das <aparnad@nvidia.com>2018-06-04 22:40:56 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-06-15 20:47:06 -0400
commit98d996f4ffb0137d119b5849cae46d7b7e5693e1 (patch)
tree4e3243b91e8e559dd14b8bc30fc2468713182027 /drivers/gpu/nvgpu/gk20a
parent1f51620fda57443c77506c354af837a60883d78b (diff)
gpu: nvgpu: recover on first interrupt reported for mmu nack
In case of mmu nack error interrupt is received twice through SM reported mmu nack interrupt and mmu fault in undertermined order. Recover on the first received interrupt to avoid semaphore release and skip doing a second recovery. Also fix NULL pointer dereference in function gv11b_fifo_reset_pbdma_and_eng_faulted when channel reference is invalid in teardown path. Bug 200382235 Change-Id: I361a5725d7b6355ebf02b2870727f647fbd7a37e Signed-off-by: Aparna Das <aparnad@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1739804 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.h2
2 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 551e8b04..4e6837ef 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -684,6 +684,8 @@ struct channel_gk20a *gk20a_open_new_channel(struct gk20a *g,
684 ch->subctx_id = 0; 684 ch->subctx_id = 0;
685 ch->runqueue_sel = 0; 685 ch->runqueue_sel = 0;
686 686
687 ch->mmu_nack_handled = false;
688
687 /* The channel is *not* runnable at this point. It still needs to have 689 /* The channel is *not* runnable at this point. It still needs to have
688 * an address space bound and allocate a gpfifo and grctx. */ 690 * an address space bound and allocate a gpfifo and grctx. */
689 691
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
index f95184be..aa37db62 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.h
@@ -295,6 +295,8 @@ struct channel_gk20a {
295 295
296 /* Any operating system specific data. */ 296 /* Any operating system specific data. */
297 void *os_priv; 297 void *os_priv;
298
299 bool mmu_nack_handled;
298}; 300};
299 301
300static inline struct channel_gk20a * 302static inline struct channel_gk20a *