diff options
| author | 2006-05-24 01:32:42 -0400 | |
|---|---|---|
| committer | 2006-05-24 01:32:42 -0400 | |
| commit | 26e27cd424554202d36f38ee35421143788da127 (patch) | |
| tree | 04d068c76af5b636c061173465faa574d4b5e7b0 /kernel/timer.c | |
| parent | [PATCH] Add PCI ID for the Intel IDE Controller which is in the Intel Mac Minis shipped in first quarter 2006 (diff) | |
| parent | [BRIDGE]: need to ref count the LLC sap (diff) | |
Merge branch 'master' into upstream
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 67eaf0f54096..9e49deed468c 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; |
