Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 097e9cb2 authored by Kapileshwar Singh's avatar Kapileshwar Singh Committed by Kevin Hilman
Browse files

thermal: cpu_cooling: Fix power calculation when CPUs are offline



Ensure that the CPU for which the frequency is being requested
is online. If none of the CPUs are online the requested power is
returned as 0.

Acked-by: default avatarJavi Merino <javi.merino@arm.com>
Signed-off-by: default avatarKapileshwar Singh <kapileshwar.singh@arm.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
(cherry picked from commit dd658e02357ec879edd0c62ee1f3a19c92b0b027)
Signed-off-by: default avatarKevin Hilman <khilman@linaro.org>
parent aa4ad8bb
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -555,7 +555,18 @@ static int cpufreq_get_requested_power(struct thermal_cooling_device *cdev,
	struct cpufreq_cooling_device *cpufreq_device = cdev->devdata;
	u32 *load_cpu = NULL;

	freq = cpufreq_quick_get(cpumask_any(&cpufreq_device->allowed_cpus));
	cpu = cpumask_any_and(&cpufreq_device->allowed_cpus, cpu_online_mask);

	/*
	 * All the CPUs are offline, thus the requested power by
	 * the cdev is 0
	 */
	if (cpu >= nr_cpu_ids) {
		*power = 0;
		return 0;
	}

	freq = cpufreq_quick_get(cpu);

	if (trace_thermal_power_cpu_get_power_enabled()) {
		u32 ncpus = cpumask_weight(&cpufreq_device->allowed_cpus);