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

Commit dd658e02 authored by Kapileshwar Singh's avatar Kapileshwar Singh Committed by Eduardo Valentin
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>
parent 54b92aae
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -559,7 +559,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);