> CPU0 CPU1
> ------------- -------------------
> hardirq_endlock()
> do_IRQ
> timer_interrupt()
> mark_bh(TIMER_BH)
> do_bottom_half
> global_bh_count still 1 (other CPU)
> so skip bh processing.
> iret (return to userspace)
> softirq_endlock (too late!)
this is impossible if we do hardirq_endlock()+softirq_endlock() with local
IRQs disabled [like my second quick-patch did] ... No need to add
additional expensive spinlocks, bottom-half performance sucks anyway.
-- mingo
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/