tracing: Add NMI tracing in hwlat detector
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>
Thu, 4 Aug 2016 16:49:53 +0000 (12:49 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Fri, 2 Sep 2016 16:47:55 +0000 (12:47 -0400)
commit7b2c86250122de316cbab8754050622ead04af39
treed6605100cf4fc03d8654c9757de0e70a813151ca
parent0330f7aa8ee63d0c435c0cb4e47ea06235ee4b7f
tracing: Add NMI tracing in hwlat detector

As NMIs can also cause latency when interrupts are disabled, the hwlat
detectory has no way to know if the latency it detects is from an NMI or an
SMI or some other hardware glitch.

As ftrace_nmi_enter/exit() funtions are no longer used (except for sh, which
isn't supported anymore), I converted those to "arch_ftrace_nmi_enter/exit"
and use ftrace_nmi_enter/exit() to check if hwlat detector is tracing or
not, and if so, it calls into the hwlat utility.

Since the hwlat detector only has a single kthread that is spinning with
interrupts disabled, it marks what CPU it is on, and if the NMI callback
happens on that CPU, it records the time spent in that NMI. This is added to
the output that is generated by the hwlat detector as:

 #3     inner/outer(us):    9/9     ts:1470836488.206734548
 #4     inner/outer(us):    0/8     ts:1470836497.140808588
 #5     inner/outer(us):    0/6     ts:1470836499.140825168 nmi-total:5 nmi-count:1
 #6     inner/outer(us):    9/9     ts:1470836501.140841748

All time is still tracked in microseconds.

The NMI information is only shown when an NMI occurred during the sample.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
arch/sh/kernel/ftrace.c
include/linux/ftrace_irq.h
kernel/trace/trace_entries.h
kernel/trace/trace_hwlat.c
kernel/trace/trace_output.c