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

Commit 9aa1df0c authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "sched: Ensure proper synch between isolation, hotplug, and suspend"

parents b4598042 704e5bfc
Loading
Loading
Loading
Loading
+4 −6
Original line number Diff line number Diff line
@@ -5682,7 +5682,7 @@ int sched_isolate_cpu(int cpu)
	if (trace_sched_isolate_enabled())
		start_time = sched_clock();

	lock_device_hotplug();
	cpu_maps_update_begin();

	cpumask_andnot(&avail_cpus, cpu_online_mask, cpu_isolated_mask);

@@ -5731,7 +5731,7 @@ int sched_isolate_cpu(int cpu)
	sched_update_group_capacities(cpu);

out:
	unlock_device_hotplug();
	cpu_maps_update_done();
	trace_sched_isolate(cpu, cpumask_bits(cpu_isolated_mask)[0],
			    start_time, 1);
	return ret_code;
@@ -5752,8 +5752,6 @@ int sched_unisolate_cpu_unlocked(int cpu)
	if (trace_sched_isolate_enabled())
		start_time = sched_clock();

	lock_device_hotplug_assert();

	if (!cpu_isolation_vote[cpu]) {
		ret_code = -EINVAL;
		goto out;
@@ -5792,9 +5790,9 @@ int sched_unisolate_cpu(int cpu)
{
	int ret_code;

	lock_device_hotplug();
	cpu_maps_update_begin();
	ret_code = sched_unisolate_cpu_unlocked(cpu);
	unlock_device_hotplug();
	cpu_maps_update_done();
	return ret_code;
}

+3 −7
Original line number Diff line number Diff line
@@ -893,14 +893,10 @@ static int __ref cpu_callback(struct notifier_block *nfb,
	unsigned int need;
	int ret = NOTIFY_OK;

	/* Don't affect suspend resume */
	if (action & CPU_TASKS_FROZEN)
		return NOTIFY_OK;

	if (unlikely(!cluster || !cluster->inited))
		return NOTIFY_OK;

	switch (action) {
	switch (action & ~CPU_TASKS_FROZEN) {
	case CPU_UP_PREPARE:

		/* If online state of CPU somehow got out of sync, fix it. */
@@ -1095,7 +1091,7 @@ static int __init core_ctl_init(void)
	cpufreq_register_notifier(&cpufreq_pol_nb, CPUFREQ_POLICY_NOTIFIER);
	cpufreq_register_notifier(&cpufreq_gov_nb, CPUFREQ_GOVINFO_NOTIFIER);

	lock_device_hotplug();
	cpu_maps_update_begin();
	for_each_online_cpu(cpu) {
		struct cpufreq_policy *policy;
		int ret;
@@ -1109,7 +1105,7 @@ static int __init core_ctl_init(void)
			cpufreq_cpu_put(policy);
		}
	}
	unlock_device_hotplug();
	cpu_maps_update_done();
	initialized = true;
	return 0;
}