Re: [PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
On Sat, May 19, 2018 at 12:32:41AM +0900, Masami Hiramatsu wrote: > Hi Joel, > > 55ty jmnOn Thu, 17 May 2018 18:54:21 -0700 > "Joel Fernandes (Google)"wrote: > > > Here we add unit tests for the preemptoff and irqsoff tracer by using a > > kernel module introduced previously to trigger atomic sections in the > > kernel. > > > > Cc: Steven Rostedt > > Cc: Peter Zilstra > > Cc: Ingo Molnar > > Cc: Mathieu Desnoyers > > Cc: Tom Zanussi > > Cc: Namhyung Kim > > Cc: Thomas Glexiner > > Cc: Boqun Feng > > Cc: Paul McKenney > > Cc: Masami Hiramatsu > > Cc: Todd Kjos > > Cc: Erick Reyes > > Cc: Julia Cartwright > > Cc: kernel-t...@android.com > > Signed-off-by: Joel Fernandes (Google) > > --- > > tools/testing/selftests/ftrace/config | 3 + > > .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ > > 2 files changed, 77 insertions(+) > > create mode 100644 > > tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > > > diff --git a/tools/testing/selftests/ftrace/config > > b/tools/testing/selftests/ftrace/config > > index b01924c71c09..29588b328345 100644 > > --- a/tools/testing/selftests/ftrace/config > > +++ b/tools/testing/selftests/ftrace/config > > @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y > > CONFIG_TRACER_SNAPSHOT=y > > CONFIG_STACK_TRACER=y > > CONFIG_HIST_TRIGGERS=y > > +CONFIG_PREEMPT_TRACER=y > > +CONFIG_IRQSOFF_TRACER=y > > +CONFIG_TEST_ATOMIC_SECTIONS=m > > diff --git > > a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > new file mode 100644 > > index ..b76d781c5645 > > --- /dev/null > > +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > @@ -0,0 +1,74 @@ > > +#!/bin/sh > > +# SPDX-License-Identifier: GPL-2.0 > > +# description: test for the preemptirqsoff tracer > > + > > +MOD=test_atomic_sections > > + > > +fail() { > > +reset_tracer > > +rmmod $MOD || true > > +exit_fail > > +} > > + > > +unsup() { #msg > > +reset_tracer > > +rmmod $MOD || true > > +echo $1 > > +exit_unsupported > > +} > > + > > +modprobe $MOD || unsup "$MOD module not available" > > +rmmod $MOD > > + > > +grep "preemptoff" available_tracers || unsup "preemptoff tracer not > > enabled" > > +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" > > Could you pass "-q" for all grep command in this script if it just for > checking the pattern exists? Fixed, thanks! Will send out update rolled into the series its testing. - Joel
Re: [PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
On Sat, May 19, 2018 at 12:32:41AM +0900, Masami Hiramatsu wrote: > Hi Joel, > > 55ty jmnOn Thu, 17 May 2018 18:54:21 -0700 > "Joel Fernandes (Google)" wrote: > > > Here we add unit tests for the preemptoff and irqsoff tracer by using a > > kernel module introduced previously to trigger atomic sections in the > > kernel. > > > > Cc: Steven Rostedt > > Cc: Peter Zilstra > > Cc: Ingo Molnar > > Cc: Mathieu Desnoyers > > Cc: Tom Zanussi > > Cc: Namhyung Kim > > Cc: Thomas Glexiner > > Cc: Boqun Feng > > Cc: Paul McKenney > > Cc: Masami Hiramatsu > > Cc: Todd Kjos > > Cc: Erick Reyes > > Cc: Julia Cartwright > > Cc: kernel-t...@android.com > > Signed-off-by: Joel Fernandes (Google) > > --- > > tools/testing/selftests/ftrace/config | 3 + > > .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ > > 2 files changed, 77 insertions(+) > > create mode 100644 > > tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > > > diff --git a/tools/testing/selftests/ftrace/config > > b/tools/testing/selftests/ftrace/config > > index b01924c71c09..29588b328345 100644 > > --- a/tools/testing/selftests/ftrace/config > > +++ b/tools/testing/selftests/ftrace/config > > @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y > > CONFIG_TRACER_SNAPSHOT=y > > CONFIG_STACK_TRACER=y > > CONFIG_HIST_TRIGGERS=y > > +CONFIG_PREEMPT_TRACER=y > > +CONFIG_IRQSOFF_TRACER=y > > +CONFIG_TEST_ATOMIC_SECTIONS=m > > diff --git > > a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > new file mode 100644 > > index ..b76d781c5645 > > --- /dev/null > > +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > @@ -0,0 +1,74 @@ > > +#!/bin/sh > > +# SPDX-License-Identifier: GPL-2.0 > > +# description: test for the preemptirqsoff tracer > > + > > +MOD=test_atomic_sections > > + > > +fail() { > > +reset_tracer > > +rmmod $MOD || true > > +exit_fail > > +} > > + > > +unsup() { #msg > > +reset_tracer > > +rmmod $MOD || true > > +echo $1 > > +exit_unsupported > > +} > > + > > +modprobe $MOD || unsup "$MOD module not available" > > +rmmod $MOD > > + > > +grep "preemptoff" available_tracers || unsup "preemptoff tracer not > > enabled" > > +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" > > Could you pass "-q" for all grep command in this script if it just for > checking the pattern exists? Fixed, thanks! Will send out update rolled into the series its testing. - Joel
Re: [PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
Hi Joel, 55ty jmnOn Thu, 17 May 2018 18:54:21 -0700 "Joel Fernandes (Google)"wrote: > Here we add unit tests for the preemptoff and irqsoff tracer by using a > kernel module introduced previously to trigger atomic sections in the > kernel. > > Cc: Steven Rostedt > Cc: Peter Zilstra > Cc: Ingo Molnar > Cc: Mathieu Desnoyers > Cc: Tom Zanussi > Cc: Namhyung Kim > Cc: Thomas Glexiner > Cc: Boqun Feng > Cc: Paul McKenney > Cc: Masami Hiramatsu > Cc: Todd Kjos > Cc: Erick Reyes > Cc: Julia Cartwright > Cc: kernel-t...@android.com > Signed-off-by: Joel Fernandes (Google) > --- > tools/testing/selftests/ftrace/config | 3 + > .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ > 2 files changed, 77 insertions(+) > create mode 100644 > tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > diff --git a/tools/testing/selftests/ftrace/config > b/tools/testing/selftests/ftrace/config > index b01924c71c09..29588b328345 100644 > --- a/tools/testing/selftests/ftrace/config > +++ b/tools/testing/selftests/ftrace/config > @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y > CONFIG_TRACER_SNAPSHOT=y > CONFIG_STACK_TRACER=y > CONFIG_HIST_TRIGGERS=y > +CONFIG_PREEMPT_TRACER=y > +CONFIG_IRQSOFF_TRACER=y > +CONFIG_TEST_ATOMIC_SECTIONS=m > diff --git > a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > new file mode 100644 > index ..b76d781c5645 > --- /dev/null > +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > @@ -0,0 +1,74 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0 > +# description: test for the preemptirqsoff tracer > + > +MOD=test_atomic_sections > + > +fail() { > +reset_tracer > +rmmod $MOD || true > +exit_fail > +} > + > +unsup() { #msg > +reset_tracer > +rmmod $MOD || true > +echo $1 > +exit_unsupported > +} > + > +modprobe $MOD || unsup "$MOD module not available" > +rmmod $MOD > + > +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" > +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" Could you pass "-q" for all grep command in this script if it just for checking the pattern exists? Thank you, > + > +reset_tracer > + > +# Simulate preemptoff section for half a second couple of times > +echo preemptoff > current_tracer > +sleep 1 > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > + > +cat trace > + > +# Confirm which tracer > +grep "tracer: preemptoff" trace || fail > + > +# Check the end of the section > +egrep "5.us : " trace || fail > + > +# Check for 500ms of latency > +egrep "latency: 5. us" trace || fail > + > +reset_tracer > + > +# Simulate irqsoff section for half a second couple of times > +echo irqsoff > current_tracer > +sleep 1 > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > + > +cat trace > + > +# Confirm which tracer > +grep "tracer: irqsoff" trace || fail > + > +# Check the end of the section > +egrep "5.us : " trace || fail > + > +# Check for 500ms of latency > +egrep "latency: 5. us" trace || fail > + > +reset_tracer > +exit 0 > + > -- > 2.17.0.441.gb46fe60e1d-goog > -- Masami Hiramatsu
Re: [PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
Hi Joel, 55ty jmnOn Thu, 17 May 2018 18:54:21 -0700 "Joel Fernandes (Google)" wrote: > Here we add unit tests for the preemptoff and irqsoff tracer by using a > kernel module introduced previously to trigger atomic sections in the > kernel. > > Cc: Steven Rostedt > Cc: Peter Zilstra > Cc: Ingo Molnar > Cc: Mathieu Desnoyers > Cc: Tom Zanussi > Cc: Namhyung Kim > Cc: Thomas Glexiner > Cc: Boqun Feng > Cc: Paul McKenney > Cc: Masami Hiramatsu > Cc: Todd Kjos > Cc: Erick Reyes > Cc: Julia Cartwright > Cc: kernel-t...@android.com > Signed-off-by: Joel Fernandes (Google) > --- > tools/testing/selftests/ftrace/config | 3 + > .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ > 2 files changed, 77 insertions(+) > create mode 100644 > tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > > diff --git a/tools/testing/selftests/ftrace/config > b/tools/testing/selftests/ftrace/config > index b01924c71c09..29588b328345 100644 > --- a/tools/testing/selftests/ftrace/config > +++ b/tools/testing/selftests/ftrace/config > @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y > CONFIG_TRACER_SNAPSHOT=y > CONFIG_STACK_TRACER=y > CONFIG_HIST_TRIGGERS=y > +CONFIG_PREEMPT_TRACER=y > +CONFIG_IRQSOFF_TRACER=y > +CONFIG_TEST_ATOMIC_SECTIONS=m > diff --git > a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > new file mode 100644 > index ..b76d781c5645 > --- /dev/null > +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc > @@ -0,0 +1,74 @@ > +#!/bin/sh > +# SPDX-License-Identifier: GPL-2.0 > +# description: test for the preemptirqsoff tracer > + > +MOD=test_atomic_sections > + > +fail() { > +reset_tracer > +rmmod $MOD || true > +exit_fail > +} > + > +unsup() { #msg > +reset_tracer > +rmmod $MOD || true > +echo $1 > +exit_unsupported > +} > + > +modprobe $MOD || unsup "$MOD module not available" > +rmmod $MOD > + > +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" > +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" Could you pass "-q" for all grep command in this script if it just for checking the pattern exists? Thank you, > + > +reset_tracer > + > +# Simulate preemptoff section for half a second couple of times > +echo preemptoff > current_tracer > +sleep 1 > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail > +rmmod test_atomic_sections || fail > + > +cat trace > + > +# Confirm which tracer > +grep "tracer: preemptoff" trace || fail > + > +# Check the end of the section > +egrep "5.us : " trace || fail > + > +# Check for 500ms of latency > +egrep "latency: 5. us" trace || fail > + > +reset_tracer > + > +# Simulate irqsoff section for half a second couple of times > +echo irqsoff > current_tracer > +sleep 1 > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail > +rmmod test_atomic_sections || fail > + > +cat trace > + > +# Confirm which tracer > +grep "tracer: irqsoff" trace || fail > + > +# Check the end of the section > +egrep "5.us : " trace || fail > + > +# Check for 500ms of latency > +egrep "latency: 5. us" trace || fail > + > +reset_tracer > +exit 0 > + > -- > 2.17.0.441.gb46fe60e1d-goog > -- Masami Hiramatsu
[PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
From: "Joel Fernandes (Google)"Here we add unit tests for the preemptoff and irqsoff tracer by using a kernel module introduced previously to trigger atomic sections in the kernel. Cc: Steven Rostedt Cc: Peter Zilstra Cc: Ingo Molnar Cc: Mathieu Desnoyers Cc: Tom Zanussi Cc: Namhyung Kim Cc: Thomas Glexiner Cc: Boqun Feng Cc: Paul McKenney Cc: Masami Hiramatsu Cc: Todd Kjos Cc: Erick Reyes Cc: Julia Cartwright Cc: kernel-t...@android.com Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/ftrace/config | 3 + .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ 2 files changed, 77 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b01924c71c09..29588b328345 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_PREEMPT_TRACER=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_TEST_ATOMIC_SECTIONS=m diff --git a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc new file mode 100644 index ..b76d781c5645 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc @@ -0,0 +1,74 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: test for the preemptirqsoff tracer + +MOD=test_atomic_sections + +fail() { +reset_tracer +rmmod $MOD || true +exit_fail +} + +unsup() { #msg +reset_tracer +rmmod $MOD || true +echo $1 +exit_unsupported +} + +modprobe $MOD || unsup "$MOD module not available" +rmmod $MOD + +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" + +reset_tracer + +# Simulate preemptoff section for half a second couple of times +echo preemptoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: preemptoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer + +# Simulate irqsoff section for half a second couple of times +echo irqsoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: irqsoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer +exit 0 + -- 2.17.0.441.gb46fe60e1d-goog
[PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
From: "Joel Fernandes (Google)" Here we add unit tests for the preemptoff and irqsoff tracer by using a kernel module introduced previously to trigger atomic sections in the kernel. Cc: Steven Rostedt Cc: Peter Zilstra Cc: Ingo Molnar Cc: Mathieu Desnoyers Cc: Tom Zanussi Cc: Namhyung Kim Cc: Thomas Glexiner Cc: Boqun Feng Cc: Paul McKenney Cc: Masami Hiramatsu Cc: Todd Kjos Cc: Erick Reyes Cc: Julia Cartwright Cc: kernel-t...@android.com Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/ftrace/config | 3 + .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ 2 files changed, 77 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b01924c71c09..29588b328345 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_PREEMPT_TRACER=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_TEST_ATOMIC_SECTIONS=m diff --git a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc new file mode 100644 index ..b76d781c5645 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc @@ -0,0 +1,74 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: test for the preemptirqsoff tracer + +MOD=test_atomic_sections + +fail() { +reset_tracer +rmmod $MOD || true +exit_fail +} + +unsup() { #msg +reset_tracer +rmmod $MOD || true +echo $1 +exit_unsupported +} + +modprobe $MOD || unsup "$MOD module not available" +rmmod $MOD + +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" + +reset_tracer + +# Simulate preemptoff section for half a second couple of times +echo preemptoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: preemptoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer + +# Simulate irqsoff section for half a second couple of times +echo irqsoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: irqsoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer +exit 0 + -- 2.17.0.441.gb46fe60e1d-goog
[PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
Here we add unit tests for the preemptoff and irqsoff tracer by using a kernel module introduced previously to trigger atomic sections in the kernel. Cc: Steven RostedtCc: Peter Zilstra Cc: Ingo Molnar Cc: Mathieu Desnoyers Cc: Tom Zanussi Cc: Namhyung Kim Cc: Thomas Glexiner Cc: Boqun Feng Cc: Paul McKenney Cc: Masami Hiramatsu Cc: Todd Kjos Cc: Erick Reyes Cc: Julia Cartwright Cc: kernel-t...@android.com Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/ftrace/config | 3 + .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ 2 files changed, 77 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b01924c71c09..29588b328345 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_PREEMPT_TRACER=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_TEST_ATOMIC_SECTIONS=m diff --git a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc new file mode 100644 index ..b76d781c5645 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc @@ -0,0 +1,74 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: test for the preemptirqsoff tracer + +MOD=test_atomic_sections + +fail() { +reset_tracer +rmmod $MOD || true +exit_fail +} + +unsup() { #msg +reset_tracer +rmmod $MOD || true +echo $1 +exit_unsupported +} + +modprobe $MOD || unsup "$MOD module not available" +rmmod $MOD + +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" + +reset_tracer + +# Simulate preemptoff section for half a second couple of times +echo preemptoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: preemptoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer + +# Simulate irqsoff section for half a second couple of times +echo irqsoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: irqsoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer +exit 0 + -- 2.17.0.441.gb46fe60e1d-goog
[PATCH 2/2] kselftests: ftrace: Add tests for the preemptoff and irqsoff tracers
Here we add unit tests for the preemptoff and irqsoff tracer by using a kernel module introduced previously to trigger atomic sections in the kernel. Cc: Steven Rostedt Cc: Peter Zilstra Cc: Ingo Molnar Cc: Mathieu Desnoyers Cc: Tom Zanussi Cc: Namhyung Kim Cc: Thomas Glexiner Cc: Boqun Feng Cc: Paul McKenney Cc: Masami Hiramatsu Cc: Todd Kjos Cc: Erick Reyes Cc: Julia Cartwright Cc: kernel-t...@android.com Signed-off-by: Joel Fernandes (Google) --- tools/testing/selftests/ftrace/config | 3 + .../test.d/preemptirq/irqsoff_tracer.tc | 74 +++ 2 files changed, 77 insertions(+) create mode 100644 tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc diff --git a/tools/testing/selftests/ftrace/config b/tools/testing/selftests/ftrace/config index b01924c71c09..29588b328345 100644 --- a/tools/testing/selftests/ftrace/config +++ b/tools/testing/selftests/ftrace/config @@ -4,3 +4,6 @@ CONFIG_FUNCTION_PROFILER=y CONFIG_TRACER_SNAPSHOT=y CONFIG_STACK_TRACER=y CONFIG_HIST_TRIGGERS=y +CONFIG_PREEMPT_TRACER=y +CONFIG_IRQSOFF_TRACER=y +CONFIG_TEST_ATOMIC_SECTIONS=m diff --git a/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc new file mode 100644 index ..b76d781c5645 --- /dev/null +++ b/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc @@ -0,0 +1,74 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0 +# description: test for the preemptirqsoff tracer + +MOD=test_atomic_sections + +fail() { +reset_tracer +rmmod $MOD || true +exit_fail +} + +unsup() { #msg +reset_tracer +rmmod $MOD || true +echo $1 +exit_unsupported +} + +modprobe $MOD || unsup "$MOD module not available" +rmmod $MOD + +grep "preemptoff" available_tracers || unsup "preemptoff tracer not enabled" +grep "irqsoff" available_tracers || unsup "irqsoff tracer not enabled" + +reset_tracer + +# Simulate preemptoff section for half a second couple of times +echo preemptoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=preempt atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: preemptoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer + +# Simulate irqsoff section for half a second couple of times +echo irqsoff > current_tracer +sleep 1 +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail +modprobe test_atomic_sections atomic_mode=irq atomic_time=50 || fail +rmmod test_atomic_sections || fail + +cat trace + +# Confirm which tracer +grep "tracer: irqsoff" trace || fail + +# Check the end of the section +egrep "5.us : " trace || fail + +# Check for 500ms of latency +egrep "latency: 5. us" trace || fail + +reset_tracer +exit 0 + -- 2.17.0.441.gb46fe60e1d-goog