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