summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-05-23 13:22:29 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-05-23 17:48:02 -0400
commitd16da3baec15b470c6cb1e1c58eadea60b8ffe83 (patch)
tree31b898bd77ff79036654f8d710b2d72322b53af5 /drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
parentfb64e1f1b9c2162f521dfe3956655accb911d6a7 (diff)
gpu: nvgpu: Add checks for tracing enabled
Add checks for all ctxsw trace functions declared in header. This makes sure chips without tracing support continue to work. Change-Id: Ic658a00821b589a7b770c1fde52afede02dc1c9c Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1151918 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: Thomas Fleury <tfleury@nvidia.com> GVS: Gerrit_Virtual_Submit
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);