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

Commit 54b92aae authored by Kapileshwar Singh's avatar Kapileshwar Singh Committed by Eduardo Valentin
Browse files

thermal: cpu_cooling: Remove cpu_dev update on policy CPU update



It was initially understood that an update to the cpu_device
(cached in cpufreq_cooling_device) was required to ascertain the
correct operating point of the device on a cpufreq policy->cpu update
or creation or deletion of a cpufreq policy.
(e.g. when the existing policy CPU goes offline).

This update is not required and it is possible to ascertain the OPPs
from the leading CPU in a cpufreq domain even if the CPU is hotplugged out.

Fixes: e0128d8ab423 ("thermal: cpu_cooling: implement the power cooling device API")
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 9f38271c
Loading
Loading
Loading
Loading
+0 −40
Original line number Diff line number Diff line
@@ -199,39 +199,6 @@ unsigned long cpufreq_cooling_get_level(unsigned int cpu, unsigned int freq)
}
EXPORT_SYMBOL_GPL(cpufreq_cooling_get_level);

static void update_cpu_device(int cpu)
{
	struct cpufreq_cooling_device *cpufreq_dev;

	mutex_lock(&cooling_cpufreq_lock);
	list_for_each_entry(cpufreq_dev, &cpufreq_dev_list, node) {
		if (cpumask_test_cpu(cpu, &cpufreq_dev->allowed_cpus)) {
			cpufreq_dev->cpu_dev = get_cpu_device(cpu);
			if (!cpufreq_dev->cpu_dev) {
				dev_warn(&cpufreq_dev->cool_dev->device,
					"No cpu device for new policy cpu %d\n",
					 cpu);
			}
			break;
		}
	}
	mutex_unlock(&cooling_cpufreq_lock);
}

static void remove_cpu_device(int cpu)
{
	struct cpufreq_cooling_device *cpufreq_dev;

	mutex_lock(&cooling_cpufreq_lock);
	list_for_each_entry(cpufreq_dev, &cpufreq_dev_list, node) {
		if (cpumask_test_cpu(cpu, &cpufreq_dev->allowed_cpus)) {
			cpufreq_dev->cpu_dev = NULL;
			break;
		}
	}
	mutex_unlock(&cooling_cpufreq_lock);
}

/**
 * cpufreq_thermal_notifier - notifier callback for cpufreq policy change.
 * @nb:	struct notifier_block * with callback info.
@@ -268,13 +235,6 @@ static int cpufreq_thermal_notifier(struct notifier_block *nb,
		}
		mutex_unlock(&cooling_cpufreq_lock);
		break;

	case CPUFREQ_CREATE_POLICY:
		update_cpu_device(policy->cpu);
		break;
	case CPUFREQ_REMOVE_POLICY:
		remove_cpu_device(policy->cpu);
		break;
	default:
		return NOTIFY_DONE;
	}