diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2008-10-21 20:17:35 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-10-21 20:53:24 +0200 |
commit | c4bd822e7b12a9008241d76db45b665f2fef180c (patch) | |
tree | bd4b7b4e2e7db065c971eb264196f02e0b01ecff /kernel/posix-timers.c | |
parent | binfmt_elf_fdpic: Update for cputime changes. (diff) | |
download | linux-c4bd822e7b12a9008241d76db45b665f2fef180c.tar.xz linux-c4bd822e7b12a9008241d76db45b665f2fef180c.zip |
NOHZ: fix thinko in the timer restart code path
commit fb02fbc14d17837b4b7b02dbb36142c16a7bf208 (NOHZ: restart tick
device from irq_enter())
solves the problem of stale jiffies when long running softirqs happen
in a long idle sleep period, but it has a major thinko in it:
When the interrupt which came in _is_ the timer interrupt which should
expire ts->sched_timer then we cancel and rearm the timer _before_ it
gets expired in hrtimer_interrupt() to the next period. That means the
call back function is not called. This game can go on for ever :(
Prevent this by making sure to only rearm the timer when the expiry
time is more than one tick_period away. Otherwise keep it running as
it is either already expired or will expiry at the right point to
update jiffies.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Venkatesch Pallipadi <venkatesh.pallipadi@intel.com>
Diffstat (limited to 'kernel/posix-timers.c')
0 files changed, 0 insertions, 0 deletions