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