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>
This commit is contained in:
parent
6a8943d9ec
commit
b1f919664d
|
@ -548,7 +548,7 @@ static u64 clocksource_max_deferment(struct clocksource *cs)
|
||||||
* note a margin of 12.5% is used because this can be computed with
|
* note a margin of 12.5% is used because this can be computed with
|
||||||
* a shift, versus say 10% which would require division.
|
* a shift, versus say 10% which would require division.
|
||||||
*/
|
*/
|
||||||
return max_nsecs - (max_nsecs >> 5);
|
return max_nsecs - (max_nsecs >> 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
|
#ifndef CONFIG_ARCH_USES_GETTIMEOFFSET
|
||||||
|
@ -669,7 +669,7 @@ void __clocksource_updatefreq_scale(struct clocksource *cs, u32 scale, u32 freq)
|
||||||
* ~ 0.06ppm granularity for NTP. We apply the same 12.5%
|
* ~ 0.06ppm granularity for NTP. We apply the same 12.5%
|
||||||
* margin as we do in clocksource_max_deferment()
|
* margin as we do in clocksource_max_deferment()
|
||||||
*/
|
*/
|
||||||
sec = (cs->mask - (cs->mask >> 5));
|
sec = (cs->mask - (cs->mask >> 3));
|
||||||
do_div(sec, freq);
|
do_div(sec, freq);
|
||||||
do_div(sec, scale);
|
do_div(sec, scale);
|
||||||
if (!sec)
|
if (!sec)
|
||||||
|
|
Loading…
Reference in New Issue