From: Daniel Walker If you get to that point in the code it means that desc->move_irq is set, pending_irq_cpumask[irq] and cpu_online_map should have a value. Still pretty good chance anding those two you'll still have a value. So these two branch predictors should be inverted. Signed-off-by: Daniel Walker Signed-off-by: Andrew Morton --- kernel/irq/migration.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN kernel/irq/migration.c~invert-irq-migrationc-brach-prediction kernel/irq/migration.c --- devel/kernel/irq/migration.c~invert-irq-migrationc-brach-prediction 2006-04-20 23:31:58.000000000 -0700 +++ devel-akpm/kernel/irq/migration.c 2006-04-20 23:31:58.000000000 -0700 @@ -30,7 +30,7 @@ void move_native_irq(int irq) desc->move_irq = 0; - if (likely(cpus_empty(pending_irq_cpumask[irq]))) + if (unlikely(cpus_empty(pending_irq_cpumask[irq]))) return; if (!desc->handler->set_affinity) @@ -49,7 +49,7 @@ void move_native_irq(int irq) * cause some ioapics to mal-function. * Being paranoid i guess! */ - if (unlikely(!cpus_empty(tmp))) { + if (likely(!cpus_empty(tmp))) { if (likely(!(desc->status & IRQ_DISABLED))) desc->handler->disable(irq); _