Thread (30 messages) 30 messages, 3 authors, 2011-12-10

[PATCH 5/5 v2] ARM: OMAP1: recalculate loops per jiffy after dpll1 reprogram

From: Russell King - ARM Linux <hidden>
Date: 2011-12-10 00:25:58
Also in: linux-omap, lkml

On Fri, Dec 09, 2011 at 11:00:01AM +0100, Janusz Krzysztofik wrote:
On Friday 09 of December 2011 at 09:42:45, Russell King - ARM Linux wrote:
quoted
On Tue, Nov 29, 2011 at 01:25:32AM +0100, Janusz Krzysztofik wrote:
quoted
However, the result of cpufreq_scale() differs from that of
(re)calibrate_delay() by ca. 6%, i.e., 70.40 vs. 74.54. Please advise if
this approximation is acceptable.
You don't say which figure is what.
Hi,
Those were BogoMIPS, which you were talking about in your comment 
(http://www.spinics.net/lists/linux-omap/msg60811.html).
I realise that.  But which is which - is 70.40 from recalibrate_delay
or is it 74.54?  Your message is too vague to be able to interpret your
results because it's impossible to work out what figure refers to which
method.
quoted
Note that calibrate_delay() is itself inaccurate - the loops_per_jiffy
is the number of loops which can be executed between two timer ticks
_minus_ the time to process the timer interrupt itself.  So, it's
actually always a little less than the theoretical number of loops
within that time period.
I see. Then, in case of a machine always booting at, let's say, 12 and
then reprogrammed to 150 MHz, we actually scale up that less then the
theoretical number, with a side effect of scaling up its error as well.
Perhaps in this case, when the machine is going to run at that target
rate until rebooted, we should rather decide to recalibrate to keep
that error proportionally small compared to the target loops per
jiffy value, like it worked in my initial proposal? I think that
your argument about unnecessarily wasting 10s of milliseconds has
marginal importance here because we will be redoing that calibration
only once, at boot time, and never later until next reboot.
It really doesn't matter - udelay() etc is not designed to be mega
accurate but good enough.  The fact is that it has always produced a
delay of approximately the value requested of it (and normally it
would produce a slightly shorter delay) and that's a fact of life
that driver authors should already be dealing with.

So, your patch is fine.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help