All of lore.kernel.org
 help / color / mirror / Atom feed
From: shinya.kuribayashi.px@renesas.com (Shinya Kuribayashi)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 2/2] ARM: delay: allow timer-based delay implementation to be selected
Date: Tue, 17 Jul 2012 12:10:06 +0900	[thread overview]
Message-ID: <5004D78E.4050606@renesas.com> (raw)
In-Reply-To: <20120713111337.GH18079@mudshark.cambridge.arm.com>

Will, Stephen and Santosh,

On 7/13/2012 8:13 PM, Will Deacon wrote:
> I was anticipating that the platform would set the initial loops_per_jiffy
> value if it requires udelays before loop calibration and the default of 4k
> is wildly off.

I overlooked two different lpj setups were involved at hand.

First one was, the initial loops_per_jiffy value of 4k was too small for
almost all processors running Linux today, so I set up loops_per_jiffy
_early_, calculated from the CPU clock speed.  I didn't mentioned this
before, sorry for confusion.

So my initial loops_per_jiffy is not 4k at this point.  It's optimized
for loop-based delay with the CPU running at 1.2GHz (much bigger than
default 4k).

And later, init_current_timer_delay() got processed.  Actual udelay()
behavior switched from loop-based delay to timer-based one immediately,
while my loops_per_jiffy was not changed/updated to appropriate value.

This is why my udelay()s, used after init_current_timer_delay(), were
taking considerable long time to expire.   Note that my initial tests
for Will's patchset was done using a loadable module dedicated for
udelay tests, that was prepared for 2.6.35/3.0 kernels beforehand.

And this time, I confirmed that updating loops_per_jiffy at the same
time as lpj_fine, works perfectly as expected for me.

> If people need loops_per_jiffy to be updated at the same time as lpj_fine,
> I can post that as a separate patch (below) as Russell has merged v2 of these
> patches into his delay branch. That said, I'd certainly like to know if this
> is actually a real problem (and can't be solved by choosing a compromise value
> as the initial loops_per_jiffy). I think Shinya was doing some tests so
> I'll wait to see how those went.

>From my observations:

(1) loops_per_jiffy can easily be calculated from the CPU clock speed.
If your platform is capable of detecting CPU frequency at run-time,
settingi up loops_per_jiffy _early_ can allow you early use of udelay()s.

Or even if you don't need udelay() early, setting up lpj_fine (or having
calibrate_delay_is_known()) allows you to skip calibrate_delay() later.
This is useful and can be applied to both UP and SMP systems.

(2) For SMP platforms, if you need ealy use of udelay(), you have to
update loops_per_jiffy at the same time as init_current_timer_delay().
It could be done in init_current_timer_delay(), or platforms can take
care of that, that need udelay() available early.  Either one should be
fine with me.
--
Shinya Kuribayashi
Renesas Electronics

  parent reply	other threads:[~2012-07-17  3:10 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-29 17:33 [PATCH v2 0/2] Use architected timers for delay loop Will Deacon
2012-06-29 17:33 ` [PATCH v2 1/2] ARM: arch timer: implement read_current_timer and get_cycles Will Deacon
2012-07-02 19:14   ` Stephen Boyd
2012-07-05 12:35   ` Shinya Kuribayashi
2012-07-05 12:59     ` Will Deacon
2012-06-29 17:33 ` [PATCH v2 2/2] ARM: delay: allow timer-based delay implementation to be selected Will Deacon
2012-07-02 19:14   ` Stephen Boyd
2012-07-02 21:53     ` Will Deacon
2012-07-03 12:09   ` Shinya Kuribayashi
2012-07-04 15:36     ` Will Deacon
2012-07-05 12:12       ` Shinya Kuribayashi
2012-07-05 12:56         ` Will Deacon
2012-07-05 16:51           ` Stephen Boyd
2012-07-05 13:06   ` Shinya Kuribayashi
2012-07-05 14:15     ` Will Deacon
2012-07-12  7:33   ` Shinya Kuribayashi
2012-07-12  8:44     ` Will Deacon
2012-07-12  9:35       ` Shinya Kuribayashi
2012-07-12 16:40         ` Stephen Boyd
2012-07-13  2:16           ` Shinya Kuribayashi
2012-07-13  8:57             ` Will Deacon
2012-07-13 10:48               ` Shilimkar, Santosh
2012-07-13 11:13                 ` Will Deacon
2012-07-13 12:04                   ` Shilimkar, Santosh
2012-07-13 12:08                     ` Will Deacon
2012-07-13 12:14                       ` Shilimkar, Santosh
2012-07-13 12:23                         ` Will Deacon
2012-07-13 12:28                           ` Shilimkar, Santosh
2012-07-17  3:10                   ` Shinya Kuribayashi [this message]
2012-07-17  6:11                     ` Shilimkar, Santosh
2012-07-17  7:42                       ` Shinya Kuribayashi
2012-07-17  9:05                         ` Will Deacon
2012-07-19 12:43                           ` Shinya Kuribayashi
2012-07-18 17:52                         ` Will Deacon
2012-07-19 15:19                           ` Jonathan Austin
2012-07-20 10:17                             ` Will Deacon
2012-07-24  9:06                               ` Shinya Kuribayashi
2012-07-24  9:15                                 ` Will Deacon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5004D78E.4050606@renesas.com \
    --to=shinya.kuribayashi.px@renesas.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.