I have been experimenting with Ingo's smptimers and I ended up extending it a little bit. I would really appreciate comments on whether these things make sense or not. The major changes are - 1. I removed TIMER_BH. The vector is defined but not used. 2. Not having the TIMER_BH requires additional work for serializing old protocol code (deliver_to_old_ones()) to work with new timers. The protocol code is already serialized using net_bh_lock. So, I used it to serialize old protocol code with new timers. 3. Ingo's run_local_timers() had to do all sorts of locking to keep legacy serialization happy. I just added net_bh_lock to that list. This makes sure that timers don't run with old protocol code. 4. When legacy locking fails in run_local_timers(), I use a per-cpu tasklet to run the timers for that cpu. This tasklet also uses the same locking scheme to support legacy stuff. 5. I expanded it to all smp architectures that I could see, but no testing has been done yet for non-i386. As and when I can boot 2.5 kernels on ia64 and ppc, I will test it. I am reasonably sure I didn't get mips right, if not others. The patch has been tested with *2.5.14* (applies cleanly) and ltp in a 4CPU i386. Unfortunately, the legacy code still requires us to do serialize timers with global locks. Thanks -- Dipankar Sarma http://lse.sourceforge.net Linux Technology Center, IBM Software Lab, Bangalore, India.