|
@@ -7289,6 +7289,7 @@ static void migrate_dead_tasks(unsigned int dead_cpu)
|
|
static void calc_global_load_remove(struct rq *rq)
|
|
static void calc_global_load_remove(struct rq *rq)
|
|
{
|
|
{
|
|
atomic_long_sub(rq->calc_load_active, &calc_load_tasks);
|
|
atomic_long_sub(rq->calc_load_active, &calc_load_tasks);
|
|
|
|
+ rq->calc_load_active = 0;
|
|
}
|
|
}
|
|
#endif /* CONFIG_HOTPLUG_CPU */
|
|
#endif /* CONFIG_HOTPLUG_CPU */
|
|
|
|
|
|
@@ -7515,6 +7516,7 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
|
|
task_rq_unlock(rq, &flags);
|
|
task_rq_unlock(rq, &flags);
|
|
get_task_struct(p);
|
|
get_task_struct(p);
|
|
cpu_rq(cpu)->migration_thread = p;
|
|
cpu_rq(cpu)->migration_thread = p;
|
|
|
|
+ rq->calc_load_update = calc_load_update;
|
|
break;
|
|
break;
|
|
|
|
|
|
case CPU_ONLINE:
|
|
case CPU_ONLINE:
|
|
@@ -7525,8 +7527,6 @@ migration_call(struct notifier_block *nfb, unsigned long action, void *hcpu)
|
|
/* Update our root-domain */
|
|
/* Update our root-domain */
|
|
rq = cpu_rq(cpu);
|
|
rq = cpu_rq(cpu);
|
|
spin_lock_irqsave(&rq->lock, flags);
|
|
spin_lock_irqsave(&rq->lock, flags);
|
|
- rq->calc_load_update = calc_load_update;
|
|
|
|
- rq->calc_load_active = 0;
|
|
|
|
if (rq->rd) {
|
|
if (rq->rd) {
|
|
BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
|
|
BUG_ON(!cpumask_test_cpu(cpu, rq->rd->span));
|
|
|
|
|