IP blocks allowing a variety of trace sources to log debugging information to a pre-defined area have been introduced on a couple of architecture [1][2]. These system trace blocks (also known as STM) typically follow the MIPI STPv2 protocol [3] and provide a system wide logging facility to any device, running a kernel or not, with access to the block's log entry port(s). Since each trace message has a timestamp, it is possible to correlate events happening in the entire system rather than being confined to the logging facility of a single entity.
This patchset is trying to use STM IP blocks to store some function tracing information produced by Ftrace and I'm taking the Function trace (TRACE_FN) as the example in this patchset, but other types of traces also can be supported. Logging information generated by the function trace subsystem and gathered in the coresight sink can be used in conjunction with trace data from other board components, also collected in the same trace sink. This example is using ARM coresight STM but the same would apply to any architecture wishing to do the same. In this patchset made many modifications according to the comments on last patchset, the first two patches of this serial have been midified completely. This patchset implemented the similar features, but in the completely different way. Comments and advice would be greatly appreciated. Thanks, Chunyan [1]. https://lwn.net/Articles/674746/ [2]. http://lxr.free-electrons.com/source/drivers/hwtracing/intel_th/ [3]. http://mipi.org/specifications/debug#STP Changes v3: * Rebased on v4.8-rc1. * Added trace_export class, and make traces can be exported to not only ring buffer but also other area such as STM. * Made stm_ftrace as an trace_export. * More detailed changes are described in change log of each patch. Changes v2: * Addressed comments from Alexander Shishkin: - Modified some ambiguous change logs. - Decoupled stm_ftrace and trace_output interface to STM. - Changed the file name from stm_ftrace.c to stm/ftrace.c. - Implemented link/unlink hooks for stm_ftrace. * Removed useless header file include from stm/ftrace.c * Added Acked-by from Steven Rostedt on 4/4. Chunyan Zhang (3): tracing: add a possibility of exporting function trace to other places instead of ring buffer only stm class: ftrace: Add ftrace-export-over-stm driver stm: Mark the functions of writing buffer with notrace drivers/hwtracing/coresight/coresight-stm.c | 2 +- drivers/hwtracing/intel_th/sth.c | 11 ++- drivers/hwtracing/stm/Kconfig | 11 +++ drivers/hwtracing/stm/Makefile | 2 + drivers/hwtracing/stm/core.c | 7 +- drivers/hwtracing/stm/dummy_stm.c | 2 +- drivers/hwtracing/stm/ftrace.c | 87 +++++++++++++++++++ include/linux/stm.h | 4 +- include/linux/trace.h | 31 +++++++ kernel/trace/trace.c | 124 +++++++++++++++++++++++++++- kernel/trace/trace.h | 31 +++++++ 11 files changed, 300 insertions(+), 12 deletions(-) create mode 100644 drivers/hwtracing/stm/ftrace.c create mode 100644 include/linux/trace.h -- 2.7.4