Am Dienstag, 29 März 2016, 10:45:57 schrieb Michael Ellerman: > On Mon, 2016-03-28 at 17:29 -0300, Thiago Jung Bauermann wrote: > > If I do s/_do_fork/._do_fork/ in kprobe_ftrace.tc then all ftrace kprobe > > tests pass: > > OK. We fixed that in 'perf probe', but not if you're using the sysfs file > directly. > > Do you want to write a patch for ftracetest to try and handle it? I guess > you'd try "_do_fork" and if that fails then try "._do_fork", and maybe > only if uname -m says you're running on ppc64?
I did write a patch yesterday (included below for reference), but then I noticed that the other ftrace tests use _do_fork and they work fine (I guess because of the fix you mentioned). I think that ideally the ftrace filter mechanism should work with dot symbols as well as regular symbols. I think this could work by creating a mechanism analogous to the ARCH_HAS_SYSCALL_MATCH_SYM_NAME one in trace_syscalls.c. Ftrace_match_record could call it to adjust the symbol name (like kprobe_lookup_name) before calling ftrace_match. But I’m wondering if it’s really worth the effort and maybe patching the testcase is enough? Also, I don’t know whether my idea would have any side effects. -- []'s Thiago Jung Bauermann IBM Linux Technology Center From 2ea9b3545906932b9aa213506ec0dff03cffdbe5 Mon Sep 17 00:00:00 2001 From: Thiago Jung Bauermann <bauer...@linux.vnet.ibm.com> Date: Mon, 28 Mar 2016 18:39:56 -0300 Subject: [PATCH] selftests: kprobe: Fix kprobe_ftrace.tc on ppc64 On ppc64 (but not ppc64le), symbols for function entry points start with a dot. There's no _do_fork but there is a ._do_fork. Signed-off-by: Thiago Jung Bauermann <bauer...@linux.vnet.ibm.com> --- .../selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc index d6f2f49..c3ec5c2 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kprobe_ftrace.tc @@ -4,33 +4,39 @@ [ -f kprobe_events ] || exit_unsupported # this is configurable grep function available_tracers || exit_unsupported # this is configurable +if [ "$(uname -m)" = "ppc64" ]; then + FILTER_FUNCTION="._do_fork" +else + FILTER_FUNCTION="_do_fork" +fi + # prepare echo nop > current_tracer -echo _do_fork > set_ftrace_filter +echo $FILTER_FUNCTION > set_ftrace_filter echo 0 > events/enable echo > kprobe_events -echo 'p:testprobe _do_fork' > kprobe_events +echo "p:testprobe $FILTER_FUNCTION" > kprobe_events # kprobe on / ftrace off echo 1 > events/kprobes/testprobe/enable echo > trace ( echo "forked") grep testprobe trace -! grep '_do_fork <-' trace +! grep "$FILTER_FUNCTION <-" trace # kprobe on / ftrace on echo function > current_tracer echo > trace ( echo "forked") grep testprobe trace -grep '_do_fork <-' trace +grep "$FILTER_FUNCTION <-" trace # kprobe off / ftrace on echo 0 > events/kprobes/testprobe/enable echo > trace ( echo "forked") ! grep testprobe trace -grep '_do_fork <-' trace +grep "$FILTER_FUNCTION <-" trace # kprobe on / ftrace on echo 1 > events/kprobes/testprobe/enable @@ -38,14 +44,14 @@ echo function > current_tracer echo > trace ( echo "forked") grep testprobe trace -grep '_do_fork <-' trace +grep "$FILTER_FUNCTION <-" trace # kprobe on / ftrace off echo nop > current_tracer echo > trace ( echo "forked") grep testprobe trace -! grep '_do_fork <-' trace +! grep "$FILTER_FUNCTION <-" trace # cleanup echo nop > current_tracer -- 1.9.1 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev