Skip to contentSkip to conversation

switch frw to use local_soft_irq_pending

PATCH In review Christoph Hellwig 2 participants 2 messages Jan 16, 2005 – Jan 17, 2005

lore
Share & tools
lore
#0 lore raw

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
#1 lore raw
Quoted 5 lines · 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?

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