All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Linus Torvalds <torvalds@osdl.org>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	Paul Mackerras <paulus@samba.org>
Subject: Re: [PATCH] pmac_cpufreq msleep cleanup/fixes
Date: Sat, 23 Oct 2004 09:17:33 +1000	[thread overview]
Message-ID: <1098487053.6029.89.camel@gaston> (raw)
In-Reply-To: <Pine.LNX.4.58.0410221552320.2101@ppc970.osdl.org>

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 ?

  ---

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>

===== 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);



  reply	other threads:[~2004-10-22 23:26 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 [this message]
2004-10-22 23:43       ` Nishanth Aravamudan
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=1098487053.6029.89.camel@gaston \
    --to=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.