xref: /linux/tools/testing/selftests/verification/test.d/rv_stall.tc (revision ab0304fd69b07605553e9f161d65ecf9ccc2e2fe)
1#!/bin/sh
2# SPDX-License-Identifier: GPL-2.0-or-later
3# description: Test stall monitor
4# requires: available_reactors stall:monitor printk:reactor stress-ng:program
5
6THRESHOLD=/sys/module/stall/parameters/threshold_jiffies
7ORIG_THRESHOLD=$(cat $THRESHOLD)
8trap 'echo $ORIG_THRESHOLD > $THRESHOLD' EXIT
9
10load() { # returns true if there was a reaction
11	local lines_before cpu
12	cpu=$(($(nproc) - 1))
13	lines_before=$(dmesg | wc -l)
14	stress-ng --cpu 1 --taskset "$cpu" --sched rr --sched-prio 1 -t 3 &
15	stress-ng --cpu 5 --taskset "$cpu" -t 3 &
16	wait
17	dmesg | tail -n +$((lines_before + 1)) | grep -q "rv: monitor stall does not allow event"
18}
19
20echo 5000 > $THRESHOLD
21echo 1 > monitors/stall/enable
22echo printk > monitors/stall/reactors
23
24! load || false
25
26echo 0 > monitors/stall/enable
27echo 70 > $THRESHOLD
28echo 1 > monitors/stall/enable
29
30load
31
32echo nop > monitors/stall/reactors
33echo 0 > monitors/stall/enable
34