From: santosh.shilimkar@ti.com (Shilimkar, Santosh)
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 11:41:43 +0530 [thread overview]
Message-ID: <CAMQu2gx9EU4GZ634RKiwD+sg0MoO-FAqc-pPU+HkryX8rXVBjA@mail.gmail.com> (raw)
In-Reply-To: <5004D78E.4050606@renesas.com>
On Tue, Jul 17, 2012 at 8:40 AM, Shinya Kuribayashi
<shinya.kuribayashi.px@renesas.com> wrote:
> 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.
Thanks for the detailed explanation. CPU clock detection is indeed the
nit way to skip the calibration overhead and this was one of the comment
when I tried to push the skipping of calibration for secondary CPUs.
Looks like you have a working patch for the clock detection. Will
you able to post that patch so that this long pending calibration
for secondary CPUs gets optimized.
Regards
Santosh
next prev parent reply other threads:[~2012-07-17 6:11 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
2012-07-17 6:11 ` Shilimkar, Santosh [this message]
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=CAMQu2gx9EU4GZ634RKiwD+sg0MoO-FAqc-pPU+HkryX8rXVBjA@mail.gmail.com \
--to=santosh.shilimkar@ti.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).