| #!/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 |
| ORIG_THRESHOLD=$(cat $THRESHOLD) |
| trap 'echo $ORIG_THRESHOLD > $THRESHOLD' EXIT |
| |
| 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 |