sched/core: Keep rq online after cpu isolation
To move tasks off a cpu when offlining the rq needs to be offlined to un-throttle tasks. However, tasks might still run on the CPU even after the CPU has been isolated (per-CPU threads). Thus we should leave the rq in online state after tasks have been moved. Change-Id: I61486e8648af0dbb82595fe699e1bc158e837362 Signed-off-by: Olav Haugan <ohaugan@codeaurora.org>
This commit is contained in:
parent
411a978bce
commit
34a3cdf14e
1 changed files with 7 additions and 5 deletions
|
@ -5581,15 +5581,21 @@ int do_isolation_work_cpu_stop(void *data)
|
|||
|
||||
sched_ttwu_pending();
|
||||
|
||||
/* Update our root-domain */
|
||||
raw_spin_lock(&rq->lock);
|
||||
|
||||
/*
|
||||
* Temporarily mark the rq as offline. This will allow us to
|
||||
* move tasks off the CPU.
|
||||
*/
|
||||
if (rq->rd) {
|
||||
BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
|
||||
set_rq_offline(rq);
|
||||
}
|
||||
|
||||
migrate_tasks(rq, false);
|
||||
|
||||
if (rq->rd)
|
||||
set_rq_online(rq);
|
||||
raw_spin_unlock(&rq->lock);
|
||||
|
||||
/*
|
||||
|
@ -5749,10 +5755,6 @@ int sched_unisolate_cpu_unlocked(int cpu)
|
|||
|
||||
raw_spin_lock_irqsave(&rq->lock, flags);
|
||||
rq->age_stamp = sched_clock_cpu(cpu);
|
||||
if (rq->rd) {
|
||||
BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
|
||||
set_rq_online(rq);
|
||||
}
|
||||
raw_spin_unlock_irqrestore(&rq->lock, flags);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue