Message ID | 20240216095626.1234309-1-naveen@kernel.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | [RESEND] selftests/ftrace: Add test to exercize function tracer across cpu hotplug | expand |
On Fri, 16 Feb 2024 15:26:26 +0530 Naveen N Rao <naveen@kernel.org> wrote: > Add a test to exercize cpu hotplug with the function tracer active to > ensure that sensitive functions in idle path are excluded from being > traced. This helps catch issues such as the one fixed by commit > 4b3338aaa74d ("powerpc/ftrace: Fix stack teardown in ftrace_no_trace"). > > Signed-off-by: Naveen N Rao <naveen@kernel.org> > Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org> Shuah, can you take this? Thanks, -- Steve > --- > .../ftrace/test.d/ftrace/func_hotplug.tc | 42 +++++++++++++++++++ > 1 file changed, 42 insertions(+) > create mode 100644 tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc > > diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc > new file mode 100644 > index 000000000000..ccfbfde3d942 > --- /dev/null > +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc > @@ -0,0 +1,42 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0-or-later > +# description: ftrace - function trace across cpu hotplug > +# requires: function:tracer > + > +if ! which nproc ; then > + nproc() { > + ls -d /sys/devices/system/cpu/cpu[0-9]* | wc -l > + } > +fi > + > +NP=`nproc` > + > +if [ $NP -eq 1 ] ;then > + echo "We cannot test cpu hotplug in UP environment" > + exit_unresolved > +fi > + > +# Find online cpu > +for i in /sys/devices/system/cpu/cpu[1-9]*; do > + if [ -f $i/online ] && [ "$(cat $i/online)" = "1" ]; then > + cpu=$i > + break > + fi > +done > + > +if [ -z "$cpu" ]; then > + echo "We cannot test cpu hotplug with a single cpu online" > + exit_unresolved > +fi > + > +echo 0 > tracing_on > +echo > trace > + > +: "Set $(basename $cpu) offline/online with function tracer enabled" > +echo function > current_tracer > +echo 1 > tracing_on > +(echo 0 > $cpu/online) > +(echo "forked"; sleep 1) > +(echo 1 > $cpu/online) > +echo 0 > tracing_on > +echo nop > current_tracer > > base-commit: 130a83879954a9fed35cf4474d223b4fcfd479fa
On 2/16/24 07:23, Steven Rostedt wrote: > On Fri, 16 Feb 2024 15:26:26 +0530 > Naveen N Rao <naveen@kernel.org> wrote: > >> Add a test to exercize cpu hotplug with the function tracer active to >> ensure that sensitive functions in idle path are excluded from being >> traced. This helps catch issues such as the one fixed by commit >> 4b3338aaa74d ("powerpc/ftrace: Fix stack teardown in ftrace_no_trace"). >> >> Signed-off-by: Naveen N Rao <naveen@kernel.org> >> Acked-by: Masami Hiramatsu (Google) <mhiramat@kernel.org> > > Acked-by: Steven Rostedt (Google) <rostedt@goodmis.org> > > Shuah, can you take this? > Done. Applied to next for Linux6.9-rc1 thanks, -- Shuah
diff --git a/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc b/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc new file mode 100644 index 000000000000..ccfbfde3d942 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/ftrace/func_hotplug.tc @@ -0,0 +1,42 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-or-later +# description: ftrace - function trace across cpu hotplug +# requires: function:tracer + +if ! which nproc ; then + nproc() { + ls -d /sys/devices/system/cpu/cpu[0-9]* | wc -l + } +fi + +NP=`nproc` + +if [ $NP -eq 1 ] ;then + echo "We cannot test cpu hotplug in UP environment" + exit_unresolved +fi + +# Find online cpu +for i in /sys/devices/system/cpu/cpu[1-9]*; do + if [ -f $i/online ] && [ "$(cat $i/online)" = "1" ]; then + cpu=$i + break + fi +done + +if [ -z "$cpu" ]; then + echo "We cannot test cpu hotplug with a single cpu online" + exit_unresolved +fi + +echo 0 > tracing_on +echo > trace + +: "Set $(basename $cpu) offline/online with function tracer enabled" +echo function > current_tracer +echo 1 > tracing_on +(echo 0 > $cpu/online) +(echo "forked"; sleep 1) +(echo 1 > $cpu/online) +echo 0 > tracing_on +echo nop > current_tracer