On Wed, 6 Mar 2013, H. Peter Anvin wrote: > On 03/06/2013 01:15 PM, Thomas Gleixner wrote: > > On Wed, 6 Mar 2013, H. Peter Anvin wrote: > > > >> On 03/06/2013 06:09 AM, Thomas Gleixner wrote: > >>> > >>> This breaks everything which does not have a 64/32bit divide > >>> instruction. And you can't replace it with do_div() as that would > >>> impose massive overhead on those architectures in the fast path. > >>> > >> > >> Could we do the same kind of scaling-by-multiplication that we do in > >> kernel/time.c for this? > > > > Not sure what you are referring to. kernel/time.c contains a lot of stuff :) > > > > This stuff, specifically the third clause (which incidentally could be > extended to the fourth clause without much trouble... I have > experimented with it already.) > > It uses a N*N->2N multiply and a shift to do overflowless scaling; it is > ±1 LSB in the upper half of the value range with can be remedied with an > additional 2N add.
That's compile time. We need this at runtime and we do not want to reduce the accuracy. That's precision timekeeping not jiffies :) Thanks, tglx