linux-rt-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jean Delvare <khali@linux-fr.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: Leon Woestenberg <leon.woestenberg@gmail.com>,
	Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Mark Brown <broonie@opensource.wolfsonmicro.com>,
	Sven-Thorsten Dietrich <sven@thebigcorporation.com>,
	linux-i2c@vger.kernel.org,
	rt-users <linux-rt-users@vger.kernel.org>,
	"Ben Dooks (embedded platforms)" <ben-linux@fluff.org>,
	Peter Zijlstra <peterz@infradead.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: yield() in i2c non-happy paths hits BUG under -rt patch
Date: Thu, 19 Nov 2009 13:05:26 +0100	[thread overview]
Message-ID: <20091119130526.23a69b85@hyperion.delvare> (raw)
In-Reply-To: <alpine.LFD.2.00.0911182127040.24119@localhost.localdomain>

On Wed, 18 Nov 2009 21:36:48 +0100 (CET), Thomas Gleixner wrote:
> On Wed, 18 Nov 2009, Jean Delvare wrote:
> 
> > On Wed, 18 Nov 2009 17:28:53 +0100, Leon Woestenberg wrote:
> > > On Wed, Nov 18, 2009 at 2:05 AM, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote:
> > > > Our timers are very efficient and some day we will need to make jiffies a
> > > > function and stop the timer ticking for best performance. At that point
> > > > timers are probably the most efficient way to do much of this.
> > >
> > > The problem with I2C bitbanged is the stringent timing, we need a way
> > > to have fine-grained sleeping
> > > mixed with real-time tasks in order to make this work.
> > 
> > FWIW, the problem that was initially reported has nothing to do with
> > this. i2c-algo-bit used mdelay() during transactions, not yield().
> > yield() is used only in once place, _between_ transactions attempts.
> > There are no strict timing constraints there.
> 
> That still does not explain why yield() is necessary _between_ the
> transaction attempts.

It is not _necessary_. We are just trying to be fair to other kernel
threads, because bit-banging is expensive and this is the only case
where we know we can tolerate a delay.

Just to clarify things... does (or did) yield() have anything to do
with CONFIG_PREEMPT_VOLUNTARY?

> That code is fully preemptible, otherwise you could not call
> yield().

How does one know what code is preemtible and what code is not? The
rest of the i2c-algo-bit code should definitely _not_ be preemtible, as
it is highly timing sensitive.

> And as I said before nobody even noticed that the yield()
> default implementation was changed to a NOOP by default in the
> scheduler.

Well, I guess only people monitoring system latency would notice, as
this is the only thing yield() was supposed to help with in the first
place.

You say "NOOP by default", does this imply there is a way to change
this?

Was yield() turned into NOOP by design, or was it a bug?

-- 
Jean Delvare

  reply	other threads:[~2009-11-19 12:05 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-07 19:01 yield() in i2c non-happy paths hits BUG under -rt patch Leon Woestenberg
     [not found] ` <c384c5ea0911071101u7415d37o2611c542e5fae309-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2009-11-07 20:01   ` Jean Delvare
     [not found]     ` <20091107210147.3e754278-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-11-08 18:57       ` Sven-Thorsten Dietrich
     [not found]         ` <4AF7148C.9090706-IsH+rWyeNGyzjR9+/8zPv5owlv4uC7bZ@public.gmane.org>
2009-11-12 20:12           ` Jean Delvare
2009-11-13 22:03             ` Thomas Gleixner
2009-11-14 18:02               ` Jean Delvare
     [not found]               ` <alpine.LFD.2.00.0911132139560.24119-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-11-16 15:56                 ` Mark Brown
     [not found]                   ` <20091116155606.GC29479-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2009-11-18  0:50                     ` Leon Woestenberg
2009-11-18  1:05                       ` Alan Cox
     [not found]                         ` <20091118010520.4cd397d4-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2009-11-18 16:28                           ` Leon Woestenberg
2009-11-18 16:52                             ` Jean Delvare
     [not found]                               ` <20091118175202.490989d8-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-11-18 20:36                                 ` Thomas Gleixner
2009-11-19 12:05                                   ` Jean Delvare [this message]
     [not found]                                     ` <20091119130526.23a69b85-ig7AzVSIIG7kN2dkZ6Wm7A@public.gmane.org>
2009-11-19 12:59                                       ` Alan Cox
     [not found]                                         ` <20091119125906.6ad00edd-qBU/x9rampVanCEyBjwyrvXRex20P6io@public.gmane.org>
2009-11-19 13:06                                           ` Peter Zijlstra
2009-11-19 14:00                                             ` Jean Delvare
2009-11-19 14:15                                               ` Peter Zijlstra
2009-11-19 13:11                                       ` Thomas Gleixner
2009-11-19 13:21                                         ` Peter Zijlstra
2009-11-19 13:22                                           ` Thomas Gleixner
2009-11-19 13:18                                     ` Peter Zijlstra
2009-11-18 20:46                               ` [PATCH] cleanup sched_yield (sys)call nesting Sven-Thorsten Dietrich
     [not found]                                 ` <1258577194.12429.86.camel-ZUMNgey8dAdBci4yedNfAfz91O0DMRRp0E9HWUfgJXw@public.gmane.org>
2009-11-18 20:56                                   ` Thomas Gleixner
     [not found]                                     ` <alpine.LFD.2.00.0911182153010.24119-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-11-18 21:04                                       ` Sven-Thorsten Dietrich
2009-11-18 21:34                                         ` Thomas Gleixner
     [not found]                                           ` <alpine.LFD.2.00.0911182233510.24119-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2009-11-19  4:48                                             ` Sven-Thorsten Dietrich
     [not found]                                               ` <1258606116.25022.57.camel-ZUMNgey8dAdBci4yedNfAfz91O0DMRRp0E9HWUfgJXw@public.gmane.org>
2009-11-19 10:36                                                 ` Thomas Gleixner
2009-11-19  3:20                                   ` Ingo Molnar

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=20091119130526.23a69b85@hyperion.delvare \
    --to=khali@linux-fr.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=ben-linux@fluff.org \
    --cc=broonie@opensource.wolfsonmicro.com \
    --cc=leon.woestenberg@gmail.com \
    --cc=linux-i2c@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rt-users@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=sven@thebigcorporation.com \
    --cc=tglx@linutronix.de \
    /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).