mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 22:02:28 +00:00
fe0aed19b2
We need a simple method to test Perf with ARM CoreSight drivers, this could be used for smoke testing when new patch is coming for perf or CoreSight drivers, and we also can use the test to confirm if the CoreSight has been enabled successfully on new platforms. This patch introduces the shell script test_arm_coresight.sh which is under the 'pert test' framework. This script provides three testing scenarios: Test scenario 1: traverse all possible paths between source and sink For traversing possible paths, simply to say, the testing rationale is source oriented testing, it traverses every source (now only refers to ETM device) and test its all possible sinks. To search the complete paths from one specific source to its sinks, this patch relies on the sysfs '/sys/bus/coresight/devices/devX/out:Y' for depth-first search (DFS) for iteration connected device nodes, if the output device is detected as a sink device (the script will exclude TPIU device which can not be supported for perf PMU), then it will test trace data recording and decoding for it. The script runs three output testings for every trace data: - Test branch samples dumping with 'perf script' command; - Test branch samples reporting with 'perf report' command; - Use option '--itrace=i1000i' to insert synthesized instructions events and the script will check if perf can output the percentage value successfully based on the instruction samples. Test scenario 2: system-wide test For system-wide testing, it passes option '-a' to perf tool to enable tracing on all CPUs, so it's hard to say which program will be traced. But perf tool itself contributes much overload in this case, so it will parse trace data and check if process 'perf' can be detected or not. Test scenario 3: snapshot mode test. For snapshot mode testing, it uses 'dd' command to launch a long running program, so this can give chance to send signal -USR2; it will check the captured trace data contains 'dd' related thread info or not. If any test fails, it will report failure and directly exit with error. This test will be only applied on a platform with PMU event 'cs_etm//', otherwise will skip the testing. Below is detailed usage for it: # cd $linux/tools/perf -> This is important so can use shell script # perf test list [...] 70: probe libc's inet_pton & backtrace it with ping 71: Check Arm CoreSight trace data recording and synthesized samples 72: Check open filename arg using perf trace + vfs_getname 73: Zstd perf.data compression/decompression 74: Add vfs_getname probe to get syscall args filenames 75: Use vfs_getname probe to get syscall args filenames # perf test 71 71: Check Arm CoreSight trace data recording and branch samples: Ok Signed-off-by: Leo Yan <leo.yan@linaro.org> Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> Reviewed-by: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Link: http://lore.kernel.org/lkml/20200907130154.9601-1-leo.yan@linaro.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
||
---|---|---|
.. | ||
attr | ||
shell | ||
.gitignore | ||
api-io.c | ||
attr.c | ||
attr.py | ||
backward-ring-buffer.c | ||
bitmap.c | ||
bp_account.c | ||
bp_signal_overflow.c | ||
bp_signal.c | ||
bpf-script-example.c | ||
bpf-script-test-kbuild.c | ||
bpf-script-test-prologue.c | ||
bpf-script-test-relocation.c | ||
bpf.c | ||
Build | ||
builtin-test.c | ||
clang.c | ||
code-reading.c | ||
cpumap.c | ||
demangle-java-test.c | ||
dso-data.c | ||
dwarf-unwind.c | ||
event_update.c | ||
event-times.c | ||
evsel-roundtrip-name.c | ||
evsel-tp-sched.c | ||
expr.c | ||
fdarray.c | ||
genelf.c | ||
hists_common.c | ||
hists_common.h | ||
hists_cumulate.c | ||
hists_filter.c | ||
hists_link.c | ||
hists_output.c | ||
is_printable_array.c | ||
keep-tracking.c | ||
kmod-path.c | ||
llvm.c | ||
llvm.h | ||
make | ||
maps.c | ||
mem2node.c | ||
mem.c | ||
mmap-basic.c | ||
mmap-thread-lookup.c | ||
openat-syscall-all-cpus.c | ||
openat-syscall-tp-fields.c | ||
openat-syscall.c | ||
parse-events.c | ||
parse-metric.c | ||
parse-no-sample-id-all.c | ||
pe-file-parsing.c | ||
pe-file.c | ||
pe-file.exe | ||
pe-file.exe.debug | ||
perf-hooks.c | ||
perf-record.c | ||
perf-targz-src-pkg | ||
pfm.c | ||
pmu-events.c | ||
pmu.c | ||
python-use.c | ||
sample-parsing.c | ||
sdt.c | ||
stat.c | ||
sw-clock.c | ||
switch-tracking.c | ||
task-exit.c | ||
tests.h | ||
thread-map.c | ||
thread-maps-share.c | ||
time-utils-test.c | ||
topology.c | ||
unit_number__scnprintf.c | ||
vmlinux-kallsyms.c | ||
wp.c |