diff options
| author | Linux Build Service Account <lnxbuild@localhost> | 2016-11-08 11:19:06 -0800 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-11-08 11:19:06 -0800 |
| commit | 5a1e6a8dbf21e76ffb45f480eea21ab04bc2cce6 (patch) | |
| tree | ffcec84af91dd157e4f476d6cdeadae857421ba6 | |
| parent | b820fbcdd22b0442460fc822a22ae4c2cf6509fe (diff) | |
| parent | 34a3cdf14eea4432681380cb3dc4d1a741945ffe (diff) | |
Merge "sched/core: Keep rq online after cpu isolation"
| -rw-r--r-- | kernel/sched/core.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index f41a7db5ba7a..a1bb5d4a003c 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -5573,15 +5573,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); /* @@ -5741,10 +5747,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); } |
