1*4882a593Smuzhiyun#!/bin/bash 2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0 3*4882a593Smuzhiyun# 4*4882a593Smuzhiyun# Special test cases reported by people 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun# Testcase 1: Reported here: http://marc.info/?l=linux-pm&m=140618592709858&w=2 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun# protect against multiple inclusion 9*4882a593Smuzhiyunif [ $FILE_SPECIAL ]; then 10*4882a593Smuzhiyun return 0 11*4882a593Smuzhiyunelse 12*4882a593Smuzhiyun FILE_SPECIAL=DONE 13*4882a593Smuzhiyunfi 14*4882a593Smuzhiyun 15*4882a593Smuzhiyunsource cpu.sh 16*4882a593Smuzhiyunsource cpufreq.sh 17*4882a593Smuzhiyunsource governor.sh 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun# Test 1 20*4882a593Smuzhiyun# $1: policy 21*4882a593Smuzhiyun__simple_lockdep() 22*4882a593Smuzhiyun{ 23*4882a593Smuzhiyun # switch to ondemand 24*4882a593Smuzhiyun __switch_governor $1 "ondemand" 25*4882a593Smuzhiyun 26*4882a593Smuzhiyun # cat ondemand files 27*4882a593Smuzhiyun local ondir=$(find_gov_directory $1 "ondemand") 28*4882a593Smuzhiyun if [ -z $ondir ]; then 29*4882a593Smuzhiyun printf "${FUNCNAME[0]}Ondemand directory not created, quit" 30*4882a593Smuzhiyun return 31*4882a593Smuzhiyun fi 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun cat $ondir/* 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun # switch to conservative 36*4882a593Smuzhiyun __switch_governor $1 "conservative" 37*4882a593Smuzhiyun} 38*4882a593Smuzhiyun 39*4882a593Smuzhiyunsimple_lockdep() 40*4882a593Smuzhiyun{ 41*4882a593Smuzhiyun printf "** Test: Running ${FUNCNAME[0]} **\n" 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun for_each_policy __simple_lockdep 44*4882a593Smuzhiyun} 45*4882a593Smuzhiyun 46*4882a593Smuzhiyun# Test 2 47*4882a593Smuzhiyun# $1: policy 48*4882a593Smuzhiyun__concurrent_lockdep() 49*4882a593Smuzhiyun{ 50*4882a593Smuzhiyun for i in `seq 0 100`; do 51*4882a593Smuzhiyun __simple_lockdep $1 52*4882a593Smuzhiyun done 53*4882a593Smuzhiyun} 54*4882a593Smuzhiyun 55*4882a593Smuzhiyunconcurrent_lockdep() 56*4882a593Smuzhiyun{ 57*4882a593Smuzhiyun printf "** Test: Running ${FUNCNAME[0]} **\n" 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun for_each_policy_concurrent __concurrent_lockdep 60*4882a593Smuzhiyun} 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun# Test 3 63*4882a593Smuzhiyunquick_shuffle() 64*4882a593Smuzhiyun{ 65*4882a593Smuzhiyun # this is called concurrently from governor_race 66*4882a593Smuzhiyun for I in `seq 1000` 67*4882a593Smuzhiyun do 68*4882a593Smuzhiyun echo ondemand | sudo tee $CPUFREQROOT/policy*/scaling_governor & 69*4882a593Smuzhiyun echo userspace | sudo tee $CPUFREQROOT/policy*/scaling_governor & 70*4882a593Smuzhiyun done 71*4882a593Smuzhiyun} 72*4882a593Smuzhiyun 73*4882a593Smuzhiyungovernor_race() 74*4882a593Smuzhiyun{ 75*4882a593Smuzhiyun printf "** Test: Running ${FUNCNAME[0]} **\n" 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun # run 8 concurrent instances 78*4882a593Smuzhiyun for I in `seq 8` 79*4882a593Smuzhiyun do 80*4882a593Smuzhiyun quick_shuffle & 81*4882a593Smuzhiyun done 82*4882a593Smuzhiyun} 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun# Test 4 85*4882a593Smuzhiyun# $1: cpu 86*4882a593Smuzhiyunhotplug_with_updates_cpu() 87*4882a593Smuzhiyun{ 88*4882a593Smuzhiyun local filepath="$CPUROOT/$1/cpufreq" 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun # switch to ondemand 91*4882a593Smuzhiyun __switch_governor_for_cpu $1 "ondemand" 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun for i in `seq 1 5000` 94*4882a593Smuzhiyun do 95*4882a593Smuzhiyun reboot_cpu $1 96*4882a593Smuzhiyun done & 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun local freqs=$(cat $filepath/scaling_available_frequencies) 99*4882a593Smuzhiyun local oldfreq=$(cat $filepath/scaling_min_freq) 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun for j in `seq 1 5000` 102*4882a593Smuzhiyun do 103*4882a593Smuzhiyun # Set all frequencies one-by-one 104*4882a593Smuzhiyun for freq in $freqs; do 105*4882a593Smuzhiyun echo $freq > $filepath/scaling_min_freq 106*4882a593Smuzhiyun done 107*4882a593Smuzhiyun done 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun # restore old freq 110*4882a593Smuzhiyun echo $oldfreq > $filepath/scaling_min_freq 111*4882a593Smuzhiyun} 112*4882a593Smuzhiyun 113*4882a593Smuzhiyunhotplug_with_updates() 114*4882a593Smuzhiyun{ 115*4882a593Smuzhiyun for_each_non_boot_cpu hotplug_with_updates_cpu 116*4882a593Smuzhiyun} 117