On 15.11.2013 06:48, Steven Rostedt wrote: > I've been reviewing different users of tracepoints and I stumbled > across this: > > drivers/gpu/host1x/cdma.c: host1x_cdma_push() > > if (host1x_debug_trace_cmdbuf) > trace_host1x_cdma_push(dev_name(cdma_to_channel(cdma)->dev), > op1, op2); > > That host1x_debug_trace_cmdbuf is a variable that gets set by another > debugfs file "trace_cmdbuf" that is custom to this driver. > > Why?
This is because it takes a lot of time to prepare for dumping the cmdbuf data, like mapping buffer and unmapping after tracing. We want to avoid all that preparation time. > The tracepoint host1x_cdma_push is already controlled by either ftrace > or perf. If it gets enabled by perf or ftrace, it still wont be traced > unless we also enable this trace_cmdbuf. Is there some reason for this? > I can't figure it out from the change log: 6236451d83a720 ("gpu: > host1x: Add debug support"). > > As tracepoints uses jump labels, there is no branch cost associated > with them. That is, they are either a direct jump, or a nop (in most > cases a nop). But here you added the overhead of a conditional branch > depending on this variable. > > If this is truly needed, then use TRACE_EVENT_CONDITION() for that > tracepoint. TRACE_EVENT_CONDITION() isn't documented, so I don't know how that would help. Terje -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/