hrtimer: removing all ur callback modes
authorPeter Zijlstra <peterz@infradead.org>
Tue, 25 Nov 2008 11:43:51 +0000 (12:43 +0100)
committerIngo Molnar <mingo@elte.hu>
Tue, 25 Nov 2008 14:45:46 +0000 (15:45 +0100)
commitca109491f612aab5c8152207631c0444f63da97f
tree46d0a90e79c75fc039bda7d01862062e0ac39900
parented313489badef16d700f5a3be50e8fd8f8294bc8
hrtimer: removing all ur callback modes

Impact: cleanup, move all hrtimer processing into hardirq context

This is an attempt at removing some of the hrtimer complexity by
reducing the number of callback modes to 1.

This means that all hrtimer callback functions will be ran from HARD-irq
context.

I went through all the 30 odd hrtimer callback functions in the kernel
and saw only one that I'm not quite sure of, which is the one in
net/can/bcm.c - hence I'm CC-ing the folks responsible for that code.

Furthermore, the hrtimer core now calls callbacks directly with IRQs
disabled in case you try to enqueue an expired timer. If this timer is a
periodic timer (which should use hrtimer_forward() to advance its time)
then it might be possible to end up in an inf. recursive loop due to the
fact that hrtimer_forward() doesn't round up to the next timer
granularity, and therefore keeps on calling the callback - obviously
this needs a fix.

Aside from that, this seems to compile and actually boot on my dual core
test box - although I'm sure there are some bugs in, me not hitting any
makes me certain :-)

Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
drivers/input/touchscreen/ads7846.c
include/linux/hrtimer.h
include/linux/interrupt.h
kernel/hrtimer.c
kernel/sched.c
kernel/time/ntp.c
kernel/time/tick-sched.c
kernel/trace/trace_sysprof.c
sound/drivers/pcsp/pcsp.c