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