summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/fifo_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/fifo_gv11b.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
index 97ab7aab..feed2002 100644
--- a/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/fifo_gv11b.c
@@ -1049,19 +1049,25 @@ void gv11b_fifo_teardown_ch_tsg(struct gk20a *g, u32 act_eng_bitmask,
1049#endif 1049#endif
1050 1050
1051 if (tsg) { 1051 if (tsg) {
1052 if (!g->fifo.deferred_reset_pending && 1052 if (g->fifo.deferred_reset_pending) {
1053 rc_type == RC_TYPE_MMU_FAULT) 1053 gk20a_disable_tsg(tsg);
1054 gk20a_fifo_set_ctx_mmu_error_tsg(g, tsg); 1054 } else {
1055 if (rc_type == RC_TYPE_MMU_FAULT)
1056 gk20a_fifo_set_ctx_mmu_error_tsg(g, tsg);
1055 1057
1056 gk20a_fifo_abort_tsg(g, tsg->tsgid, false); 1058 gk20a_fifo_abort_tsg(g, tsg->tsgid, false);
1059 }
1057 if (refch) 1060 if (refch)
1058 gk20a_channel_put(refch); 1061 gk20a_channel_put(refch);
1059 } else if (refch) { 1062 } else if (refch) {
1060 if (!g->fifo.deferred_reset_pending && 1063 if (g->fifo.deferred_reset_pending) {
1061 rc_type == RC_TYPE_MMU_FAULT) 1064 g->ops.fifo.disable_channel(refch);
1065 } else {
1066 if (rc_type == RC_TYPE_MMU_FAULT)
1062 gk20a_fifo_set_ctx_mmu_error_ch(g, refch); 1067 gk20a_fifo_set_ctx_mmu_error_ch(g, refch);
1063 1068
1064 gk20a_channel_abort(refch, false); 1069 gk20a_channel_abort(refch, false);
1070 }
1065 gk20a_channel_put(refch); 1071 gk20a_channel_put(refch);
1066 } else { 1072 } else {
1067 nvgpu_err(g, "id unknown, abort runlist"); 1073 nvgpu_err(g, "id unknown, abort runlist");