diff options
| author | Yang Honggang (Joseph) <eagle.rtlinux@gmail.com> | 2011-12-01 22:22:41 -0500 |
|---|---|---|
| committer | John Stultz <john.stultz@linaro.org> | 2011-12-01 18:50:00 -0500 |
| commit | b1f919664d04a8d0ba29cb76673c7ca3325a2006 (patch) | |
| tree | eeaafc566a9023a794eaefcda8a5201ba7ffa9bc | |
| parent | 6a8943d9ec2567572fca25cf69ad45844d0141a3 (diff) | |
clocksource: Fix bug with max_deferment margin calculation
In order to leave a margin of 12.5% we should >> 3 not >> 5.
CC: stable@kernel.org
Signed-off-by: Yang Honggang (Joseph) <eagle.rtlinux@gmail.com>
[jstultz: Modified commit subject]
Signed-off-by: John Stultz <john.stultz@linaro.org>
| -rw-r--r-- | kernel/time/clocksource.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c index cfc65e1eb9fb..da2f760e780c 100644 --- a/kernel/time/clocksource.c +++ b/kernel/time/clocksource.c | |||
| @@ -548,7 +548,7 @@ static u64 clocksource_max_deferment(struct clocksource *cs) | |||
| 548 | * note a margin of 12.5% is used because this can be computed with | 548 | * note a margin of 12.5% is used because this can be computed with |
| 549 | * a shift, versus say 10% which would require division. | 549 | * a shift, versus say 10% which would require division. |
| 550 | */ | 550 | */ |
| 551 | return max_nsecs - (max_nsecs >> 5); | 551 | return max_nsecs - (max_nsecs >> 3); |
| 552 | } | 552 | } |
| 553 | 553 | ||
| 554 | #ifndef CONFIG_ARCH_USES_GETTIMEOFFSET | 554 | #ifndef CONFIG_ARCH_USES_GETTIMEOFFSET |
| @@ -669,7 +669,7 @@ void __clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq) | |||
| 669 | * ~ 0.06ppm granularity for NTP. We apply the same 12.5% | 669 | * ~ 0.06ppm granularity for NTP. We apply the same 12.5% |
| 670 | * margin as we do in clocksource_max_deferment() | 670 | * margin as we do in clocksource_max_deferment() |
| 671 | */ | 671 | */ |
| 672 | sec = (cs->mask - (cs->mask >> 5)); | 672 | sec = (cs->mask - (cs->mask >> 3)); |
| 673 | do_div(sec, freq); | 673 | do_div(sec, freq); |
| 674 | do_div(sec, scale); | 674 | do_div(sec, scale); |
| 675 | if (!sec) | 675 | if (!sec) |
