lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <1292287821.5015.1784.camel@gandalf.stny.rr.com>
Date:	Mon, 13 Dec 2010 19:50:21 -0500
From:	Steven Rostedt <rostedt@...dmis.org>
To:	LKML <linux-kernel@...r.kernel.org>
Cc:	Ingo Molnar <mingo@...e.hu>, Thomas Gleixner <tglx@...utronix.de>,
	Andrew Morton <akpm@...ux-foundation.org>
Subject: [PATCH][GIT PULL] x86: Remove unlikey()'s from sched_switch
 segment tests


Ingo or Thomas,

Please pull the latest unlikely/x86 tree, which can be found at:

  git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace.git
unlikely/x86


Steven Rostedt (1):
      x86: Remove unlikey()'s from sched_switch segment tests

----
 arch/x86/kernel/process_64.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
---------------------------
commit 6ddd9593268de1cc4438e5f2e680887af292f350
Author: Steven Rostedt <srostedt@...hat.com>
Date:   Mon Dec 6 16:04:10 2010 -0500

    x86: Remove unlikey()'s from sched_switch segment tests
    
    On a 64bit distro, the chances of having a process using segment registers
    is very unlikely. But if the userspace is 32bit running on top of
    a 64bit kernel (very common), then this will be very likely that
    processes have segment registers in use.
    
    Running on my main desktop (which is a 32bit userspace on top of
    a 64bit kernel) the annotated branch profiler showed the following:
    
     correct incorrect  %        Function             File              Line
     ------- ---------  -        --------             ----              ----
    25522442 304125815  92 __switch_to               process_64.c         408
    25522430 304123341  92 __switch_to               process_64.c         412
    25743877 303891250  92 __switch_to               process_64.c         464
    
    Instead of punishing 32bit userspace systems with an unlikely, just remove
    the unlikely and let gcc optimize for what it thinks is good and let
    the branch prediction (hopefully) work.
    
    Cc: Thomas Gleixner <tglx@...utronix.de>
    Signed-off-by: Steven Rostedt <rostedt@...dmis.org>

diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index b3d7a3a..22de90c 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -405,11 +405,11 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
 	 * This won't pick up thread selector changes, but I guess that is ok.
 	 */
 	savesegment(es, prev->es);
-	if (unlikely(next->es | prev->es))
+	if (next->es | prev->es)
 		loadsegment(es, next->es);
 
 	savesegment(ds, prev->ds);
-	if (unlikely(next->ds | prev->ds))
+	if (next->ds | prev->ds)
 		loadsegment(ds, next->ds);
 
 
@@ -461,7 +461,7 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
 		wrmsrl(MSR_FS_BASE, next->fs);
 	prev->fsindex = fsindex;
 
-	if (unlikely(gsindex | next->gsindex | prev->gs)) {
+	if (gsindex | next->gsindex | prev->gs) {
 		load_gs_index(next->gsindex);
 		if (gsindex)
 			prev->gs = 0;


--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