Subject: hrtimer-fix-reprogram-madness.patch From: Thomas Gleixner Date: Wed, 14 Sep 2011 14:48:43 +0200 Signed-off-by: Thomas Gleixner --- kernel/hrtimer.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) Index: linux-stable/kernel/hrtimer.c =================================================================== --- linux-stable.orig/kernel/hrtimer.c +++ linux-stable/kernel/hrtimer.c @@ -1338,7 +1338,11 @@ static void hrtimer_rt_reprogram(int res if (!enqueue_hrtimer(timer, base)) return; - if (hrtimer_reprogram(timer, base)) +#ifndef CONFIG_HIGH_RES_TIMERS + } +#else + if (base->cpu_base->hres_active && + hrtimer_reprogram(timer, base)) goto requeue; } else if (hrtimer_active(timer)) { @@ -1347,6 +1351,7 @@ static void hrtimer_rt_reprogram(int res * the event device. */ if (&timer->node == base->active.next && + base->cpu_base->hres_active && hrtimer_reprogram(timer, base)) goto requeue; } @@ -1359,6 +1364,7 @@ requeue: */ __remove_hrtimer(timer, base, timer->state, 0); list_add_tail(&timer->cb_entry, &base->expired); +#endif } /*