From 5bc36fe546e60cd44bc09b022ec834983ae056d0 Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Wed, 28 Jan 2009 14:51:38 +0100 Subject: [PATCH] --- yaml --- r: 130779 b: refs/heads/master c: 1596e29773eadd96b0a5fc6e736afa52394cafda h: refs/heads/master i: 130777: 41e24d0d0d1c8dbfbfcdc4e4d40f21d7a93aa073 130775: 73861f241210062b2cf39729c2e30eddab37922e v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 5687a6cd2ae6..aeb6cd1d2255 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: d942fb6c7d391baba3dddb566eb735fbf3df8528 +refs/heads/master: 1596e29773eadd96b0a5fc6e736afa52394cafda diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 770b1f9ebe14..242d0d47a70d 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -2266,9 +2266,15 @@ static int try_to_wake_up(struct task_struct *p, unsigned int state, int sync) if (!sched_feat(SYNC_WAKEUPS)) sync = 0; - if (!sync && (current->se.avg_overlap < sysctl_sched_migration_cost && - p->se.avg_overlap < sysctl_sched_migration_cost)) - sync = 1; + 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)) {