From: Nishanth Aravamudan <nacc@us.ibm.com>
To: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Linus Torvalds <torvalds@osdl.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] pmac_cpufreq msleep cleanup/fixes
Date: Fri, 22 Oct 2004 16:43:44 -0700 [thread overview]
Message-ID: <20041022234344.GI18906@us.ibm.com> (raw)
In-Reply-To: <1098487053.6029.89.camel@gaston>
On Sat, Oct 23, 2004 at 09:17:33AM +1000, Benjamin Herrenschmidt wrote:
> On Sat, 2004-10-23 at 08:53, Linus Torvalds wrote:
> > On Sat, 23 Oct 2004, Benjamin Herrenschmidt wrote:
> > >
> > > Please revert that change until we have made absolutely sure that msleep(1)
> > > on a HZ=1000 machine will actually sleep at least 1ms, this is really not
> > > clear since it will end up doing schedule_timeout(1) which, afaik, will
> > > only guarantee to sleep up to the next jiffie, which can be a lot shorter
> > > than the actual duration of a jiffie.
> >
> > In that case I'd much prefer to revert the whole previous "cleanup" as
> > well, since it obviously isn't really. Having
> >
> > msleep(1 + jiffy_to_ms(1));
> >
> > is just not a cleanup to me.
>
> This wasn't a cleanup but a bug fix actually ... Oh well, I think we need
> to fix msleep() instead, what do you think ? If we keep Nishanth's latest
> cleanup and fix msleep to add +1 to the delay, that would work and potentially
> fix other users as well ... provided my theory is right in the first place
> and that schedule_timeout(1) will indeed only sleep until the next jiffy and
> not for at least one jiffy...
>
> What about something like this ?
>
Looks good to me... And makes quite a bit of sense, after I thought
about it. Does feel a little hacky, but I don't see a slicker way around
the problem...
Makes sure msleep() sleeps at least the amount provided, since
schedule_timeout() doesn't guarantee a full jiffy.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Acked-by: Nishanth Aravamudan <nacc@us.ibm.com>
===== kernel/timer.c 1.100 vs edited =====
--- 1.100/kernel/timer.c 2004-10-19 19:40:28 +10:00
+++ edited/kernel/timer.c 2004-10-23 09:16:10 +10:00
@@ -1605,7 +1605,7 @@
*/
void msleep(unsigned int msecs)
{
- unsigned long timeout = msecs_to_jiffies(msecs);
+ unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout) {
set_current_state(TASK_UNINTERRUPTIBLE);
@@ -1621,7 +1621,7 @@
*/
unsigned long msleep_interruptible(unsigned int msecs)
{
- unsigned long timeout = msecs_to_jiffies(msecs);
+ unsigned long timeout = msecs_to_jiffies(msecs) + 1;
while (timeout && !signal_pending(current)) {
set_current_state(TASK_INTERRUPTIBLE);
next prev parent reply other threads:[~2004-10-22 23:46 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <200410221906.i9MJ63Ai022889@hera.kernel.org>
2004-10-22 22:36 ` [PATCH] pmac_cpufreq msleep cleanup/fixes Benjamin Herrenschmidt
2004-10-22 22:53 ` Linus Torvalds
2004-10-22 23:17 ` Benjamin Herrenschmidt
2004-10-22 23:43 ` Nishanth Aravamudan [this message]
2004-10-23 0:33 ` Paul Mackerras
2004-10-22 23:51 ` Linus Torvalds
2004-10-25 0:19 ` [PATCH][RESEND] Fix msleep to sleep _at_least_ the requested amount Benjamin Herrenschmidt
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=20041022234344.GI18906@us.ibm.com \
--to=nacc@us.ibm.com \
--cc=benh@kernel.crashing.org \
--cc=linux-kernel@vger.kernel.org \
--cc=paulus@samba.org \
--cc=torvalds@osdl.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.