xref: /OK3568_Linux_fs/kernel/tools/testing/selftests/cpufreq/cpu.sh (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun#!/bin/bash
2*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0
3*4882a593Smuzhiyun#
4*4882a593Smuzhiyun# CPU helpers
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun# protect against multiple inclusion
7*4882a593Smuzhiyunif [ $FILE_CPU ]; then
8*4882a593Smuzhiyun	return 0
9*4882a593Smuzhiyunelse
10*4882a593Smuzhiyun	FILE_CPU=DONE
11*4882a593Smuzhiyunfi
12*4882a593Smuzhiyun
13*4882a593Smuzhiyunsource cpufreq.sh
14*4882a593Smuzhiyun
15*4882a593Smuzhiyunfor_each_cpu()
16*4882a593Smuzhiyun{
17*4882a593Smuzhiyun	cpus=$(ls $CPUROOT | grep "cpu[0-9].*")
18*4882a593Smuzhiyun	for cpu in $cpus; do
19*4882a593Smuzhiyun		$@ $cpu
20*4882a593Smuzhiyun	done
21*4882a593Smuzhiyun}
22*4882a593Smuzhiyun
23*4882a593Smuzhiyunfor_each_non_boot_cpu()
24*4882a593Smuzhiyun{
25*4882a593Smuzhiyun	cpus=$(ls $CPUROOT | grep "cpu[1-9].*")
26*4882a593Smuzhiyun	for cpu in $cpus; do
27*4882a593Smuzhiyun		$@ $cpu
28*4882a593Smuzhiyun	done
29*4882a593Smuzhiyun}
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun#$1: cpu
32*4882a593Smuzhiyunoffline_cpu()
33*4882a593Smuzhiyun{
34*4882a593Smuzhiyun	printf "Offline $1\n"
35*4882a593Smuzhiyun	echo 0 > $CPUROOT/$1/online
36*4882a593Smuzhiyun}
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun#$1: cpu
39*4882a593Smuzhiyunonline_cpu()
40*4882a593Smuzhiyun{
41*4882a593Smuzhiyun	printf "Online $1\n"
42*4882a593Smuzhiyun	echo 1 > $CPUROOT/$1/online
43*4882a593Smuzhiyun}
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun#$1: cpu
46*4882a593Smuzhiyunreboot_cpu()
47*4882a593Smuzhiyun{
48*4882a593Smuzhiyun	offline_cpu $1
49*4882a593Smuzhiyun	online_cpu $1
50*4882a593Smuzhiyun}
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun# Reboot CPUs
53*4882a593Smuzhiyun# param: number of times we want to run the loop
54*4882a593Smuzhiyunreboot_cpus()
55*4882a593Smuzhiyun{
56*4882a593Smuzhiyun	printf "** Test: Running ${FUNCNAME[0]} for $1 loops **\n\n"
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun	for i in `seq 1 $1`; do
59*4882a593Smuzhiyun		for_each_non_boot_cpu offline_cpu
60*4882a593Smuzhiyun		for_each_non_boot_cpu online_cpu
61*4882a593Smuzhiyun		printf "\n"
62*4882a593Smuzhiyun	done
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun	printf "\n%s\n\n" "------------------------------------------------"
65*4882a593Smuzhiyun}
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun# Prints warning for all CPUs with missing cpufreq directory
68*4882a593Smuzhiyunprint_unmanaged_cpus()
69*4882a593Smuzhiyun{
70*4882a593Smuzhiyun	for_each_cpu cpu_should_have_cpufreq_directory
71*4882a593Smuzhiyun}
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun# Counts CPUs with cpufreq directories
74*4882a593Smuzhiyuncount_cpufreq_managed_cpus()
75*4882a593Smuzhiyun{
76*4882a593Smuzhiyun	count=0;
77*4882a593Smuzhiyun
78*4882a593Smuzhiyun	for cpu in `ls $CPUROOT | grep "cpu[0-9].*"`; do
79*4882a593Smuzhiyun		if [ -d $CPUROOT/$cpu/cpufreq ]; then
80*4882a593Smuzhiyun			let count=count+1;
81*4882a593Smuzhiyun		fi
82*4882a593Smuzhiyun	done
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun	echo $count;
85*4882a593Smuzhiyun}
86