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

Commit 969bb4e4 authored by Suresh Siddha's avatar Suresh Siddha Committed by Ingo Molnar
Browse files

[PATCH] sched: fix the all pinned logic in load_balance_newidle()



nr_moved is not the correct check for triggering all pinned logic. Fix
the all pinned logic in the case of load_balance_newidle().

Signed-off-by: default avatarSuresh Siddha <suresh.b.siddha@intel.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent 9439aab8
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -2679,6 +2679,7 @@ load_balance_newidle(int this_cpu, struct rq *this_rq, struct sched_domain *sd)
	unsigned long imbalance;
	int nr_moved = 0;
	int sd_idle = 0;
	int all_pinned = 0;
	cpumask_t cpus = CPU_MASK_ALL;

	/*
@@ -2717,10 +2718,11 @@ load_balance_newidle(int this_cpu, struct rq *this_rq, struct sched_domain *sd)
		double_lock_balance(this_rq, busiest);
		nr_moved = move_tasks(this_rq, this_cpu, busiest,
					minus_1_or_zero(busiest->nr_running),
					imbalance, sd, CPU_NEWLY_IDLE, NULL);
					imbalance, sd, CPU_NEWLY_IDLE,
					&all_pinned);
		spin_unlock(&busiest->lock);

		if (!nr_moved) {
		if (unlikely(all_pinned)) {
			cpu_clear(cpu_of(busiest), cpus);
			if (!cpus_empty(cpus))
				goto redo;