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