diff options
author | Ingo Molnar <mingo@elte.hu> | 2009-02-13 09:34:07 +0100 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-13 09:34:07 +0100 |
commit | e9c4ffb11f0b19005b5b9dc8481687a3637e5887 (patch) | |
tree | 7007f2ff846b9b057c5cd7c25e8b82e49f9b4b63 /kernel/sched.c | |
parent | 4bcf349a0f90d1e69eb35c6df0fa285c886c1cd6 (diff) | |
parent | 071a0bc2ceace31266836801510879407a3701fa (diff) | |
download | kernel_samsung_crespo-e9c4ffb11f0b19005b5b9dc8481687a3637e5887.zip kernel_samsung_crespo-e9c4ffb11f0b19005b5b9dc8481687a3637e5887.tar.gz kernel_samsung_crespo-e9c4ffb11f0b19005b5b9dc8481687a3637e5887.tar.bz2 |
Merge branch 'linus' into perfcounters/core
Conflicts:
arch/x86/kernel/acpi/boot.c
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 0952931..83b68ff 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -2311,16 +2311,6 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state, int sync) if (!sched_feat(SYNC_WAKEUPS)) sync = 0; - if (!sync) { - if (current->se.avg_overlap < sysctl_sched_migration_cost && - p->se.avg_overlap < sysctl_sched_migration_cost) - sync = 1; - } else { - if (current->se.avg_overlap >= sysctl_sched_migration_cost || - p->se.avg_overlap >= sysctl_sched_migration_cost) - sync = 0; - } - #ifdef CONFIG_SMP if (sched_feat(LB_WAKEUP_UPDATE)) { struct sched_domain *sd; @@ -3952,19 +3942,24 @@ int select_nohz_load_balancer(int stop_tick) int cpu = smp_processor_id(); if (stop_tick) { - cpumask_set_cpu(cpu, nohz.cpu_mask); cpu_rq(cpu)->in_nohz_recently = 1; - /* - * If we are going offline and still the leader, give up! - */ - if (!cpu_active(cpu) && - atomic_read(&nohz.load_balancer) == cpu) { + if (!cpu_active(cpu)) { + if (atomic_read(&nohz.load_balancer) != cpu) + return 0; + + /* + * If we are going offline and still the leader, + * give up! + */ if (atomic_cmpxchg(&nohz.load_balancer, cpu, -1) != cpu) BUG(); + return 0; } + cpumask_set_cpu(cpu, nohz.cpu_mask); + /* time for ilb owner also to sleep */ if (cpumask_weight(nohz.cpu_mask) == num_online_cpus()) { if (atomic_read(&nohz.load_balancer) == cpu) |