[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.LFD.2.02.1303062225460.22263@ionos>
Date: Wed, 6 Mar 2013 22:29:21 +0100 (CET)
From: Thomas Gleixner <tglx@...utronix.de>
To: "H. Peter Anvin" <hpa@...ux.intel.com>
cc: Feng Tang <feng.tang@...el.com>,
John Stultz <john.stultz@...aro.org>,
Ingo Molnar <mingo@...e.hu>,
Jason Gunthorpe <jgunthorpe@...idianresearch.com>,
x86@...nel.org, Len Brown <lenb@...nel.org>,
"Rafael J. Wysocki" <rafael.j.wysocki@...el.com>,
linux-kernel@...r.kernel.org, gong.chen@...ux.intel.com
Subject: Re: [PATCH v3 4/5] clocksource: Enable clocksource_cyc2ns() to cover
big cycles
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
Powered by blists - more mailing lists