diff options
| author | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-06-08 14:40:08 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-06-08 14:40:08 -0400 |
| commit | 76962be8491b18ae7ff4fd6a4accd398bdb402a2 (patch) | |
| tree | 976958bf8e4989a69901bfbb25dd6463728c6cb5 /kernel/timer.c | |
| parent | 5e27fb78df95e027723af2c90ecc9b4527ae59e9 (diff) | |
| parent | d30e5d897c3da7c2d17c8112331b66ed953eec78 (diff) | |
Merge branch 'fix' of git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6
Diffstat (limited to 'kernel/timer.c')
| -rw-r--r-- | kernel/timer.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/kernel/timer.c b/kernel/timer.c index be394af5bc22..2454172a80d3 100644 --- a/kernel/timer.c +++ b/kernel/timer.c | |||
| @@ -752,11 +752,15 @@ unsigned long apply_slack(struct timer_list *timer, unsigned long expires) | |||
| 752 | 752 | ||
| 753 | expires_limit = expires; | 753 | expires_limit = expires; |
| 754 | 754 | ||
| 755 | if (timer->slack > -1) | 755 | if (timer->slack >= 0) { |
| 756 | expires_limit = expires + timer->slack; | 756 | expires_limit = expires + timer->slack; |
| 757 | else if (time_after(expires, jiffies)) /* auto slack: use 0.4% */ | 757 | } else { |
| 758 | expires_limit = expires + (expires - jiffies)/256; | 758 | unsigned long now = jiffies; |
| 759 | 759 | ||
| 760 | /* No slack, if already expired else auto slack 0.4% */ | ||
| 761 | if (time_after(expires, now)) | ||
| 762 | expires_limit = expires + (expires - now)/256; | ||
| 763 | } | ||
| 760 | mask = expires ^ expires_limit; | 764 | mask = expires ^ expires_limit; |
| 761 | if (mask == 0) | 765 | if (mask == 0) |
| 762 | return expires; | 766 | return expires; |
| @@ -1680,11 +1684,14 @@ static int __cpuinit timer_cpu_notify(struct notifier_block *self, | |||
| 1680 | unsigned long action, void *hcpu) | 1684 | unsigned long action, void *hcpu) |
| 1681 | { | 1685 | { |
| 1682 | long cpu = (long)hcpu; | 1686 | long cpu = (long)hcpu; |
| 1687 | int err; | ||
| 1688 | |||
| 1683 | switch(action) { | 1689 | switch(action) { |
| 1684 | case CPU_UP_PREPARE: | 1690 | case CPU_UP_PREPARE: |
| 1685 | case CPU_UP_PREPARE_FROZEN: | 1691 | case CPU_UP_PREPARE_FROZEN: |
| 1686 | if (init_timers_cpu(cpu) < 0) | 1692 | err = init_timers_cpu(cpu); |
| 1687 | return NOTIFY_BAD; | 1693 | if (err < 0) |
| 1694 | return notifier_from_errno(err); | ||
| 1688 | break; | 1695 | break; |
| 1689 | #ifdef CONFIG_HOTPLUG_CPU | 1696 | #ifdef CONFIG_HOTPLUG_CPU |
| 1690 | case CPU_DEAD: | 1697 | case CPU_DEAD: |
