Kernel threads are rare so make them unlikely. Fix inverse logic fail on check_smt_siblings. -ck --- kernel/sched/bfs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-3.15.5-ck1/kernel/sched/bfs.c =================================================================== --- linux-3.15.5-ck1.orig/kernel/sched/bfs.c 2014-08-12 11:26:36.480936005 +1000 +++ linux-3.15.5-ck1/kernel/sched/bfs.c 2014-08-15 22:36:14.873564235 +1000 @@ -836,7 +836,7 @@ static bool smt_should_schedule(struct t int best_bias; /* Kernel threads always run */ - if (!p->mm) + if (unlikely(!p->mm)) return true; if (rt_task(p)) return true; @@ -3302,7 +3302,7 @@ static void check_smt_siblings(int cpu) if (!rq->online) continue; p = rq->curr; - if (smt_should_schedule(p, cpu)) { + if (!smt_should_schedule(p, cpu)) { set_tsk_need_resched(p); __send_other_resched(p, other_cpu); }