All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: fabio de francesco <fabio@metanix.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: [process scheduler] Possible bug in context_swich()?
Date: Wed, 08 Sep 2010 17:54:18 +0200	[thread overview]
Message-ID: <1283961258.23762.33.camel@laptop> (raw)
In-Reply-To: <201009081728.18227.fabio@metanix.org>

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@klingt.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@klingt.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    LKML-Reference: <4B0BBB9F.6080304@klingt.org>
    Signed-off-by: Ingo Molnar <mingo@elte.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;
 	}


  parent reply	other threads:[~2010-09-08 15:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-08 15:28 [process scheduler] Possible bug in context_swich()? fabio de francesco
2010-09-08 15:48 ` Will Newton
2010-09-08 15:54 ` Peter Zijlstra [this message]
2010-09-09  2:32   ` Mike Galbraith
2010-09-09 10:39     ` Peter Zijlstra
2010-09-09 11:12       ` Tim Blechmann
2010-09-09 11:25         ` Heiko Carstens
2010-09-09 11:25         ` fabio de francesco

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1283961258.23762.33.camel@laptop \
    --to=peterz@infradead.org \
    --cc=fabio@metanix.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.