From: Christoph Hellwig The newly merged frv do_IRQ code calls softirq_pending(), but always with the current cpu as argument - switch to local_softirq_pending(). Btw, this usage look bogus to me, any reason you need to call do_softirq again after you did four lines above in irq_exit(), David? Signed-off-by: Andrew Morton --- 25-akpm/arch/frv/kernel/irq.c | 2 +- 1 files changed, 1 insertion(+), 1 deletion(-) diff -puN arch/frv/kernel/irq.c~switch-frw-to-use-local_soft_irq_pending arch/frv/kernel/irq.c --- 25/arch/frv/kernel/irq.c~switch-frw-to-use-local_soft_irq_pending 2005-01-16 14:39:56.488156176 -0800 +++ 25-akpm/arch/frv/kernel/irq.c 2005-01-16 14:39:56.492155568 -0800 @@ -312,7 +312,7 @@ asmlinkage void do_IRQ(void) /* only process softirqs if we didn't interrupt another interrupt handler */ if ((__frame->psr & PSR_PIL) == PSR_PIL_0) - if (softirq_pending(cpu)) + if (local_softirq_pending()) do_softirq(); #ifdef CONFIG_PREEMPT _