summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c21
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index b7bccd07..e0beefb1 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -857,6 +857,8 @@ static void gk20a_free_channel(struct channel_gk20a *ch)
857 struct vm_gk20a *ch_vm = ch->vm; 857 struct vm_gk20a *ch_vm = ch->vm;
858 unsigned long timeout = gk20a_get_gr_idle_timeout(g); 858 unsigned long timeout = gk20a_get_gr_idle_timeout(g);
859 struct dbg_session_gk20a *dbg_s; 859 struct dbg_session_gk20a *dbg_s;
860 struct dbg_session_data *session_data, *tmp_s;
861 struct dbg_session_channel_data *ch_data, *tmp;
860 bool was_reset; 862 bool was_reset;
861 863
862 gk20a_dbg_fn(""); 864 gk20a_dbg_fn("");
@@ -992,14 +994,21 @@ unbind:
992 WARN_ON(ch->sync); 994 WARN_ON(ch->sync);
993 995
994 /* unlink all debug sessions */ 996 /* unlink all debug sessions */
995 mutex_lock(&ch->dbg_s_lock); 997 mutex_lock(&g->dbg_sessions_lock);
996 998
997 list_for_each_entry(dbg_s, &ch->dbg_s_list, dbg_s_list_node) { 999 list_for_each_entry_safe(session_data, tmp_s,
998 dbg_s->ch = NULL; 1000 &ch->dbg_s_list, dbg_s_entry) {
999 list_del_init(&dbg_s->dbg_s_list_node); 1001 dbg_s = session_data->dbg_s;
1002 mutex_lock(&dbg_s->ch_list_lock);
1003 list_for_each_entry_safe(ch_data, tmp,
1004 &dbg_s->ch_list, ch_entry) {
1005 if (ch_data->chid == ch->hw_chid)
1006 dbg_unbind_single_channel_gk20a(dbg_s, ch_data);
1007 }
1008 mutex_unlock(&dbg_s->ch_list_lock);
1000 } 1009 }
1001 1010
1002 mutex_unlock(&ch->dbg_s_lock); 1011 mutex_unlock(&g->dbg_sessions_lock);
1003 1012
1004release: 1013release:
1005 /* make sure we catch accesses of unopened channels in case 1014 /* make sure we catch accesses of unopened channels in case