All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pavel Machek <pavel@ucw.cz>
To: Marcin Slusarz <marcin.slusarz@gmail.com>
Cc: Norbert van Bolhuis <nvbolhuis@aimvalley.nl>,
	linux-kernel@vger.kernel.org
Subject: Re: PROBLEM: CONFIG_NO_HZ could cause software timeouts
Date: Sun, 6 Sep 2009 07:58:41 +0200	[thread overview]
Message-ID: <20090906055841.GC1431@ucw.cz> (raw)
In-Reply-To: <4AA2ABC2.1060803@gmail.com>

On Sat 2009-09-05 20:19:46, Marcin Slusarz wrote:
> Norbert van Bolhuis wrote:
> > 
> > The problem occurs when e.g. drivers use time_after(jiffes, timeout).
> > 
> > CONFIG_NO_HZ could make jiffies advance by more than 1.
> > This is done by:
> > tick_nohz_update_jiffies->tick_do_update_jiffies64->do_timer
> > 
> > If drivers use a timeout value of jiffies+1,
> > "time_after(jiffies, timeout)" will be true after 1 interrupt
> > (given that it advances jiffies by at least 2).
> > 
> > This is exactly what happens in cfi_cmdset_0002.c:do_write_buffer
> > for our case (Powerpc MPC8313, linux-2.6.28, CONFIG_HZ=250,
> > CONFIG_NO_HZ=y).
> > 
> > do_write_buffer does the following:
> >  unsigned long uWriteTimeout = ( HZ / 1000 ) + 1;
> >  ...
> >  timeo = jiffies + uWriteTimeout;
> >  ...
> >  for (;;) {
> >   ...
> >   if (time_after(jiffies, timeo) && !chip_ready(map, adr))
> >    break;
> >   if (chip_ready(map, adr)) {
> >    xip_enable(map, chip, adr);
> >    goto op_done;
> >   }
> >   UDELAY(map, chip, adr, 1);
> >  }
> >  /* software timeout */
> >  ret = -EIO;
> > opdone:
> >  ...
> > 
> > I've seen a few software timeouts after the for-loop
> > looped only 13 times (= 13 us delay, i.s.o. the expected 1 ms). Typically
> 
> Are you sure? UDELAY may call schedule(), which can return to this thread
> after much longer time than 13us...

Too long wait is expected, but AFAICS he's complaining about too short
delay and that's a hard bug.

-- 
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html

  reply	other threads:[~2009-09-06  5:58 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-03 10:50 PROBLEM: CONFIG_NO_HZ could cause software timeouts Norbert van Bolhuis
2009-09-03 11:22 ` Corrado Zoccolo
2009-09-03 11:59   ` Norbert van Bolhuis
2009-09-05 18:19 ` Marcin Slusarz
2009-09-06  5:58   ` Pavel Machek [this message]
2009-09-06 10:11     ` Marcin Slusarz
2009-09-06  5:27 ` 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=20090906055841.GC1431@ucw.cz \
    --to=pavel@ucw.cz \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcin.slusarz@gmail.com \
    --cc=nvbolhuis@aimvalley.nl \
    /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.