aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2010-09-16 08:42:25 -0400
committerIngo Molnar <mingo@elte.hu>2010-09-16 10:38:34 -0400
commit31915ab4cbf507aadab40847cf9989da5e88b090 (patch)
tree48f7f64cbfd82ee88cece1384e6eb949ef2cbed0 /kernel/sched.c
parent7740191cd909b75d75685fb08a5d1f54b8a9d28b (diff)
sched: Remove branch hints within context_switch()
With 710390d9 "sched: Optimize branch hint in context_switch()" the branch hint logic within context_switch() got inversed. In fact the hints "if (likely(!mm))" and "if (likely(!prev->mm))" mean that it is likely that the previous and next task are kernel threads. That assumption is certainly counter intuitive, but Tim has shown that at least with his workload this is true. Nevertheless the truth is: it depends on the current workload. So just remove the annotations which also improves readability. Reported-by: Tim Blechmann <tim@klingt.org> Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> LKML-Reference: <20100916124225.GA2209@osiris.boeblingen.de.ibm.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index b40b82e3359..16a1129f51e 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2845,14 +2845,14 @@ context_switch(struct rq *rq, struct task_struct *prev,
2845 */ 2845 */
2846 arch_start_context_switch(prev); 2846 arch_start_context_switch(prev);
2847 2847
2848 if (likely(!mm)) { 2848 if (!mm) {
2849 next->active_mm = oldmm; 2849 next->active_mm = oldmm;
2850 atomic_inc(&oldmm->mm_count); 2850 atomic_inc(&oldmm->mm_count);
2851 enter_lazy_tlb(oldmm, next); 2851 enter_lazy_tlb(oldmm, next);
2852 } else 2852 } else
2853 switch_mm(oldmm, mm, next); 2853 switch_mm(oldmm, mm, next);
2854 2854
2855 if (likely(!prev->mm)) { 2855 if (!prev->mm) {
2856 prev->active_mm = NULL; 2856 prev->active_mm = NULL;
2857 rq->prev_mm = oldmm; 2857 rq->prev_mm = oldmm;
2858 } 2858 }