1988b0c54SDavid Riley#!/bin/bash 2*9c92ab61SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only 3988b0c54SDavid Riley 4988b0c54SDavid Riley# udelay() test script 5988b0c54SDavid Riley# 6988b0c54SDavid Riley# Test is executed by writing and reading to /sys/kernel/debug/udelay_test 7988b0c54SDavid Riley# and exercises a variety of delays to ensure that udelay() is delaying 8988b0c54SDavid Riley# at least as long as requested (as compared to ktime). 9988b0c54SDavid Riley# 10988b0c54SDavid Riley# Copyright (C) 2014 Google, Inc. 11988b0c54SDavid Riley# 12988b0c54SDavid Riley 13988b0c54SDavid RileyMODULE_NAME=udelay_test 14988b0c54SDavid RileyUDELAY_PATH=/sys/kernel/debug/udelay_test 15988b0c54SDavid Riley 16988b0c54SDavid Rileysetup() 17988b0c54SDavid Riley{ 18988b0c54SDavid Riley /sbin/modprobe -q $MODULE_NAME 19988b0c54SDavid Riley tmp_file=`mktemp` 20988b0c54SDavid Riley} 21988b0c54SDavid Riley 22988b0c54SDavid Rileytest_one() 23988b0c54SDavid Riley{ 24988b0c54SDavid Riley delay=$1 25988b0c54SDavid Riley echo $delay > $UDELAY_PATH 26988b0c54SDavid Riley tee -a $tmp_file < $UDELAY_PATH 27988b0c54SDavid Riley} 28988b0c54SDavid Riley 29988b0c54SDavid Rileycleanup() 30988b0c54SDavid Riley{ 31988b0c54SDavid Riley if [ -f $tmp_file ]; then 32988b0c54SDavid Riley rm $tmp_file 33988b0c54SDavid Riley fi 34988b0c54SDavid Riley /sbin/modprobe -q -r $MODULE_NAME 35988b0c54SDavid Riley} 36988b0c54SDavid Riley 37988b0c54SDavid Rileytrap cleanup EXIT 38988b0c54SDavid Rileysetup 39988b0c54SDavid Riley 40988b0c54SDavid Riley# Delay for a variety of times. 41988b0c54SDavid Riley# 1..200, 200..500 (by 10), 500..2000 (by 100) 42988b0c54SDavid Rileyfor (( delay = 1; delay < 200; delay += 1 )); do 43988b0c54SDavid Riley test_one $delay 44988b0c54SDavid Rileydone 45988b0c54SDavid Rileyfor (( delay = 200; delay < 500; delay += 10 )); do 46988b0c54SDavid Riley test_one $delay 47988b0c54SDavid Rileydone 48988b0c54SDavid Rileyfor (( delay = 500; delay <= 2000; delay += 100 )); do 49988b0c54SDavid Riley test_one $delay 50988b0c54SDavid Rileydone 51988b0c54SDavid Riley 52988b0c54SDavid Riley# Search for failures 53988b0c54SDavid Rileycount=`grep -c FAIL $tmp_file` 54988b0c54SDavid Rileyif [ $? -eq "0" ]; then 55988b0c54SDavid Riley echo "ERROR: $count delays failed to delay long enough" 56988b0c54SDavid Riley retcode=1 57988b0c54SDavid Rileyfi 58988b0c54SDavid Riley 59988b0c54SDavid Rileyexit $retcode 60