Thomas Gleixner 9501b6cf55 [PATCH] dynticks: fix hrtimer rounding error in next_timer_interrupt
The rework of next_timer_interrupt() fixed the timer wheel bugs, but
invented a rounding error versus the next hrtimer event. This is caused
by the conversion of the hrtimer internal representation to relative
jiffies.

This causes bug #8100:
http://bugzilla.kernel.org/show_bug.cgi?id=8100

next_timer_interrupt() returns "now" in such a case and causes the code
in tick_nohz_stop_sched_tick() to trigger the timer softirq, which is
bogus as no timer is due for expiry. This results in an endless context
switching between idle and ksoftirqd until a timer is due for expiry.

Modify the hrtimer evaluation so that, it returns now + 1, when the
conversion results in a delta < 1 jiffie.

It's confirmed to resolve bug #8100

Reported-by: Emil Karlson <jkarlson@cc.hut.fi>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-03-25 14:57:34 -07:00
..
2007-02-17 21:30:12 -05:00
2006-09-11 13:32:30 -04:00
2007-02-11 10:51:32 -08:00
2006-12-07 08:39:25 -08:00
2007-03-16 19:25:06 -07:00
2006-12-07 08:39:36 -08:00
2006-12-04 02:00:22 -05:00
2007-03-09 15:25:04 -08:00
2007-02-17 20:10:16 +01:00
2006-09-29 09:18:12 -07:00
2007-03-05 07:57:51 -08:00
2006-04-19 16:27:18 -07:00
2006-12-07 08:39:25 -08:00
2006-07-10 13:24:25 -07:00