summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
index 028763a2..6744699f 100644
--- a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
@@ -557,6 +557,9 @@ int gk20a_ctxsw_trace_write(struct gk20a *g,
557 const char *reason; 557 const char *reason;
558 u32 write_idx; 558 u32 write_idx;
559 559
560 if (!g->ctxsw_trace)
561 return 0;
562
560 if (unlikely(entry->vmid >= GK20A_CTXSW_TRACE_NUM_DEVS)) 563 if (unlikely(entry->vmid >= GK20A_CTXSW_TRACE_NUM_DEVS))
561 return -ENODEV; 564 return -ENODEV;
562 565
@@ -643,8 +646,12 @@ done:
643 646
644void gk20a_ctxsw_trace_wake_up(struct gk20a *g, int vmid) 647void gk20a_ctxsw_trace_wake_up(struct gk20a *g, int vmid)
645{ 648{
646 struct gk20a_ctxsw_dev *dev = &g->ctxsw_trace->devs[vmid]; 649 struct gk20a_ctxsw_dev *dev;
650
651 if (!g->ctxsw_trace)
652 return;
647 653
654 dev = &g->ctxsw_trace->devs[vmid];
648 wake_up_interruptible(&dev->readout_wq); 655 wake_up_interruptible(&dev->readout_wq);
649} 656}
650 657
@@ -659,6 +666,9 @@ void gk20a_ctxsw_trace_channel_reset(struct gk20a *g, struct channel_gk20a *ch)
659 .pid = ch->pid, 666 .pid = ch->pid,
660 }; 667 };
661 668
669 if (!g->ctxsw_trace)
670 return;
671
662 gk20a_ctxsw_trace_write(g, &entry); 672 gk20a_ctxsw_trace_write(g, &entry);
663 gk20a_ctxsw_trace_wake_up(g, 0); 673 gk20a_ctxsw_trace_wake_up(g, 0);
664#endif 674#endif
@@ -677,6 +687,9 @@ void gk20a_ctxsw_trace_tsg_reset(struct gk20a *g, struct tsg_gk20a *tsg)
677 }; 687 };
678 struct channel_gk20a *ch; 688 struct channel_gk20a *ch;
679 689
690 if (!g->ctxsw_trace)
691 return;
692
680 mutex_lock(&tsg->ch_list_lock); 693 mutex_lock(&tsg->ch_list_lock);
681 ch = list_entry(&tsg->ch_list, struct channel_gk20a, ch_entry); 694 ch = list_entry(&tsg->ch_list, struct channel_gk20a, ch_entry);
682 mutex_unlock(&tsg->ch_list_lock); 695 mutex_unlock(&tsg->ch_list_lock);