|
@@ -2354,17 +2354,6 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state,
|
|
|
if (rq != orig_rq)
|
|
|
update_rq_clock(rq);
|
|
|
|
|
|
- if (rq->idle_stamp) {
|
|
|
- u64 delta = rq->clock - rq->idle_stamp;
|
|
|
- u64 max = 2*sysctl_sched_migration_cost;
|
|
|
-
|
|
|
- if (delta > max)
|
|
|
- rq->avg_idle = max;
|
|
|
- else
|
|
|
- update_avg(&rq->avg_idle, delta);
|
|
|
- rq->idle_stamp = 0;
|
|
|
- }
|
|
|
-
|
|
|
WARN_ON(p->state != TASK_WAKING);
|
|
|
cpu = task_cpu(p);
|
|
|
|
|
@@ -2421,6 +2410,17 @@ out_running:
|
|
|
#ifdef CONFIG_SMP
|
|
|
if (p->sched_class->task_wake_up)
|
|
|
p->sched_class->task_wake_up(rq, p);
|
|
|
+
|
|
|
+ if (unlikely(rq->idle_stamp)) {
|
|
|
+ u64 delta = rq->clock - rq->idle_stamp;
|
|
|
+ u64 max = 2*sysctl_sched_migration_cost;
|
|
|
+
|
|
|
+ if (delta > max)
|
|
|
+ rq->avg_idle = max;
|
|
|
+ else
|
|
|
+ update_avg(&rq->avg_idle, delta);
|
|
|
+ rq->idle_stamp = 0;
|
|
|
+ }
|
|
|
#endif
|
|
|
out:
|
|
|
task_rq_unlock(rq, &flags);
|
|
@@ -4098,7 +4098,7 @@ static int load_balance(int this_cpu, struct rq *this_rq,
|
|
|
unsigned long flags;
|
|
|
struct cpumask *cpus = __get_cpu_var(load_balance_tmpmask);
|
|
|
|
|
|
- cpumask_setall(cpus);
|
|
|
+ cpumask_copy(cpus, cpu_online_mask);
|
|
|
|
|
|
/*
|
|
|
* When power savings policy is enabled for the parent domain, idle
|
|
@@ -4261,7 +4261,7 @@ load_balance_newidle(int this_cpu, struct rq *this_rq, struct sched_domain *sd)
|
|
|
int all_pinned = 0;
|
|
|
struct cpumask *cpus = __get_cpu_var(load_balance_tmpmask);
|
|
|
|
|
|
- cpumask_setall(cpus);
|
|
|
+ cpumask_copy(cpus, cpu_online_mask);
|
|
|
|
|
|
/*
|
|
|
* When power savings policy is enabled for the parent domain, idle
|
|
@@ -9522,6 +9522,8 @@ void __init sched_init(void)
|
|
|
rq->cpu = i;
|
|
|
rq->online = 0;
|
|
|
rq->migration_thread = NULL;
|
|
|
+ rq->idle_stamp = 0;
|
|
|
+ rq->avg_idle = 2*sysctl_sched_migration_cost;
|
|
|
INIT_LIST_HEAD(&rq->migration_queue);
|
|
|
rq_attach_root(rq, &def_root_domain);
|
|
|
#endif
|