diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2009-07-09 13:52:32 +0200 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2009-07-10 17:22:20 +0200 |
commit | 7e0c5086c172ecf8b0c2ad860b02a586967d17d0 (patch) | |
tree | 207e1975ea970279e5ad912a094361e2fa169d93 /kernel/time/clockevents.c | |
parent | timer stats: Optimize by adding quick check to avoid function calls (diff) | |
download | linux-7e0c5086c172ecf8b0c2ad860b02a586967d17d0.tar.xz linux-7e0c5086c172ecf8b0c2ad860b02a586967d17d0.zip |
hrtimer: migration: do not check expiry time on current CPU
The timer migration code needs to check whether the expiry time of the
timer is before the programmed clock event expiry time when the timer
is enqueued on another CPU because we can not reprogram the timer
device on the other CPU. The current logic checks the expiry time even
if we enqueue on the current CPU when nohz_get_load_balancer() returns
current CPU. This might lead to an endless loop in the expiry check
code when the expiry time of the timer is before the current
programmed next event.
Check whether nohz_get_load_balancer() returns current CPU and skip
the expiry check if this is the case.
The bug was triggered from the networking code. The patch fixes the
regression http://bugzilla.kernel.org/show_bug.cgi?id=13738
(Soft-Lockup/Race in networking in 2.6.31-rc1+195)
Cc: Arun Bharadwaj <arun@linux.vnet.ibm.com
Tested-by: Joao Correia <joaomiguelcorreia@gmail.com>
Tested-by: Andres Freund <andres@anarazel.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/clockevents.c')
0 files changed, 0 insertions, 0 deletions