Oops... softirq not run until the next interrupt. So, EITHER:
1) make local_irq_restore check for pending softirqs in as we do for
local_bh_enable(), and get rid of the wakeup_softirqd() in
cpu_raise_softirq(). ie. all "exits" from in_interrupt == true are
symmetrical.
*OR*
2) Change the check in cpu_raise_softirq to:
if (!in_hw_irq_handler(cpu))
wakeup_softirqd(cpu);
and implement in_hw_irq_handler() on all platforms. Then get rid of
the test in local_bh_enable().
Please pick one approach or the other, and stick with it! The current
code does half of each, badly. 8(
Thanks,
Rusty.
-- Premature optmztion is rt of all evl. --DK - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/