Re: [RFC PATCH] x86:Use cpu_khz for loops_per_jiffy calculation

Alok Kataria
2008-06-26T23:10:45Z

On Thu, 2008-06-26 at 15:16 -0700, Pavel Machek wrote:
> Hi!
>
> > > > > Some cpus can do loop in cycle , some need two cycles, some need half.
> > > >
> > > > Hi Pavel,
> > > >
> > > > When you say loops per jiffies has nothing to do with khz, by khz you
> > > > mean the cpu frequency, right ?
> > >
> > > Yes.
> > >
> > > > AFAIU in calibrate_delay_direct too we measure the amount by which timer
> > > > has ticked until DELAY_CALIBRATION_TICKS amount of jiffies has passed.
> > > > So IMO the code there too assumes that there is one loop per timer
> > > > cycle ?
> > >
> > > On my machine, it reports:
> > >
> > > delay using timer specific routine.. 3661.98 BogoMIPS (lpj=7323971)
> > > ...
> > > Detected 1828.828 MHz processor.
> > >
> > > (/proc/cpuinfo)
> > > model name : Genuine Intel(R) CPU T2400 @ 1.83GHz
> > > ...
> > > cpu MHz : 1000.000
> > How is it 1000 here ? shouldn't this be 1830.xx
>
> cpufreq effect, I believe.
>
> > > bogomips : 3657.54
> > >
> > > So you'd break it by setting lpj (aka bogomips) to cpu_khz, right?
> >
> > We are not setting it to cpu_khz but to tsc_khz, i am assuming that in
> > this case tsc_khz will be different than cpu_khz. Can you please mail me
> > the full dmesg log.
>
> Yes, but neither cpu_khz nor tsc_khz will be 3657 bogoMips, right?

Hi Pavel,

Thanks for the dmesg. The HZ value that you are using on this system is
250, right ?

If you note the calculations
> + lpj = ((u64)tsc_khz * 1000);
> + do_div(lpj, HZ);

We are dividing by HZ over here. So you are right in saying that tsc_khz
wont be equal to bogoMips but lpj_fine will surely be computed correct
since we do consider the HZ value.

Please let me know if you still have any doubts.
Or can i safely assume that you will ACK the patch ;-)

Thanks,
Alok

>
> Anyway, here are my boot messages.
> Pavel
>