summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Hellsten <jhellsten@nvidia.com>2015-01-20 10:21:06 -0500
committerDan Willemsen <dwillemsen@nvidia.com>2015-04-04 21:03:23 -0400
commitf6587d13e4b33cd45841c42bd493faae8a7a7658 (patch)
treef36d81bbb2419bcb3291a634d14a6857bda4feaf
parentf11443daff6e61351039d2bd24b4918b45288a63 (diff)
gpu: nvgpu: gk20a: Add a gpfifo wait trace point
Add a couple of trace points for tracking when we need to wait for space in the gpfifo ring buffer. This wait can introduce significant latencies to rendering with large gpfifo entry inputs so it's good to be able to measure how often this path is taken. Bug 1592391 Bug 1550886 Change-Id: I7f362e9c307eeffeeecaaba268ef2e3613e54597 Signed-off-by: Janne Hellsten <jhellsten@nvidia.com> Reviewed-on: http://git-master/r/674021 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c2
-rw-r--r--include/trace/events/gk20a.h10
2 files changed, 12 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index b8f769a4..ab0333d6 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -1572,9 +1572,11 @@ int gk20a_submit_channel_gpfifo(struct channel_gk20a *c,
1572 /* Make sure we have enough space for gpfifo entries. If not, 1572 /* Make sure we have enough space for gpfifo entries. If not,
1573 * wait for signals from completed submits */ 1573 * wait for signals from completed submits */
1574 if (gp_free_count(c) < num_entries + extra_entries) { 1574 if (gp_free_count(c) < num_entries + extra_entries) {
1575 trace_gk20a_gpfifo_submit_wait_for_space(c->g->dev->name);
1575 err = wait_event_interruptible(c->submit_wq, 1576 err = wait_event_interruptible(c->submit_wq,
1576 get_gp_free_count(c) >= num_entries + extra_entries || 1577 get_gp_free_count(c) >= num_entries + extra_entries ||
1577 c->has_timedout); 1578 c->has_timedout);
1579 trace_gk20a_gpfifo_submit_wait_for_space_done(c->g->dev->name);
1578 } 1580 }
1579 1581
1580 if (c->has_timedout) { 1582 if (c->has_timedout) {
diff --git a/include/trace/events/gk20a.h b/include/trace/events/gk20a.h
index 8fa8cb94..32e3100a 100644
--- a/include/trace/events/gk20a.h
+++ b/include/trace/events/gk20a.h
@@ -55,6 +55,16 @@ DEFINE_EVENT(gk20a, gk20a_finalize_poweron_done,
55 TP_ARGS(name) 55 TP_ARGS(name)
56); 56);
57 57
58DEFINE_EVENT(gk20a, gk20a_gpfifo_submit_wait_for_space,
59 TP_PROTO(const char *name),
60 TP_ARGS(name)
61);
62
63DEFINE_EVENT(gk20a, gk20a_gpfifo_submit_wait_for_space_done,
64 TP_PROTO(const char *name),
65 TP_ARGS(name)
66);
67
58TRACE_EVENT(gk20a_channel_update, 68TRACE_EVENT(gk20a_channel_update,
59 TP_PROTO(const void *channel), 69 TP_PROTO(const void *channel),
60 TP_ARGS(channel), 70 TP_ARGS(channel),