diff options
Diffstat (limited to 'drivers/gpu/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c index 7856f9fb..6c0e0539 100644 --- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c | |||
@@ -5584,8 +5584,20 @@ int gk20a_gr_isr(struct gk20a *g) | |||
5584 | &post_event, fault_ch); | 5584 | &post_event, fault_ch); |
5585 | 5585 | ||
5586 | /* signal clients waiting on an event */ | 5586 | /* signal clients waiting on an event */ |
5587 | if (gk20a_gr_sm_debugger_attached(g) && post_event && fault_ch) | 5587 | if (gk20a_gr_sm_debugger_attached(g) && post_event && fault_ch) { |
5588 | gk20a_dbg_gpu_post_events(fault_ch); | 5588 | if (gk20a_is_channel_marked_as_tsg(fault_ch)) { |
5589 | struct tsg_gk20a *tsg = &g->fifo.tsg[fault_ch->tsgid]; | ||
5590 | struct channel_gk20a *__ch; | ||
5591 | |||
5592 | mutex_lock(&tsg->ch_list_lock); | ||
5593 | list_for_each_entry(__ch, &tsg->ch_list, ch_entry) { | ||
5594 | gk20a_dbg_gpu_post_events(__ch); | ||
5595 | } | ||
5596 | mutex_unlock(&tsg->ch_list_lock); | ||
5597 | } else { | ||
5598 | gk20a_dbg_gpu_post_events(fault_ch); | ||
5599 | } | ||
5600 | } | ||
5589 | 5601 | ||
5590 | if (need_reset && ch) | 5602 | if (need_reset && ch) |
5591 | gk20a_set_error_notifier(ch, | 5603 | gk20a_set_error_notifier(ch, |