From: skannan@codeaurora.org (skannan at codeaurora.org)
To: linux-arm-kernel@lists.infradead.org
Subject: udelay() broken for SMP cores?
Date: Wed, 21 Apr 2010 02:39:39 -0700 (PDT) [thread overview]
Message-ID: <ea62885d30e4bbfb84db59758fa9e946.squirrel@www.codeaurora.org> (raw)
In-Reply-To: <20100421072243.GA913@n2100.arm.linux.org.uk>
> On Tue, Apr 20, 2010 at 11:43:23PM -0700, Saravana Kannan wrote:
>>
>>>> I looked at arch/arm/lib/delay.S and it looks like __udelay and
>>>> __const_udelay won't work correctly for SMP cores. The code just uses
>>>> the loops_per_jiffy variable instead of the per-CPU loops per jiffy
>>>> data.
>>>>
>>>> Is anyone already working on a fix for that? If not, I can fix it up
>>>> in
>>>> a way that's hopefully palatable to the community.
>>>
>>
>>> If you have case where individual CPUs are running at different speed
>>> and different
>>> Tick rate then only this can make difference.
>>
>> Yes. I was talking about the case where the CPUs could be running at
>> different speeds.
>
> We don't support that; if we did, we'd have to disable preempt for every
> call to mdelay/udelay to ensure that the thread is locked to a particular
> CPU. I suspect that will (a) destroy RT scheduling preformance (b)
> increase preempt latency to an undesirable extent.
>
Is this an ARM specific decision? Cpufreq certainly supports per cpu scaling
and x86 udelay uses per-CPU data. So your concern should apply for x86
too. I had the same concern and was planning on bring it up in the cpufreq
mailing list after I made sure I didn't misunderstand anything.
Btw, your concern should apply for single core scaling too, right? Context
switch can complete within max udelay (general - 5ms, ARM - 2ms) time and
CPU could have jumped
from lowest to highest speed in that time and mess up udelay. I didn't see
any code in cpufreq that deferred scaling during udelay. So, that's something
I plan to ask cpufreq folks too.
Let me know what you think.
Thanks,
Saravana
P.S: Sent from phone. Pls excuse formatting issues.
next prev parent reply other threads:[~2010-04-21 9:39 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-04-21 2:19 udelay() broken for SMP cores? Saravana Kannan
2010-04-21 4:56 ` Shilimkar, Santosh
2010-04-21 6:43 ` Saravana Kannan
2010-04-21 7:22 ` Russell King - ARM Linux
2010-04-21 9:39 ` skannan at codeaurora.org [this message]
2010-04-21 9:50 ` Russell King - ARM Linux
2010-04-21 9:58 ` Gilles Chanteperdrix
2010-04-21 10:00 ` Jamie Lokier
2010-04-21 19:29 ` Russell King - ARM Linux
2010-04-21 19:52 ` Jamie Lokier
2010-04-21 20:21 ` Russell King - ARM Linux
2010-04-21 20:47 ` Jamie Lokier
2010-04-21 20:57 ` Russell King - ARM Linux
2010-04-22 0:14 ` Jamie Lokier
2011-01-08 23:24 ` Russell King - ARM Linux
2010-04-21 10:31 ` skannan at codeaurora.org
2010-04-21 19:33 ` Russell King - ARM Linux
2010-04-21 23:47 ` Saravana Kannan
2010-04-21 23:47 ` Saravana Kannan
2010-04-23 9:00 ` Pavel Machek
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=ea62885d30e4bbfb84db59758fa9e946.squirrel@www.codeaurora.org \
--to=skannan@codeaurora.org \
--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.