Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1647657 > unrolled thread
| Started by | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| First post | 2017-05-23 08:10 +0200 |
| Last post | 2017-05-23 08:20 +0200 |
| Articles | 8 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH 0/7] selftests/ftrace: Some improvements of ftracetest Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 5/7] selftests/ftrace: Add instance indication in test log Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 3/7] ftrace/kprobes: selftests: Check kretprobe maxactive is supported Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 4/7] selftests/ftrace: Reset ftrace filter on older kernel Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 2/7] selftests/ftrace: Reduce trace buffer checking overhead Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 1/7] selftests/ftrace: Skip full-glob-matching filter test on older kernel Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:10 +0200
[PATCH 7/7] selftests/ftrace: Return unsupported if it detects older kernel Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:20 +0200
[PATCH 6/7] selftests/ftrace: Use top-level available_filter_function Masami Hiramatsu <mhiramat@kernel.org> - 2017-05-23 08:20 +0200
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 0/7] selftests/ftrace: Some improvements of ftracetest |
| Message-ID | <tKbb3-7G0-3@gated-at.bofh.it> |
Hi,
This series improves ftracetest mainly to run on 4.9 stable
tree kernel. There still some issues remains (it seems some
fixes are not merged), but a half of issues are fixed.
NOTE: One patch will modify ftrace README to check the
availability of the maxactive option, which should have
been implemented with the function-added patch.
With this series, only 1 test actually failed on 4.9.29.
(and 3 unsupported, since it is too old to support it)
Tue May 23 05:56:24 UTC 2017
=== Ftrace unit tests ===
[1] Basic trace file check [PASS]
[2] Basic test for tracers [PASS]
[3] Basic trace clock test [PASS]
[4] Basic event tracing check [PASS]
[5] event tracing - enable/disable with event level files [PASS]
[6] event tracing - restricts events based on pid [PASS]
[7] event tracing - enable/disable with subsystem level files [PASS]
[8] event tracing - enable/disable with top level files [PASS]
[9] ftrace - function graph filters with stack tracer [PASS]
[10] ftrace - function graph filters [PASS]
[11] ftrace - function glob filters [PASS]
[12] ftrace - function pid filters [PASS]
[13] ftrace - test for function event triggers [PASS]
[14] ftrace - function profiler with function tracing [PASS]
[15] ftrace - test reading of set_ftrace_filter [FAIL]
[16] ftrace - test for function traceon/off triggers [PASS]
[17] Test creation and deletion of trace instances while setting an event [PASS]
[18] Test creation and deletion of trace instances [PASS]
[19] Kprobe dynamic event - adding and removing [PASS]
[20] Kprobe dynamic event - busy event check [PASS]
[21] Kprobe dynamic event with arguments [PASS]
[22] Kprobes event arguments with types [PASS]
[23] Kprobe dynamic event with function tracer [PASS]
[24] Kretprobe dynamic event with arguments [PASS]
[25] Kretprobe dynamic event with maxactive [UNSUPPORTED]
[26] event trigger - test event enable/disable trigger [PASS]
[27] event trigger - test trigger filter [PASS]
[28] event trigger - test histogram modifiers [PASS]
[29] event trigger - test histogram trigger [PASS]
[30] event trigger - test multiple histogram triggers [PASS]
[31] event trigger - test snapshot-trigger [PASS]
[32] event trigger - test stacktrace-trigger [PASS]
[33] event trigger - test traceon/off trigger [PASS]
[34] (instance) Basic test for tracers [PASS]
[35] (instance) Basic trace clock test [PASS]
[36] (instance) event tracing - enable/disable with event level files [PASS]
[37] (instance) event tracing - restricts events based on pid [PASS]
[38] (instance) event tracing - enable/disable with subsystem level files [PASS]
[39] (instance) ftrace - test for function event triggers [UNSUPPORTED]
[40] (instance) ftrace - test for function traceon/off triggers [UNSUPPORTED]
[41] (instance) event trigger - test event enable/disable trigger [PASS]
[42] (instance) event trigger - test trigger filter [PASS]
[43] (instance) event trigger - test histogram modifiers [PASS]
[44] (instance) event trigger - test histogram trigger [PASS]
[45] (instance) event trigger - test multiple histogram triggers [PASS]
# of passed: 41
# of failed: 1
# of unresolved: 0
# of untested: 0
# of unsupported: 3
# of xfailed: 0
# of undefined(test bug): 0
> [15] ftrace - test reading of set_ftrace_filter [FAIL]
was caused by the difference of the result of
"dd bs=1 if=set_ftrace_filter" and "cat set_ftrace_filter",
which has been fixed on upstream by commit fcdc71257923
("ftrace: Fix indexing of t_hash_start() from t_next()")
but backporting it onto 4.9.y stable tree didn't fix that.
Thank you,
---
Masami Hiramatsu (7):
selftests/ftrace: Skip full-glob-matching filter test on older kernel
selftests/ftrace: Reduce trace buffer checking overhead
ftrace/kprobes: selftests: Check kretprobe maxactive is supported
selftests/ftrace: Reset ftrace filter on older kernel
selftests/ftrace: Add instance indication in test log
selftests/ftrace: Use top-level available_filter_function
selftests/ftrace: Return unsupported if it detects older kernel
kernel/trace/trace.c | 3 +-
tools/testing/selftests/ftrace/ftracetest | 2 +
.../ftrace/test.d/event/toplevel-enable.tc | 8 ++++--
.../ftrace/test.d/ftrace/func-filter-glob.tc | 28 ++++++++++++--------
.../ftrace/test.d/ftrace/func_event_triggers.tc | 9 ++++++
.../test.d/ftrace/func_traceonoff_triggers.tc | 13 +++++++++
.../ftrace/test.d/instances/instance-event.tc | 5 +++-
.../ftrace/test.d/kprobe/kretprobe_maxactive.tc | 1 +
8 files changed, 53 insertions(+), 16 deletions(-)
--
Masami Hiramatsu (Linaro) <mhiramat@kernel.org>
[toc] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 5/7] selftests/ftrace: Add instance indication in test log |
| Message-ID | <tKbb4-7G0-5@gated-at.bofh.it> |
| In reply to | #1647657 |
Add instance test indication in test log too.
Current ftracetest shows instance test indication on
the list of test, but not in the log for each test.
This adds instance test indication on the top of
each log, like below;
execute (instance) : /ftrace/test.d/ftrace/func_set_ftrace_file.tc
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
tools/testing/selftests/ftrace/ftracetest | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest
index 7175811..14a03ea 100755
--- a/tools/testing/selftests/ftrace/ftracetest
+++ b/tools/testing/selftests/ftrace/ftracetest
@@ -250,7 +250,7 @@ run_test() { # testfile
local testlog=`mktemp $LOG_DIR/${testname}-log.XXXXXX`
export TMPDIR=`mktemp -d /tmp/ftracetest-dir.XXXXXX`
testcase $1
- echo "execute: "$1 > $testlog
+ echo "execute$INSTANCE: "$1 > $testlog
SIG_RESULT=0
if [ $VERBOSE -ge 2 ]; then
__run_test $1 2>> $testlog | tee -a $testlog
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 3/7] ftrace/kprobes: selftests: Check kretprobe maxactive is supported |
| Message-ID | <tKbb4-7G0-7@gated-at.bofh.it> |
| In reply to | #1647657 |
Check the kretprobe maxactive is supported by kprobe_events interface. To ensure the kernel feature, this changes ftrace README to describe it. Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> --- kernel/trace/trace.c | 3 ++- .../ftrace/test.d/kprobe/kretprobe_maxactive.tc | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 1122f15..dc3f91e 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -4473,7 +4473,8 @@ static const char readme_msg[] = #endif #if defined(CONFIG_KPROBE_EVENTS) || defined(CONFIG_UPROBE_EVENTS) "\t accepts: event-definitions (one definition per line)\n" - "\t Format: p|r[:[<group>/]<event>] <place> [<args>]\n" + "\t Format: p[:[<group>/]<event>] <place> [<args>]\n" + "\t r[maxactive][:[<group>/]<event>] <place> [<args>]\n" "\t -:[<group>/]<event>\n" #ifdef CONFIG_KPROBE_EVENTS "\t place: [<module>:]<symbol>[+<offset>]|<memaddr>\n" diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc index 57abdf1..7ec6f26 100644 --- a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc @@ -2,6 +2,7 @@ # description: Kretprobe dynamic event with maxactive [ -f kprobe_events ] || exit_unsupported # this is configurable +grep -q 'r\[maxactive\]' README || exit_unsupported # this is older version echo > kprobe_events
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 4/7] selftests/ftrace: Reset ftrace filter on older kernel |
| Message-ID | <tKbb4-7G0-11@gated-at.bofh.it> |
| In reply to | #1647657 |
Since older kernel didn't support separated instance of
set_ftrace_filter, if the test case set the filter in
an instance, it will propagate to top-level instance.
This means that the filter setting remains even if we
remove the instance, and will cause other tests failure.
To avoid this issue, reset the ftrace filter if we
detect the propagation.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
.../ftrace/test.d/instances/instance-event.tc | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
index c73db78..8a35331 100644
--- a/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
+++ b/tools/testing/selftests/ftrace/test.d/instances/instance-event.tc
@@ -82,7 +82,10 @@ rmdir foo
if [ -d foo ]; then
fail "foo still exists"
fi
-
+if grep -q "schedule:enable_event:sched:sched_switch" ../set_ftrace_filter; then
+ echo "Older kernel detected. Cleanup filter"
+ echo '!schedule:enable_event:sched:sched_switch' > ../set_ftrace_filter
+fi
instance_slam() {
while :; do
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 2/7] selftests/ftrace: Reduce trace buffer checking overhead |
| Message-ID | <tKbb4-7G0-13@gated-at.bofh.it> |
| In reply to | #1647657 |
Current event/toplevel-enable.tc checking the trace
buffer by dumping all events while recording events.
However, this makes system very busy.
To reduce this overhead comes from reading trace buffer
and recording trace buffer, use head instead of cat
and stop tracing while reading.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
.../ftrace/test.d/event/toplevel-enable.tc | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
index 0bb5df3..15e2d3f 100644
--- a/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
+++ b/tools/testing/selftests/ftrace/test.d/event/toplevel-enable.tc
@@ -28,7 +28,9 @@ echo '*:*' > set_event
yield
-count=`cat trace | grep -v ^# | wc -l`
+echo 0 > tracing_on
+
+count=`head -n 128 trace | grep -v ^# | wc -l`
if [ $count -eq 0 ]; then
fail "none of events are recorded"
fi
@@ -36,10 +38,12 @@ fi
do_reset
echo 1 > events/enable
+echo 1 > tracing_on
yield
-count=`cat trace | grep -v ^# | wc -l`
+echo 0 > tracing_on
+count=`head -n 128 trace | grep -v ^# | wc -l`
if [ $count -eq 0 ]; then
fail "none of events are recorded"
fi
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:10 +0200 |
| Subject | [PATCH 1/7] selftests/ftrace: Skip full-glob-matching filter test on older kernel |
| Message-ID | <tKbb4-7G0-17@gated-at.bofh.it> |
| In reply to | #1647657 |
Skip a part of ftrace filter test related to full-glob
matching if we are sure that the testing kernel is so old
that it does not support full-glob-matching yet.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
.../ftrace/test.d/ftrace/func-filter-glob.tc | 28 ++++++++++++--------
1 file changed, 17 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc
index 9dcd0ca..8095e12 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func-filter-glob.tc
@@ -11,17 +11,6 @@ fi
disable_tracing
clear_trace
-# filter by ?, schedule is always good
-if ! echo "sch?dule" > set_ftrace_filter; then
- # test for powerpc 64
- if ! echo ".sch?dule" > set_ftrace_filter; then
- fail "can not enable schedule filter"
- fi
- cat set_ftrace_filter | grep '^.schedule$'
-else
- cat set_ftrace_filter | grep '^schedule$'
-fi
-
ftrace_filter_check() { # glob grep
echo "$1" > set_ftrace_filter
cut -f1 -d" " set_ftrace_filter > $TMPDIR/actual
@@ -39,11 +28,28 @@ ftrace_filter_check '*schedule*' '^.*schedule.*$'
# filter by *, end match
ftrace_filter_check 'schedule*' '^schedule.*$'
+# Advanced full-glob matching feature is recently supported.
+# Skip the tests if we are sure the kernel does not support it.
+if grep -q 'accepts: .* glob-matching-pattern' README ; then
+
# filter by *, both side match
ftrace_filter_check 'sch*ule' '^sch.*ule$'
# filter by char class.
ftrace_filter_check '[Ss]y[Ss]_*' '^[Ss]y[Ss]_.*$'
+# filter by ?, schedule is always good
+if ! echo "sch?dule" > set_ftrace_filter; then
+ # test for powerpc 64
+ if ! echo ".sch?dule" > set_ftrace_filter; then
+ fail "can not enable schedule filter"
+ fi
+ cat set_ftrace_filter | grep '^.schedule$'
+else
+ cat set_ftrace_filter | grep '^schedule$'
+fi
+
+fi
+
echo > set_ftrace_filter
enable_tracing
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:20 +0200 |
| Subject | [PATCH 7/7] selftests/ftrace: Return unsupported if it detects older kernel |
| Message-ID | <tKbkJ-7J8-1@gated-at.bofh.it> |
| In reply to | #1647657 |
Return unsupported if the kernel is too old to support
instance independent ftrace filter for some testcases.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
.../ftrace/test.d/ftrace/func_event_triggers.tc | 9 +++++++++
.../test.d/ftrace/func_traceonoff_triggers.tc | 9 +++++++++
2 files changed, 18 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
index aa31368..77dfb6b 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
@@ -72,6 +72,15 @@ run_enable_disable() {
test_event_enabled $check_disable
echo "schedule:${enable}_event:$EVENT" > set_ftrace_filter
+ if [ -d ../../instances ]; then # Check instances
+ cur=`cat set_ftrace_filter`
+ top=`cat ../../set_ftrace_filter`
+ if [ "$cur" = "$top" ]; then
+ echo "This kernel is too old to support per instance filter"
+ reset_ftrace_filter
+ exit_unsupported
+ fi
+ fi
echo " make sure it works 5 times"
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
index 1b0817b..9cf3852 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
@@ -75,6 +75,15 @@ fi
echo '** SET TRACEOFF'
echo "$func:traceoff" > set_ftrace_filter
+if [ -d ../../instances ]; then # Check instances
+ cur=`cat set_ftrace_filter`
+ top=`cat ../../set_ftrace_filter`
+ if [ "$cur" = "$top" ]; then
+ echo "This kernel is too old to support per instance filter"
+ reset_ftrace_filter
+ exit_unsupported
+ fi
+fi
cnt=`grep schedule set_ftrace_filter | wc -l`
if [ $cnt -ne 1 ]; then
[toc] | [prev] | [next] | [standalone]
| From | Masami Hiramatsu <mhiramat@kernel.org> |
|---|---|
| Date | 2017-05-23 08:20 +0200 |
| Subject | [PATCH 6/7] selftests/ftrace: Use top-level available_filter_function |
| Message-ID | <tKbkJ-7J8-3@gated-at.bofh.it> |
| In reply to | #1647657 |
Use top-level available_filter_function if the test case
is running under an instance.
Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org>
---
.../test.d/ftrace/func_traceonoff_triggers.tc | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
index c8e02ec..1b0817b 100644
--- a/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
+++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc
@@ -63,6 +63,10 @@ fi
# powerpc uses .schedule
func="schedule"
+available_file=available_filter_functions
+if [ -d ../../instances -a -f ../../available_filter_functions ]; then
+ available_file=../../available_filter_functions
+fi
x=`grep '^\.schedule$' available_filter_functions | wc -l`
if [ "$x" -eq 1 ]; then
func=".schedule"
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web