mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-22 09:12:24 +03:00
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>
This commit is contained in:
committed by
Dan Willemsen
parent
f11443daff
commit
f6587d13e4
@@ -1572,9 +1572,11 @@ int gk20a_submit_channel_gpfifo(struct channel_gk20a *c,
|
|||||||
/* Make sure we have enough space for gpfifo entries. If not,
|
/* Make sure we have enough space for gpfifo entries. If not,
|
||||||
* wait for signals from completed submits */
|
* wait for signals from completed submits */
|
||||||
if (gp_free_count(c) < num_entries + extra_entries) {
|
if (gp_free_count(c) < num_entries + extra_entries) {
|
||||||
|
trace_gk20a_gpfifo_submit_wait_for_space(c->g->dev->name);
|
||||||
err = wait_event_interruptible(c->submit_wq,
|
err = wait_event_interruptible(c->submit_wq,
|
||||||
get_gp_free_count(c) >= num_entries + extra_entries ||
|
get_gp_free_count(c) >= num_entries + extra_entries ||
|
||||||
c->has_timedout);
|
c->has_timedout);
|
||||||
|
trace_gk20a_gpfifo_submit_wait_for_space_done(c->g->dev->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->has_timedout) {
|
if (c->has_timedout) {
|
||||||
|
|||||||
@@ -55,6 +55,16 @@ DEFINE_EVENT(gk20a, gk20a_finalize_poweron_done,
|
|||||||
TP_ARGS(name)
|
TP_ARGS(name)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DEFINE_EVENT(gk20a, gk20a_gpfifo_submit_wait_for_space,
|
||||||
|
TP_PROTO(const char *name),
|
||||||
|
TP_ARGS(name)
|
||||||
|
);
|
||||||
|
|
||||||
|
DEFINE_EVENT(gk20a, gk20a_gpfifo_submit_wait_for_space_done,
|
||||||
|
TP_PROTO(const char *name),
|
||||||
|
TP_ARGS(name)
|
||||||
|
);
|
||||||
|
|
||||||
TRACE_EVENT(gk20a_channel_update,
|
TRACE_EVENT(gk20a_channel_update,
|
||||||
TP_PROTO(const void *channel),
|
TP_PROTO(const void *channel),
|
||||||
TP_ARGS(channel),
|
TP_ARGS(channel),
|
||||||
|
|||||||
Reference in New Issue
Block a user