* [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption
[not found] <20260625121440.116317-1-gmonaco@redhat.com>
@ 2026-06-25 12:14 ` Gabriele Monaco
2026-07-09 8:14 ` Nam Cao
2026-07-09 17:10 ` Wen Yang
2026-06-25 12:14 ` [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test Gabriele Monaco
2026-06-25 12:14 ` [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors Gabriele Monaco
2 siblings, 2 replies; 11+ messages in thread
From: Gabriele Monaco @ 2026-06-25 12:14 UTC (permalink / raw)
To: linux-trace-kernel, linux-kernel, Steven Rostedt, Gabriele Monaco,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang
RV selftest rely on bash errexit (set -e) to terminate with error, when
a step is expected to return false, the following syntax is used:
! cmd
This however prevents the test from exiting when cmd is false (desired)
but doesn't exit if cmd is true, since commands prefixed with ! are
explicitly excluded from errexit.
Use the syntax
! cmd || false
Which ends up checking the exit value of ! cmd and supplies a false
command for errexit to evaluate.
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
---
.../verification/test.d/rv_monitor_enable_disable.tc | 10 +++++-----
.../verification/test.d/rv_monitor_reactor.tc | 4 ++--
.../selftests/verification/test.d/rv_wwnr_printk.tc | 4 ++--
3 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/tools/testing/selftests/verification/test.d/rv_monitor_enable_disable.tc b/tools/testing/selftests/verification/test.d/rv_monitor_enable_disable.tc
index f29236defb..61e2c8b54d 100644
--- a/tools/testing/selftests/verification/test.d/rv_monitor_enable_disable.tc
+++ b/tools/testing/selftests/verification/test.d/rv_monitor_enable_disable.tc
@@ -10,7 +10,7 @@ test_simple_monitor() {
grep -q "$monitor$" enabled_monitors
echo 0 > "monitors/$prefix$monitor/enable"
- ! grep -q "$monitor$" enabled_monitors
+ ! grep -q "$monitor$" enabled_monitors || false
echo "$monitor" >> enabled_monitors
grep -q 1 "monitors/$prefix$monitor/enable"
@@ -34,12 +34,12 @@ test_container_monitor() {
test -n "$nested"
echo 0 > "monitors/$monitor/enable"
- ! grep -q "^$monitor$" enabled_monitors
+ ! grep -q "^$monitor$" enabled_monitors || false
for nested_dir in "monitors/$monitor"/*; do
[ -d "$nested_dir" ] || continue
nested=$(basename "$nested_dir")
- ! grep -q "^$monitor:$nested$" enabled_monitors
+ ! grep -q "^$monitor:$nested$" enabled_monitors || false
done
echo "$monitor" >> enabled_monitors
@@ -71,5 +71,5 @@ for monitor_dir in monitors/*; do
fi
done
-! echo non_existent_monitor > enabled_monitors
-! grep -q "^non_existent_monitor$" enabled_monitors
+! echo non_existent_monitor > enabled_monitors || false
+! grep -q "^non_existent_monitor$" enabled_monitors || false
diff --git a/tools/testing/selftests/verification/test.d/rv_monitor_reactor.tc b/tools/testing/selftests/verification/test.d/rv_monitor_reactor.tc
index 2958bf8493..516a209713 100644
--- a/tools/testing/selftests/verification/test.d/rv_monitor_reactor.tc
+++ b/tools/testing/selftests/verification/test.d/rv_monitor_reactor.tc
@@ -64,5 +64,5 @@ done
monitor=$(ls /sys/kernel/tracing/rv/monitors -1 | head -n 1)
test -f "monitors/$monitor/reactors"
-! echo non_existent_reactor > "monitors/$monitor/reactors"
-! grep -q "\\[non_existent_reactor\\]" "monitors/$monitor/reactors"
+! echo non_existent_reactor > "monitors/$monitor/reactors" || false
+! grep -q "\\[non_existent_reactor\\]" "monitors/$monitor/reactors" || false
diff --git a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
index 5a59432b1d..96de95edb5 100644
--- a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
+++ b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
@@ -17,13 +17,13 @@ echo printk > monitors/wwnr/reactors
load
echo 0 > monitoring_on
-! load
+! load || false
echo 1 > monitoring_on
load
echo 0 > reacting_on
-! load
+! load || false
echo 1 > reacting_on
echo nop > monitors/wwnr/reactors
--
2.54.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption
2026-06-25 12:14 ` [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption Gabriele Monaco
@ 2026-07-09 8:14 ` Nam Cao
2026-07-09 17:10 ` Wen Yang
1 sibling, 0 replies; 11+ messages in thread
From: Nam Cao @ 2026-07-09 8:14 UTC (permalink / raw)
To: Gabriele Monaco, linux-trace-kernel, linux-kernel, Steven Rostedt,
Gabriele Monaco, Shuah Khan, linux-kselftest
Cc: Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang
Gabriele Monaco <gmonaco@redhat.com> writes:
> RV selftest rely on bash errexit (set -e) to terminate with error, when
> a step is expected to return false, the following syntax is used:
>
> ! cmd
>
> This however prevents the test from exiting when cmd is false (desired)
> but doesn't exit if cmd is true, since commands prefixed with ! are
> explicitly excluded from errexit.
>
> Use the syntax
>
> ! cmd || false
>
> Which ends up checking the exit value of ! cmd and supplies a false
> command for errexit to evaluate.
>
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
Sounds reasonable.
Acked-by: Nam Cao <namcao@linutronix.de>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption
2026-06-25 12:14 ` [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption Gabriele Monaco
2026-07-09 8:14 ` Nam Cao
@ 2026-07-09 17:10 ` Wen Yang
1 sibling, 0 replies; 11+ messages in thread
From: Wen Yang @ 2026-07-09 17:10 UTC (permalink / raw)
To: Gabriele Monaco, linux-trace-kernel, linux-kernel, Steven Rostedt,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur
On 6/25/26 20:14, Gabriele Monaco wrote:
> RV selftest rely on bash errexit (set -e) to terminate with error, when
> a step is expected to return false, the following syntax is used:
>
> ! cmd
>
> This however prevents the test from exiting when cmd is false (desired)
> but doesn't exit if cmd is true, since commands prefixed with ! are
> explicitly excluded from errexit.
>
> Use the syntax
>
> ! cmd || false
>
> Which ends up checking the exit value of ! cmd and supplies a false
> command for errexit to evaluate.
>
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
Reviewed-by: Wen Yang <wen.yang@linux.dev>
--
Best wishes,
Wen
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test
[not found] <20260625121440.116317-1-gmonaco@redhat.com>
2026-06-25 12:14 ` [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption Gabriele Monaco
@ 2026-06-25 12:14 ` Gabriele Monaco
2026-07-09 17:08 ` Wen Yang
2026-07-10 6:18 ` Nam Cao
2026-06-25 12:14 ` [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors Gabriele Monaco
2 siblings, 2 replies; 11+ messages in thread
From: Gabriele Monaco @ 2026-06-25 12:14 UTC (permalink / raw)
To: linux-trace-kernel, linux-kernel, Steven Rostedt, Gabriele Monaco,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang
The wwnr_printk test expects no reactions in some situations, after
fixing the bash assertion, the test is failing because expecting no
reaction after a previous step had reactions is flaky without making
sure all buffers are flushed.
Simplify the test and run the steps expecting no reaction before the one
expecting reactions. Also simplify the load function to stop loads as
soon as a reaction occurs, this limits the number of lines to flush and
makes tests overall more stable.
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
---
.../verification/test.d/rv_wwnr_printk.tc | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
index 96de95edb5..a23d22f6ec 100644
--- a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
+++ b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
@@ -4,27 +4,30 @@
# requires: available_reactors wwnr:monitor printk:reactor stress-ng:program
load() { # returns true if there was a reaction
- local lines_before num
+ local lines_before num load_pid ret
num=$((($(nproc) + 1) / 2))
lines_before=$(dmesg | wc -l)
- stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q
- dmesg | tail -n $((lines_before + 1)) | grep -q "rv: monitor wwnr does not allow event"
+ stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q &
+ load_pid=$!
+ timeout 5 dmesg -w | tail -n +$((lines_before + 1)) | grep -m 1 -q "rv: monitor wwnr does not allow event"
+ ret=$?
+ kill "$load_pid"
+ wait "$load_pid"
+ return $ret
}
echo 1 > monitors/wwnr/enable
echo printk > monitors/wwnr/reactors
-load
-
echo 0 > monitoring_on
! load || false
echo 1 > monitoring_on
-load
-
echo 0 > reacting_on
! load || false
echo 1 > reacting_on
+load
+
echo nop > monitors/wwnr/reactors
echo 0 > monitors/wwnr/enable
--
2.54.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test
2026-06-25 12:14 ` [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test Gabriele Monaco
@ 2026-07-09 17:08 ` Wen Yang
2026-07-10 8:31 ` Gabriele Monaco
2026-07-10 6:18 ` Nam Cao
1 sibling, 1 reply; 11+ messages in thread
From: Wen Yang @ 2026-07-09 17:08 UTC (permalink / raw)
To: Gabriele Monaco, linux-trace-kernel, linux-kernel, Steven Rostedt,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur
On 6/25/26 20:14, Gabriele Monaco wrote:
> The wwnr_printk test expects no reactions in some situations, after
> fixing the bash assertion, the test is failing because expecting no
> reaction after a previous step had reactions is flaky without making
> sure all buffers are flushed.
>
> Simplify the test and run the steps expecting no reaction before the one
> expecting reactions. Also simplify the load function to stop loads as
> soon as a reaction occurs, this limits the number of lines to flush and
> makes tests overall more stable.
>
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
> ---
> .../verification/test.d/rv_wwnr_printk.tc | 17 ++++++++++-------
> 1 file changed, 10 insertions(+), 7 deletions(-)
>
> diff --git a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
> index 96de95edb5..a23d22f6ec 100644
> --- a/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
> +++ b/tools/testing/selftests/verification/test.d/rv_wwnr_printk.tc
> @@ -4,27 +4,30 @@
> # requires: available_reactors wwnr:monitor printk:reactor stress-ng:program
>
> load() { # returns true if there was a reaction
> - local lines_before num
> + local lines_before num load_pid ret
> num=$((($(nproc) + 1) / 2))
> lines_before=$(dmesg | wc -l)
> - stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q
> - dmesg | tail -n $((lines_before + 1)) | grep -q "rv: monitor wwnr does not allow event"
> + stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q &
> + load_pid=$!
> + timeout 5 dmesg -w | tail -n +$((lines_before + 1)) | grep -m 1 -q "rv: monitor wwnr does not allow event"
Minor nit: could we add a small delay (e.g., sleep 0.1) before dmesg?
Reviewed-by: Wen Yang <wen.yang@linux.dev>
> + ret=$?
> + kill "$load_pid"
> + wait "$load_pid"
> + return $ret
> }
>
> echo 1 > monitors/wwnr/enable
> echo printk > monitors/wwnr/reactors
>
> -load
> -
> echo 0 > monitoring_on
> ! load || false
> echo 1 > monitoring_on
>
> -load
> -
> echo 0 > reacting_on
> ! load || false
> echo 1 > reacting_on
>
> +load
> +
> echo nop > monitors/wwnr/reactors
> echo 0 > monitors/wwnr/enable
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test
2026-07-09 17:08 ` Wen Yang
@ 2026-07-10 8:31 ` Gabriele Monaco
0 siblings, 0 replies; 11+ messages in thread
From: Gabriele Monaco @ 2026-07-10 8:31 UTC (permalink / raw)
To: Wen Yang, linux-trace-kernel, linux-kernel
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur,
Steven Rostedt, Shuah Khan, linux-kselftest
On Fri, 2026-07-10 at 01:08 +0800, Wen Yang wrote:
> > load() { # returns true if there was a reaction
> > - local lines_before num
> > + local lines_before num load_pid ret
> > num=$((($(nproc) + 1) / 2))
> > lines_before=$(dmesg | wc -l)
> > - stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q
> > - dmesg | tail -n $((lines_before + 1)) | grep -q "rv: monitor wwnr
> > does not allow event"
> > + stress-ng --cpu-sched "$num" --timer "$num" -t 5 -q &
> > + load_pid=$!
> > + timeout 5 dmesg -w | tail -n +$((lines_before + 1)) | grep -m 1 -q
> > "rv: monitor wwnr does not allow event"
>
>
> Minor nit: could we add a small delay (e.g., sleep 0.1) before dmesg?
I don't get what the benefit would be.
The intent of that line is to run a continuous dmesg (-w) for up to 5s (timeout)
but stopping if an occurrence is found (grep -m 1 would close the pipe).
Do you see a case in which this wouldn't happen?
>
> Reviewed-by: Wen Yang <wen.yang@linux.dev>
>
> > + ret=$?
> > + kill "$load_pid"
> > + wait "$load_pid"
> > + return $ret
> > }
> >
> > echo 1 > monitors/wwnr/enable
> > echo printk > monitors/wwnr/reactors
> >
> > -load
> > -
> > echo 0 > monitoring_on
> > ! load || false
> > echo 1 > monitoring_on
> >
> > -load
> > -
> > echo 0 > reacting_on
> > ! load || false
> > echo 1 > reacting_on
> >
> > +load
> > +
> > echo nop > monitors/wwnr/reactors
> > echo 0 > monitors/wwnr/enable
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test
2026-06-25 12:14 ` [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test Gabriele Monaco
2026-07-09 17:08 ` Wen Yang
@ 2026-07-10 6:18 ` Nam Cao
2026-07-10 8:41 ` Gabriele Monaco
1 sibling, 1 reply; 11+ messages in thread
From: Nam Cao @ 2026-07-10 6:18 UTC (permalink / raw)
To: Gabriele Monaco, linux-trace-kernel, linux-kernel, Steven Rostedt,
Gabriele Monaco, Shuah Khan, linux-kselftest
Cc: Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang
Gabriele Monaco <gmonaco@redhat.com> writes:
> Simplify the test and run the steps expecting no reaction before the one
> expecting reactions.
This requirement is not clear from the code. I fear a new developer who
wants to introduce a new test case will easily trip over this, or even
us a few months from now.
Instead of this, how about each test case discards or ignores all
previous reactions?
Nam
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test
2026-07-10 6:18 ` Nam Cao
@ 2026-07-10 8:41 ` Gabriele Monaco
0 siblings, 0 replies; 11+ messages in thread
From: Gabriele Monaco @ 2026-07-10 8:41 UTC (permalink / raw)
To: Nam Cao, linux-trace-kernel, linux-kernel
Cc: Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang,
Steven Rostedt, Shuah Khan, linux-kselftest
On Fri, 2026-07-10 at 08:18 +0200, Nam Cao wrote:
> Gabriele Monaco <gmonaco@redhat.com> writes:
> > Simplify the test and run the steps expecting no reaction before the one
> > expecting reactions.
>
> This requirement is not clear from the code. I fear a new developer who
> wants to introduce a new test case will easily trip over this, or even
> us a few months from now.
>
> Instead of this, how about each test case discards or ignores all
> previous reactions?
Fair points, the issue is that we are hammering wwnr, on some systems we may
still see printks for long after the monitor was disabled, I tried that grep -m1
trick to mitigate that.
To ignore all previous reactions reliably we need to wait for the buffers to
flush, something like waiting for a full second for nothing new on the
ringbuffer perhaps. I could think of that or at least make this more clear with
comments.
Thanks,
Gabriele
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors
[not found] <20260625121440.116317-1-gmonaco@redhat.com>
2026-06-25 12:14 ` [PATCH v3 15/17] selftests/verification: Fix wrong errexit assumption Gabriele Monaco
2026-06-25 12:14 ` [PATCH v3 16/17] selftests/verification: Rearrange the wwnr_printk test Gabriele Monaco
@ 2026-06-25 12:14 ` Gabriele Monaco
2026-06-28 16:58 ` Wen Yang
2 siblings, 1 reply; 11+ messages in thread
From: Gabriele Monaco @ 2026-06-25 12:14 UTC (permalink / raw)
To: linux-trace-kernel, linux-kernel, Steven Rostedt, Gabriele Monaco,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur, Wen Yang
Add selftests to verify deadline monitors don't fail under expected
conditions and the stall monitor report violations only when expected.
Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
---
.../verification/test.d/rv_deadline.tc | 21 ++++++++++++
.../selftests/verification/test.d/rv_stall.tc | 33 +++++++++++++++++++
2 files changed, 54 insertions(+)
create mode 100644 tools/testing/selftests/verification/test.d/rv_deadline.tc
create mode 100644 tools/testing/selftests/verification/test.d/rv_stall.tc
diff --git a/tools/testing/selftests/verification/test.d/rv_deadline.tc b/tools/testing/selftests/verification/test.d/rv_deadline.tc
new file mode 100644
index 0000000000..b583096bed
--- /dev/null
+++ b/tools/testing/selftests/verification/test.d/rv_deadline.tc
@@ -0,0 +1,21 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# description: Test deadline monitors trigger no reaction
+# requires: available_reactors deadline:monitor printk:reactor stress-ng:program
+
+load() { # returns true if there was a reaction
+ local lines_before
+ lines_before=$(dmesg | wc -l)
+ stress-ng --cpu 2 --sched deadline --sched-period 100000000 --sched-deadline 100000000 --sched-runtime 20000000 -t 5 &
+ stress-ng --cpu 2 --sched rr --sched-prio 50 --cyclic 1 --cyclic-policy rr --cyclic-prio 50 -t 5 &
+ wait
+ dmesg | tail -n +$((lines_before + 1)) | grep -q "rv: monitor [a-z]\+ does not allow event"
+}
+
+echo 1 > monitors/deadline/enable
+echo printk > monitors/deadline/reactors
+
+! load || false
+
+echo nop > monitors/deadline/reactors
+echo 0 > monitors/deadline/enable
diff --git a/tools/testing/selftests/verification/test.d/rv_stall.tc b/tools/testing/selftests/verification/test.d/rv_stall.tc
new file mode 100644
index 0000000000..8e9bcbb441
--- /dev/null
+++ b/tools/testing/selftests/verification/test.d/rv_stall.tc
@@ -0,0 +1,33 @@
+#!/bin/sh
+# SPDX-License-Identifier: GPL-2.0-or-later
+# description: Test stall monitor
+# requires: available_reactors stall:monitor printk:reactor stress-ng:program
+
+THRESHOLD=/sys/module/stall/parameters/threshold_jiffies
+
+load() { # returns true if there was a reaction
+ local lines_before cpu
+ cpu=$(($(nproc) - 1))
+ lines_before=$(dmesg | wc -l)
+ stress-ng --cpu 1 --taskset "$cpu" --sched rr --sched-prio 1 -t 3 &
+ stress-ng --cpu 5 --taskset "$cpu" -t 3 &
+ wait
+ dmesg | tail -n +$((lines_before + 1)) | grep -q "rv: monitor stall does not allow event"
+}
+
+echo 5000 > $THRESHOLD
+echo 1 > monitors/stall/enable
+echo printk > monitors/stall/reactors
+
+! load || false
+
+echo 0 > monitors/stall/enable
+echo 70 > $THRESHOLD
+echo 1 > monitors/stall/enable
+
+load
+
+echo nop > monitors/stall/reactors
+echo 0 > monitors/stall/enable
+
+echo 1000 > $THRESHOLD
--
2.54.0
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors
2026-06-25 12:14 ` [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors Gabriele Monaco
@ 2026-06-28 16:58 ` Wen Yang
2026-07-02 14:05 ` Gabriele Monaco
0 siblings, 1 reply; 11+ messages in thread
From: Wen Yang @ 2026-06-28 16:58 UTC (permalink / raw)
To: Gabriele Monaco, linux-trace-kernel, linux-kernel, Steven Rostedt,
Shuah Khan, linux-kselftest
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur
On 6/25/26 20:14, Gabriele Monaco wrote:
> Add selftests to verify deadline monitors don't fail under expected
> conditions and the stall monitor report violations only when expected.
>
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
> ---
> .../verification/test.d/rv_deadline.tc | 21 ++++++++++++
> .../selftests/verification/test.d/rv_stall.tc | 33 +++++++++++++++++++
> 2 files changed, 54 insertions(+)
> create mode 100644 tools/testing/selftests/verification/test.d/rv_deadline.tc
> create mode 100644 tools/testing/selftests/verification/test.d/rv_stall.tc
>
> diff --git a/tools/testing/selftests/verification/test.d/rv_deadline.tc b/tools/testing/selftests/verification/test.d/rv_deadline.tc
> new file mode 100644
> index 0000000000..b583096bed
> --- /dev/null
> +++ b/tools/testing/selftests/verification/test.d/rv_deadline.tc
> @@ -0,0 +1,21 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# description: Test deadline monitors trigger no reaction
> +# requires: available_reactors deadline:monitor printk:reactor stress-ng:program
> +
> +load() { # returns true if there was a reaction
> + local lines_before
> + lines_before=$(dmesg | wc -l)
> + stress-ng --cpu 2 --sched deadline --sched-period 100000000 --sched-deadline 100000000 --sched-runtime 20000000 -t 5 &
> + stress-ng --cpu 2 --sched rr --sched-prio 50 --cyclic 1 --cyclic-policy rr --cyclic-prio 50 -t 5 &
> + wait
> + dmesg | tail -n +$((lines_before + 1)) | grep -q "rv: monitor [a-z]\+ does not allow event"
> +}
> +
> +echo 1 > monitors/deadline/enable
> +echo printk > monitors/deadline/reactors
> +
> +! load || false
> +
> +echo nop > monitors/deadline/reactors
> +echo 0 > monitors/deadline/enable
> diff --git a/tools/testing/selftests/verification/test.d/rv_stall.tc b/tools/testing/selftests/verification/test.d/rv_stall.tc
> new file mode 100644
> index 0000000000..8e9bcbb441
> --- /dev/null
> +++ b/tools/testing/selftests/verification/test.d/rv_stall.tc
> @@ -0,0 +1,33 @@
> +#!/bin/sh
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# description: Test stall monitor
> +# requires: available_reactors stall:monitor printk:reactor stress-ng:program
> +
> +THRESHOLD=/sys/module/stall/parameters/threshold_jiffies
> +
> +load() { # returns true if there was a reaction
> + local lines_before cpu
> + cpu=$(($(nproc) - 1))
> + lines_before=$(dmesg | wc -l)
> + stress-ng --cpu 1 --taskset "$cpu" --sched rr --sched-prio 1 -t 3 &
> + stress-ng --cpu 5 --taskset "$cpu" -t 3 &
> + wait
> + dmesg | tail -n +$((lines_before + 1)) | grep -q "rv: monitor stall does not allow event"
> +}
> +
> +echo 5000 > $THRESHOLD
> +echo 1 > monitors/stall/enable
> +echo printk > monitors/stall/reactors
> +
> +! load || false
> +
> +echo 0 > monitors/stall/enable
> +echo 70 > $THRESHOLD
> +echo 1 > monitors/stall/enable
> +
> +load
> +
> +echo nop > monitors/stall/reactors
> +echo 0 > monitors/stall/enable
> +
> +echo 1000 > $THRESHOLD
A little worried:
If the system had a different value configured before the test ran,
this silently changes system state for anything running after it.
--
Best wishes,
Wen
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v3 17/17] selftests/verification: Add selftests for deadline and stall monitors
2026-06-28 16:58 ` Wen Yang
@ 2026-07-02 14:05 ` Gabriele Monaco
0 siblings, 0 replies; 11+ messages in thread
From: Gabriele Monaco @ 2026-07-02 14:05 UTC (permalink / raw)
To: Wen Yang
Cc: Nam Cao, Thomas Weissschuh, Tomas Glozar, John Kacur,
linux-trace-kernel, linux-kernel, Steven Rostedt, Shuah Khan,
linux-kselftest
On Mon, 2026-06-29 at 00:58 +0800, Wen Yang wrote:
> > +echo nop > monitors/stall/reactors
> > +echo 0 > monitors/stall/enable
> > +
> > +echo 1000 > $THRESHOLD
>
> A little worried:
> If the system had a different value configured before the test ran,
> this silently changes system state for anything running after it.
Yeah that's a valid concern, I could restore the initial value, but to make it
absolutely safe I should also trap and restore it even if the test exits
prematurely (e.g. on failure or signal).
It shouldn't add too much complexity.
Thanks,
Gabriele
^ permalink raw reply [flat|nested] 11+ messages in thread