xref: /openbmc/linux/tools/testing/selftests/ftrace/test.d/preemptirq/irqsoff_tracer.tc (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
18bd1369bSJoel Fernandes (Google)#!/bin/sh
28bd1369bSJoel Fernandes (Google)# SPDX-License-Identifier: GPL-2.0
38bd1369bSJoel Fernandes (Google)# description: test for the preemptirqsoff tracer
4305c8388SMasami Hiramatsu# requires: preemptoff:tracer irqsoff:tracer
58bd1369bSJoel Fernandes (Google)
68bd1369bSJoel Fernandes (Google)MOD=preemptirq_delay_test
78bd1369bSJoel Fernandes (Google)
88bd1369bSJoel Fernandes (Google)fail() {
98bd1369bSJoel Fernandes (Google)    reset_tracer
108bd1369bSJoel Fernandes (Google)    rmmod $MOD || true
118bd1369bSJoel Fernandes (Google)    exit_fail
128bd1369bSJoel Fernandes (Google)}
138bd1369bSJoel Fernandes (Google)
148bd1369bSJoel Fernandes (Google)unsup() { #msg
158bd1369bSJoel Fernandes (Google)    reset_tracer
168bd1369bSJoel Fernandes (Google)    rmmod $MOD || true
178bd1369bSJoel Fernandes (Google)    echo $1
188bd1369bSJoel Fernandes (Google)    exit_unsupported
198bd1369bSJoel Fernandes (Google)}
208bd1369bSJoel Fernandes (Google)
21adb57164SPo-Hsu Linunres() { #msg
22adb57164SPo-Hsu Lin    reset_tracer
23adb57164SPo-Hsu Lin    rmmod $MOD || true
24adb57164SPo-Hsu Lin    echo $1
25adb57164SPo-Hsu Lin    exit_unresolved
26adb57164SPo-Hsu Lin}
27adb57164SPo-Hsu Lin
28adb57164SPo-Hsu Linmodprobe $MOD || unres "$MOD module not available"
298bd1369bSJoel Fernandes (Google)rmmod $MOD
308bd1369bSJoel Fernandes (Google)
318bd1369bSJoel Fernandes (Google)reset_tracer
328bd1369bSJoel Fernandes (Google)
338bd1369bSJoel Fernandes (Google)# Simulate preemptoff section for half a second couple of times
348bd1369bSJoel Fernandes (Google)echo preemptoff > current_tracer
358bd1369bSJoel Fernandes (Google)sleep 1
368bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=preempt delay=500000 || fail
378bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
388bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=preempt delay=500000 || fail
398bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
408bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=preempt delay=500000 || fail
418bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
428bd1369bSJoel Fernandes (Google)
438bd1369bSJoel Fernandes (Google)cat trace
448bd1369bSJoel Fernandes (Google)
458bd1369bSJoel Fernandes (Google)# Confirm which tracer
468bd1369bSJoel Fernandes (Google)grep -q "tracer: preemptoff" trace || fail
478bd1369bSJoel Fernandes (Google)
488bd1369bSJoel Fernandes (Google)# Check the end of the section
49*b868a02eSTiezhu Yanggrep -E -q "5.....us : <stack trace>" trace || fail
508bd1369bSJoel Fernandes (Google)
518bd1369bSJoel Fernandes (Google)# Check for 500ms of latency
52*b868a02eSTiezhu Yanggrep -E -q "latency: 5..... us" trace || fail
538bd1369bSJoel Fernandes (Google)
548bd1369bSJoel Fernandes (Google)reset_tracer
558bd1369bSJoel Fernandes (Google)
568bd1369bSJoel Fernandes (Google)# Simulate irqsoff section for half a second couple of times
578bd1369bSJoel Fernandes (Google)echo irqsoff > current_tracer
588bd1369bSJoel Fernandes (Google)sleep 1
598bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=irq delay=500000 || fail
608bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
618bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=irq delay=500000 || fail
628bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
638bd1369bSJoel Fernandes (Google)modprobe $MOD test_mode=irq delay=500000 || fail
648bd1369bSJoel Fernandes (Google)rmmod $MOD || fail
658bd1369bSJoel Fernandes (Google)
668bd1369bSJoel Fernandes (Google)cat trace
678bd1369bSJoel Fernandes (Google)
688bd1369bSJoel Fernandes (Google)# Confirm which tracer
698bd1369bSJoel Fernandes (Google)grep -q "tracer: irqsoff" trace || fail
708bd1369bSJoel Fernandes (Google)
718bd1369bSJoel Fernandes (Google)# Check the end of the section
72*b868a02eSTiezhu Yanggrep -E -q "5.....us : <stack trace>" trace || fail
738bd1369bSJoel Fernandes (Google)
748bd1369bSJoel Fernandes (Google)# Check for 500ms of latency
75*b868a02eSTiezhu Yanggrep -E -q "latency: 5..... us" trace || fail
768bd1369bSJoel Fernandes (Google)
778bd1369bSJoel Fernandes (Google)reset_tracer
788bd1369bSJoel Fernandes (Google)exit 0
79