[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1283961258.23762.33.camel@laptop>
Date: Wed, 08 Sep 2010 17:54:18 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: fabio de francesco <fabio@...anix.org>
Cc: LKML <linux-kernel@...r.kernel.org>
Subject: Re: [process scheduler] Possible bug in context_swich()?
On Wed, 2010-09-08 at 17:28 +0200, fabio de francesco wrote:
> In context_switch() (in linux/kernel/sched.c), starting with release 2.6.33,
> two "unlikely" macro have been changed to "likely". I think the previous
> logic was right while the latter is wrong.
>
> In case I am missing something I, please, ask someone to explain the above
> mentioned inversion of logic through releases.
It helps if you CC people, LKML alone is a bit of a gamble.
git blame kernel/sched.c, will tell you that the change you refer to
comes from:
commit 710390d90f143a9ebb87a475215140f426792efd
Author: Tim Blechmann <tim@...ngt.org>
Date: Tue Nov 24 11:55:27 2009 +0100
sched: Optimize branch hint in context_switch()
Branch hint profiling on my nehalem machine showed over 90%
incorrect branch hints:
10420275 170645395 94 context_switch sched.c
3043
10408421 171098521 94 context_switch sched.c
3050
Signed-off-by: Tim Blechmann <tim@...ngt.org>
Cc: Peter Zijlstra <a.p.zijlstra@...llo.nl>
Cc: Mike Galbraith <efault@....de>
Cc: Paul Mackerras <paulus@...ba.org>
Cc: Arnaldo Carvalho de Melo <acme@...hat.com>
Cc: Frederic Weisbecker <fweisbec@...il.com>
LKML-Reference: <4B0BBB9F.6080304@...ngt.org>
Signed-off-by: Ingo Molnar <mingo@...e.hu>
diff --git a/kernel/sched.c b/kernel/sched.c
index 93474a7..010d5e1 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2829,14 +2829,14 @@ context_switch(struct rq *rq, struct task_struct *prev,
*/
arch_start_context_switch(prev);
- if (unlikely(!mm)) {
+ if (likely(!mm)) {
next->active_mm = oldmm;
atomic_inc(&oldmm->mm_count);
enter_lazy_tlb(oldmm, next);
} else
switch_mm(oldmm, mm, next);
- if (unlikely(!prev->mm)) {
+ if (likely(!prev->mm)) {
prev->active_mm = NULL;
rq->prev_mm = oldmm;
}
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists