diff options
author | Paul Mackerras <paulus@samba.org> | 2006-06-01 19:05:23 +1000 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-06-01 19:05:23 +1000 |
commit | c029cc66cb3d83f70c02e0c182f0eed1419f8020 (patch) | |
tree | b9ed887a0e6434fedebcbf90b3d2ba1aeff68a01 /kernel/timer.c | |
parent | 0a9cb46a73abd6c45e7c986bec984eed60c417b6 (diff) | |
parent | ba8f5baba79da8eb502f8534c3a8ecb64aceb790 (diff) | |
download | kernel-crypto-c029cc66cb3d83f70c02e0c182f0eed1419f8020.tar.gz kernel-crypto-c029cc66cb3d83f70c02e0c182f0eed1419f8020.tar.xz kernel-crypto-c029cc66cb3d83f70c02e0c182f0eed1419f8020.zip |
Merge branch 'merge'
Diffstat (limited to 'kernel/timer.c')
-rw-r--r-- | kernel/timer.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index 67eaf0f5409..9e49deed468 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -541,6 +541,22 @@ found: } spin_unlock(&base->lock); + /* + * It can happen that other CPUs service timer IRQs and increment + * jiffies, but we have not yet got a local timer tick to process + * the timer wheels. In that case, the expiry time can be before + * jiffies, but since the high-resolution timer here is relative to + * jiffies, the default expression when high-resolution timers are + * not active, + * + * time_before(MAX_JIFFY_OFFSET + jiffies, expires) + * + * would falsely evaluate to true. If that is the case, just + * return jiffies so that we can immediately fire the local timer + */ + if (time_before(expires, jiffies)) + return jiffies; + if (time_before(hr_expires, expires)) return hr_expires; |