Messages in this thread | | | Subject | Re: clocksource.c "margin" | From | John Stultz <> | Date | Wed, 30 Nov 2011 10:43:19 -0800 |
| |
On Wed, 2011-11-30 at 19:09 -0500, Yang Honggang(Joseph) wrote: > Hi John Stultz, > I'm very sorry to trouble you. A problem puzzled me when I reading your > code in kernel/time/clocksource.c. > In the following functions, your said in the comments that >>5 was used > to leave a margin of 12.5%. > I don't know how to get the result. I think is should be >> 3 in order > to leave a margin of 12.5%. > The operation of >> 5 only left 3.125% margin. > > __clocksource_updatefreq_scale > ... > sec = (cs->mask - (cs->mask >> 5)); > ... > clocksource_max_deferment > ... > /* > * To ensure that the clocksource does not wrap whilst we are idle, > * limit the time the clocksource can be deferred by 12.5%. Please > * note a margin of 12.5% is used because this can be computed with > * a shift, versus say 10% which would require division. > */ > return max_nsecs - (max_nsecs >> 5); > ...
Indeed. This looks wrong.
Would you like to send a patch in correcting this issue? If not, let me know and I'll do so.
thanks -john
| |