diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-03 18:41:21 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-05-03 18:41:21 -0700 | 
| commit | 4c174688ee92805aa5df6e06e5b625a3286e415c (patch) | |
| tree | 78e18b242b31a3a50eda41bfdd4705e07f13647a /tools | |
| parent | 9c35baf6cee9a5745d55de6f9995916dde642517 (diff) | |
| parent | 73a757e63114dfd765f1c5d1ff7e994f123d0234 (diff) | |
Merge tag 'trace-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace
Pull tracing updates from Steven Rostedt:
 "New features for this release:
   - Pretty much a full rewrite of the processing of function plugins.
     i.e. echo do_IRQ:stacktrace > set_ftrace_filter
   - The rewrite was needed to add plugins to be unique to tracing
     instances. i.e. mkdir instance/foo; cd instances/foo; echo
     do_IRQ:stacktrace > set_ftrace_filter The old way was written very
     hacky. This removes a lot of those hacks.
   - New "function-fork" tracing option. When set, pids in the
     set_ftrace_pid will have their children added when the processes
     with their pids listed in the set_ftrace_pid file forks.
   - Exposure of "maxactive" for kretprobe in kprobe_events
   - Allow for builtin init functions to be traced by the function
     tracer (via the kernel command line). Module init function tracing
     will come in the next release.
   - Added more selftests, and have selftests also test in an instance"
* tag 'trace-v4.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (60 commits)
  ring-buffer: Return reader page back into existing ring buffer
  selftests: ftrace: Allow some event trigger tests to run in an instance
  selftests: ftrace: Have some basic tests run in a tracing instance too
  selftests: ftrace: Have event tests also run in an tracing instance
  selftests: ftrace: Make func_event_triggers and func_traceonoff_triggers tests do instances
  selftests: ftrace: Allow some tests to be run in a tracing instance
  tracing/ftrace: Allow for instances to trigger their own stacktrace probes
  tracing/ftrace: Allow for the traceonoff probe be unique to instances
  tracing/ftrace: Enable snapshot function trigger to work with instances
  tracing/ftrace: Allow instances to have their own function probes
  tracing/ftrace: Add a better way to pass data via the probe functions
  ftrace: Dynamically create the probe ftrace_ops for the trace_array
  tracing: Pass the trace_array into ftrace_probe_ops functions
  tracing: Have the trace_array hold the list of registered func probes
  ftrace: If the hash for a probe fails to update then free what was initialized
  ftrace: Have the function probes call their own function
  ftrace: Have each function probe use its own ftrace_ops
  ftrace: Have unregister_ftrace_function_probe_func() return a value
  ftrace: Add helper function ftrace_hash_move_and_update_ops()
  ftrace: Remove data field from ftrace_func_probe structure
  ...
