[PATCH] highres: do not run the TIMER_SOFTIRQ after switching to highres mode
authorThomas Gleixner <tglx@linutronix.de>
Tue, 6 Mar 2007 09:42:08 +0000 (01:42 -0800)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 6 Mar 2007 17:30:25 +0000 (09:30 -0800)
commitf8953856eb8dd62232aee6cacb46993dc2ac4869
treeef8b7fd1b215b273b1cf5aca5dd3d7c02a497490
parentd1d67174b42a02c7d106894df0ed155d595871f7
[PATCH] highres: do not run the TIMER_SOFTIRQ after switching to highres mode

The TIMER_SOFTIRQ runs the hrtimers during bootup until a usable
clocksource and clock event sources are registered.  The switch to high
resolution mode happens inside of the TIMER_SOFTIRQ, but runs the softirq
afterwards.  That way the tick emulation timer, which was set up in the
switch to highres might be executed in the softirq context, which is a BUG.
 The rbtree has not to be touched by the softirq after the highres switch.

This BUG was observed by Andres Salomon, who provided the information to
debug it.

Return early from the softirq, when the switch was sucessful.

[dilinger@debian.org: add debug warning]
[akpm@linux-foundation.org: make debug warning compile]
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Andres Salomon <dilinger@debian.org>
Acked-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andres Salomon <dilinger@debian.org>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/hrtimer.c