switch frw to use local_soft_irq_pending
PATCH 2/3 switch frw to use local_soft_irq_pending
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?
arch/frv/kernel/irq.c +1 -1
@@ -312,7 +312,7 @@/* 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
Quoted 5 lines · Christoph Hellwig
The newly merged frv
do_IRQcode callssoftirq_pending(), but always with the current cpu as argument - switch tolocal_softirq_pending().Btw, this usage look bogus to me, any reason you need to call
do_softirqagain after you did four lines above inirq_exit(), David?
Because irq_exit() doesn't call do_softirq() in 2.4 where I developed this arch in the first place. And because 2.6 didn't malfunction due to do_softirq() being called twice, I didn't notice.
Actually... it's probably also bad that it calls irq_exit() first and then __clr_MASK(). That means it runs softirq processing with at least one interrupt level disabled:-/
David