Diffstat (limited to 'tools')
16 files changed, 510 insertions, 1 deletions
| diff --git a/tools/testing/selftests/ftrace/ftracetest b/tools/testing/selftests/ftrace/ftracetest index 52e3c4df28d6..32e6211e1c6e 100755 --- a/tools/testing/selftests/ftrace/ftracetest +++ b/tools/testing/selftests/ftrace/ftracetest @@ -16,6 +16,7 @@ echo "		-k|--keep  Keep passed test logs"  echo "		-v|--verbose Increase verbosity of test messages"  echo "		-vv        Alias of -v -v (Show all results in stdout)"  echo "		-d|--debug Debug mode (trace all shell commands)" +echo "		-l|--logdir <dir> Save logs on the <dir>"  exit $1  } @@ -64,6 +65,10 @@ parse_opts() { # opts        DEBUG=1        shift 1      ;; +    --logdir|-l) +      LOG_DIR=$2 +      shift 2 +    ;;      *.tc)        if [ -f "$1" ]; then          OPT_TEST_CASES="$OPT_TEST_CASES `abspath $1`" @@ -145,11 +150,16 @@ XFAILED_CASES=  UNDEFINED_CASES=  TOTAL_RESULT=0 +INSTANCE=  CASENO=0  testcase() { # testfile    CASENO=$((CASENO+1))    desc=`grep "^#[ \t]*description:" $1 | cut -f2 -d:` -  prlog -n "[$CASENO]$desc" +  prlog -n "[$CASENO]$INSTANCE$desc" +} + +test_on_instance() { # testfile +  grep -q "^#[ \t]*flags:.*instance" $1  }  eval_result() { # sigval @@ -266,6 +276,17 @@ for t in $TEST_CASES; do    run_test $t  done +# Test on instance loop +INSTANCE=" (instance) " +for t in $TEST_CASES; do +  test_on_instance $t || continue +  SAVED_TRACING_DIR=$TRACING_DIR +  export TRACING_DIR=`mktemp -d $TRACING_DIR/instances/ftracetest.XXXXXX` +  run_test $t +  rmdir $TRACING_DIR +  TRACING_DIR=$SAVED_TRACING_DIR +done +  prlog ""  prlog "# of passed: " `echo $PASSED_CASES | wc -w`  prlog "# of failed: " `echo $FAILED_CASES | wc -w` diff --git a/tools/testing/selftests/ftrace/test.d/00basic/basic2.tc b/tools/testing/selftests/ftrace/test.d/00basic/basic2.tc index bf9a7b037924..ebfce83f35b4 100644 --- a/tools/testing/selftests/ftrace/test.d/00basic/basic2.tc +++ b/tools/testing/selftests/ftrace/test.d/00basic/basic2.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: Basic test for tracers +# flags: instance  test -f available_tracers  for t in `cat available_tracers`; do    echo $t > current_tracer diff --git a/tools/testing/selftests/ftrace/test.d/00basic/basic3.tc b/tools/testing/selftests/ftrace/test.d/00basic/basic3.tc index bde6625d9785..9e33f841812f 100644 --- a/tools/testing/selftests/ftrace/test.d/00basic/basic3.tc +++ b/tools/testing/selftests/ftrace/test.d/00basic/basic3.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: Basic trace clock test +# flags: instance  test -f trace_clock  for c in `cat trace_clock | tr  -d \[\]`; do    echo $c > trace_clock diff --git a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc index 87eb9d6dd4ca..283b45ecb199 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-enable.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event tracing - enable/disable with event level files +# flags: instance  do_reset() {      echo > set_event diff --git a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc index d4ab27b522f8..96c1a95be4f7 100644 --- a/tools/testing/selftests/ftrace/test.d/event/event-pid.tc +++ b/tools/testing/selftests/ftrace/test.d/event/event-pid.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event tracing - restricts events based on pid +# flags: instance  do_reset() {      echo > set_event diff --git a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc index ced27ef0638f..b8fe2e5b9e67 100644 --- a/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc +++ b/tools/testing/selftests/ftrace/test.d/event/subsystem-enable.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event tracing - enable/disable with subsystem level files +# flags: instance  do_reset() {      echo > set_event 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 new file mode 100644 index 000000000000..07bb3e5930b4 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc @@ -0,0 +1,114 @@ +#!/bin/sh +# description: ftrace - test for function event triggers +# flags: instance +# +# Ftrace allows to add triggers to functions, such as enabling or disabling +# tracing, enabling or disabling trace events, or recording a stack trace +# within the ring buffer. +# +# This test is designed to test event triggers +# + +# The triggers are set within the set_ftrace_filter file +if [ ! -f set_ftrace_filter ]; then +    echo "set_ftrace_filter not found? Is dynamic ftrace not set?" +    exit_unsupported +fi + +do_reset() { +    reset_ftrace_filter +    reset_tracer +    disable_events +    clear_trace +    enable_tracing +} + +fail() { # mesg +    do_reset +    echo $1 +    exit $FAIL +} + +SLEEP_TIME=".1" + +do_reset + +echo "Testing function probes with events:" + +EVENT="sched:sched_switch" +EVENT_ENABLE="events/sched/sched_switch/enable" + +cnt_trace() { +    grep -v '^#' trace | wc -l +} + +test_event_enabled() { +    val=$1 + +    e=`cat $EVENT_ENABLE` +    if [ "$e" != $val ]; then +	echo "Expected $val but found $e" +	exit -1 +    fi +} + +run_enable_disable() { +    enable=$1			# enable +    Enable=$2			# Enable +    check_disable=$3		# 0 +    check_enable_star=$4	# 1* +    check_disable_star=$5	# 0* + +    cnt=`cnt_trace` +    if [ $cnt -ne 0 ]; then +	fail "Found junk in trace file" +    fi + +    echo "$Enable event all the time" + +    echo $check_disable > $EVENT_ENABLE +    sleep $SLEEP_TIME + +    test_event_enabled $check_disable + +    echo "schedule:${enable}_event:$EVENT" > set_ftrace_filter + +    echo " make sure it works 5 times" + +    for i in `seq 5`; do +	sleep $SLEEP_TIME +	echo "  test $i" +	test_event_enabled $check_enable_star + +	echo $check_disable > $EVENT_ENABLE +    done +    sleep $SLEEP_TIME +    echo " make sure it's still works" +    test_event_enabled $check_enable_star + +    reset_ftrace_filter + +    echo " make sure it only works 3 times" + +    echo $check_disable > $EVENT_ENABLE +    sleep $SLEEP_TIME + +    echo "schedule:${enable}_event:$EVENT:3" > set_ftrace_filter + +    for i in `seq 3`; do +	sleep $SLEEP_TIME +	echo "  test $i" +	test_event_enabled $check_enable_star + +	echo $check_disable > $EVENT_ENABLE +    done + +    sleep $SLEEP_TIME +    echo " make sure it stop working" +    test_event_enabled $check_disable_star + +    do_reset +} + +run_enable_disable enable Enable 0 "1*" "0*" +run_enable_disable disable Disable 1 "0*" "1*" diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc new file mode 100644 index 000000000000..113b4d9bc733 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_set_ftrace_file.tc @@ -0,0 +1,132 @@ +#!/bin/sh +# description: ftrace - test reading of set_ftrace_filter +# +# The set_ftrace_filter file of ftrace is used to list functions as well as +# triggers (probes) attached to functions. The code to read this file is not +# straight forward and has had various bugs in the past. This test is designed +# to add functions and triggers to that file in various ways and read that +# file in various ways (cat vs dd). +# + +# The triggers are set within the set_ftrace_filter file +if [ ! -f set_ftrace_filter ]; then +    echo "set_ftrace_filter not found? Is dynamic ftrace not set?" +    exit_unsupported +fi + +do_reset() { +    reset_tracer +    reset_ftrace_filter +    disable_events +    clear_trace +    enable_tracing +} + +fail() { # mesg +    do_reset +    echo $1 +    exit $FAIL +} + +do_reset + +FILTER=set_ftrace_filter +FUNC1="schedule" +FUNC2="do_IRQ" + +ALL_FUNCS="#### all functions enabled ####" + +test_func() { +    if ! echo "$1" | grep -q "^$2\$"; then +	return 0 +    fi +    echo "$1" | grep -v "^$2\$" +    return 1 +} + +check_set_ftrace_filter() { +    cat=`cat $FILTER` +    dd1=`dd if=$FILTER bs=1 | grep -v -e 'records in' -e 'records out' -e 'bytes copied'` +    dd100=`dd if=$FILTER bs=100 | grep -v -e 'records in' -e 'records out' -e 'bytes copied'` + +    echo "Testing '$@'" + +    while [ $# -gt 0 ]; do +	echo "test $1" +	if cat=`test_func "$cat" "$1"`; then +	    return 0 +	fi +	if dd1=`test_func "$dd1" "$1"`; then +	    return 0 +	fi +	if dd100=`test_func "$dd100" "$1"`; then +	    return 0 +	fi +	shift +    done + +    if [ -n "$cat" ]; then +	return 0 +    fi +    if [ -n "$dd1" ]; then +	return 0 +    fi +    if [ -n "$dd100" ]; then +	return 0 +    fi +    return 1; +} + +if check_set_ftrace_filter "$ALL_FUNCS"; then +    fail "Expected only $ALL_FUNCS" +fi + +echo "$FUNC1:traceoff" > set_ftrace_filter +if check_set_ftrace_filter "$ALL_FUNCS" "$FUNC1:traceoff:unlimited"; then +    fail "Expected $ALL_FUNCS and $FUNC1:traceoff:unlimited" +fi + +echo "$FUNC1" > set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" "$FUNC1:traceoff:unlimited"; then +    fail "Expected $FUNC1 and $FUNC1:traceoff:unlimited" +fi + +echo "$FUNC2" >> set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" "$FUNC2" "$FUNC1:traceoff:unlimited"; then +    fail "Expected $FUNC1 $FUNC2 and $FUNC1:traceoff:unlimited" +fi + +echo "$FUNC2:traceoff" >> set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" "$FUNC2" "$FUNC1:traceoff:unlimited" "$FUNC2:traceoff:unlimited"; then +    fail "Expected $FUNC1 $FUNC2 $FUNC1:traceoff:unlimited and $FUNC2:traceoff:unlimited" +fi + +echo "$FUNC1" > set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" "$FUNC1:traceoff:unlimited" "$FUNC2:traceoff:unlimited"; then +    fail "Expected $FUNC1 $FUNC1:traceoff:unlimited and $FUNC2:traceoff:unlimited" +fi + +echo > set_ftrace_filter +if check_set_ftrace_filter "$ALL_FUNCS" "$FUNC1:traceoff:unlimited" "$FUNC2:traceoff:unlimited"; then +    fail "Expected $ALL_FUNCS $FUNC1:traceoff:unlimited and $FUNC2:traceoff:unlimited" +fi + +reset_ftrace_filter + +if check_set_ftrace_filter "$ALL_FUNCS"; then +    fail "Expected $ALL_FUNCS" +fi + +echo "$FUNC1" > set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" ; then +    fail "Expected $FUNC1" +fi + +echo "$FUNC2" >> set_ftrace_filter +if check_set_ftrace_filter "$FUNC1" "$FUNC2" ; then +    fail "Expected $FUNC1 and $FUNC2" +fi + +do_reset + +exit 0 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 new file mode 100644 index 000000000000..c8e02ec01eaf --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_traceonoff_triggers.tc @@ -0,0 +1,172 @@ +#!/bin/sh +# description: ftrace - test for function traceon/off triggers +# flags: instance +# +# Ftrace allows to add triggers to functions, such as enabling or disabling +# tracing, enabling or disabling trace events, or recording a stack trace +# within the ring buffer. +# +# This test is designed to test enabling and disabling tracing triggers +# + +# The triggers are set within the set_ftrace_filter file +if [ ! -f set_ftrace_filter ]; then +    echo "set_ftrace_filter not found? Is dynamic ftrace not set?" +    exit_unsupported +fi + +do_reset() { +    reset_ftrace_filter +    reset_tracer +    disable_events +    clear_trace +    enable_tracing +} + +fail() { # mesg +    do_reset +    echo $1 +    exit $FAIL +} + +SLEEP_TIME=".1" + +do_reset + +echo "Testing function probes with enabling disabling tracing:" + +cnt_trace() { +    grep -v '^#' trace | wc -l +} + +echo '** DISABLE TRACING' +disable_tracing +clear_trace + +cnt=`cnt_trace` +if [ $cnt -ne 0 ]; then +    fail "Found junk in trace" +fi + + +echo '** ENABLE EVENTS' + +echo 1 > events/enable + +echo '** ENABLE TRACING' +enable_tracing + +cnt=`cnt_trace` +if [ $cnt -eq 0 ]; then +   fail "Nothing found in trace" +fi + +# powerpc uses .schedule +func="schedule" +x=`grep '^\.schedule$' available_filter_functions | wc -l` +if [ "$x" -eq 1 ]; then +   func=".schedule" +fi + +echo '** SET TRACEOFF' + +echo "$func:traceoff" > set_ftrace_filter + +cnt=`grep schedule set_ftrace_filter | wc -l` +if [ $cnt -ne 1 ]; then +   fail "Did not find traceoff trigger" +fi + +cnt=`cnt_trace` +sleep $SLEEP_TIME +cnt2=`cnt_trace` + +if [ $cnt -ne $cnt2 ]; then +   fail "Tracing is not stopped" +fi + +on=`cat tracing_on` +if [ $on != "0" ]; then +    fail "Tracing is not off" +fi + +line1=`cat trace | tail -1` +sleep $SLEEP_TIME +line2=`cat trace | tail -1` + +if [ "$line1" != "$line2" ]; then +    fail "Tracing file is still changing" +fi + +clear_trace + +cnt=`cnt_trace` +if [ $cnt -ne 0 ]; then +    fail "Tracing is still happeing" +fi + +echo "!$func:traceoff" >> set_ftrace_filter + +cnt=`grep schedule set_ftrace_filter | wc -l` +if [ $cnt -ne 0 ]; then +    fail "traceoff trigger still exists" +fi + +on=`cat tracing_on` +if [ $on != "0" ]; then +    fail "Tracing is started again" +fi + +echo "$func:traceon" > set_ftrace_filter + +cnt=`grep schedule set_ftrace_filter | wc -l` +if [ $cnt -ne 1 ]; then +    fail "traceon trigger not found" +fi + +cnt=`cnt_trace` +if [ $cnt -eq 0 ]; then +   fail "Tracing did not start" +fi + +on=`cat tracing_on` +if [ $on != "1" ]; then +    fail "Tracing was not enabled" +fi + + +echo "!$func:traceon" >> set_ftrace_filter + +cnt=`grep schedule set_ftrace_filter | wc -l` +if [ $cnt -ne 0 ]; then +   fail "traceon trigger still exists" +fi + +check_sleep() { +    val=$1 +    sleep $SLEEP_TIME +    cat set_ftrace_filter +    on=`cat tracing_on` +    if [ $on != "$val" ]; then +	fail "Expected tracing_on to be $val, but it was $on" +    fi +} + + +echo "$func:traceoff:3" > set_ftrace_filter +check_sleep "0" +echo 1 > tracing_on +check_sleep "0" +echo 1 > tracing_on +check_sleep "0" +echo 1 > tracing_on +check_sleep "1" +echo "!$func:traceoff:0" > set_ftrace_filter + +if grep -e traceon -e traceoff set_ftrace_filter; then +    fail "Tracing on and off triggers still exist" +fi + +disable_events + +exit 0 diff --git a/tools/testing/selftests/ftrace/test.d/functions b/tools/testing/selftests/ftrace/test.d/functions index 91de1a8e4f19..9aec6fcb7729 100644 --- a/tools/testing/selftests/ftrace/test.d/functions +++ b/tools/testing/selftests/ftrace/test.d/functions @@ -30,6 +30,27 @@ reset_events_filter() { # reset all current setting filters      done  } +reset_ftrace_filter() { # reset all triggers in set_ftrace_filter +    echo > set_ftrace_filter +    grep -v '^#' set_ftrace_filter | while read t; do +	tr=`echo $t | cut -d: -f2` +	if [ "$tr" == "" ]; then +	    continue +	fi +	if [ $tr == "enable_event" -o $tr == "disable_event" ]; then +	    tr=`echo $t | cut -d: -f1-4` +	    limit=`echo $t | cut -d: -f5` +	else +	    tr=`echo $t | cut -d: -f1-2` +	    limit=`echo $t | cut -d: -f3` +	fi +	if [ "$limit" != "unlimited" ]; then +	    tr="$tr:$limit" +	fi +	echo "!$tr" > set_ftrace_filter +    done +} +  disable_events() {      echo 0 > events/enable  } diff --git a/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc new file mode 100644 index 000000000000..57abdf1caabf --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/kprobe/kretprobe_maxactive.tc @@ -0,0 +1,39 @@ +#!/bin/sh +# description: Kretprobe dynamic event with maxactive + +[ -f kprobe_events ] || exit_unsupported # this is configurable + +echo > kprobe_events + +# Test if we successfully reject unknown messages +if echo 'a:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi + +# Test if we successfully reject too big maxactive +if echo 'r1000000:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi + +# Test if we successfully reject unparsable numbers for maxactive +if echo 'r10fuzz:myprobeaccept inet_csk_accept' > kprobe_events; then false; else true; fi + +# Test for kretprobe with event name without maxactive +echo 'r:myprobeaccept inet_csk_accept' > kprobe_events +grep myprobeaccept kprobe_events +test -d events/kprobes/myprobeaccept +echo '-:myprobeaccept' >> kprobe_events + +# Test for kretprobe with event name with a small maxactive +echo 'r10:myprobeaccept inet_csk_accept' > kprobe_events +grep myprobeaccept kprobe_events +test -d events/kprobes/myprobeaccept +echo '-:myprobeaccept' >> kprobe_events + +# Test for kretprobe without event name without maxactive +echo 'r inet_csk_accept' > kprobe_events +grep inet_csk_accept kprobe_events +echo > kprobe_events + +# Test for kretprobe without event name with a small maxactive +echo 'r10 inet_csk_accept' > kprobe_events +grep inet_csk_accept kprobe_events +echo > kprobe_events + +clear_trace diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc index 1a9445021bf1..c5435adfdd93 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-eventonoff.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event trigger - test event enable/disable trigger +# flags: instance  do_reset() {      reset_trigger diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc index 514e466e198b..48849a8d577f 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-filter.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event trigger - test trigger filter +# flags: instance  do_reset() {      reset_trigger diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc index 400e98b64948..b7f86d10b549 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist-mod.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event trigger - test histogram modifiers +# flags: instance  do_reset() {      reset_trigger diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc index a00184cd9c95..fb66f7d9339d 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-hist.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event trigger - test histogram trigger +# flags: instance  do_reset() {      reset_trigger diff --git a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc index 3478b00ead57..f9153087dd7c 100644 --- a/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc +++ b/tools/testing/selftests/ftrace/test.d/trigger/trigger-multihist.tc @@ -1,5 +1,6 @@  #!/bin/sh  # description: event trigger - test multiple histogram triggers +# flags: instance  do_reset() {      reset_trigger | 
