On Mon, Mar 25, 2019 at 03:56:16PM -0600, Mathieu Poirier wrote:
This is the second revision of a patchset that adds support for CPU-wide trace scenarios and as such, it is now possible to issue the following commands:
# perf record -e cs_etm/@20070000.etr/ -C 2,3 $COMMAND # perf record -e cs_etm/@20070000.etr/ -a $COMMAND
The solution is designed to work for both 1:1 and N:1 source/sink topologies, though the former hasn't been tested for lack of access to HW.
Most of the changes revolve around allowing more than one event to use a sink when operated from perf. More specifically the first event to use a sink switches it on while the last one is tasked to aggregate traces and switching off the device.
This is the kernel part of the solution, with the user space portion to be released in a later set. All patches (user and kernel) have been rebased on v5.1-rc2 and are hosted here[1]. Everything has been tested on Juno and 410c dragonboard platforms.
FWIW, gave the testing on my Hikey620 board and these patches also work well with below commands:
# perf record -e cs_etm/@f6402000.etf/ -a uname # perf record -e cs_etm/@f6402000.etf/ -C 0,4 uname
# perf record -e cs_etm/@f6404000.etr/ -a uname # perf record -e cs_etm/@f6404000.etr/ -C 1,2,7 uname
P.s. just note here and this is off topic to this patch set, the 'perf report' command took below time for decoding ~4MB CoreSight trace data on my Hikey board, seems we can take a look for decoding speed optimization later:
# time perf report --vmlinux /mnt/linux-kernel/linux-next/vmlinux real 2m11.153s user 1m47.979s sys 0m0.204s
Thanks, Leo Yan