All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: samu.p.onkalo@nokia.com
Cc: mingo@elte.hu, linux-kernel@vger.kernel.org, tglx@linutronix.de
Subject: RE: Bug in scheduler when using rt_mutex
Date: Mon, 17 Jan 2011 16:28:04 +0100	[thread overview]
Message-ID: <1295278084.30950.127.camel@laptop> (raw)
In-Reply-To: <90C2C3D80A94B8448891D39FF568E8760760B892@008-AM1MPN1-012.mgdnok.nokia.com>

On Mon, 2011-01-17 at 15:15 +0000, samu.p.onkalo@nokia.com wrote:
> 
> >-----Original Message-----
> >From: ext Peter Zijlstra [mailto:peterz@infradead.org]
> >Sent: 17 January, 2011 17:00
> >To: Onkalo Samu.P (Nokia-MS/Tampere)
> >Cc: mingo@elte.hu; linux-kernel@vger.kernel.org; tglx
> >Subject: Re: Bug in scheduler when using rt_mutex
> >
> >On Mon, 2011-01-17 at 16:42 +0200, Onkalo Samu wrote:
> >> Hi
> >>
> >> I believe that there are some problems in the scheduling when
> >> the following happens:
> >> - Normal priority process locks rt_mutex and sleeps while keeping it
> >> locked.
> >
> >There's your fail, don't do that!
> 
> So that is forbidden:
> 
> rt_mutex_lock();
> wait_for_completion(); <--- shared HW finishes its job
> rt_mutex_unlock();

Well, its pointless, its non-deterministic, so you totally void the
usage of rt_mutex. 

> >Why does I2C core use rt_mutex, that's utterly broken.
> 
> To get low priority task finish ongoing I2C access in time under
> heavy load cases I think.

FYI, I'm queueing a revert for that patch. Random driver junk should not
_ever_ use that.

> >> Based on my debugging following sequence occurs (single CPU
> >> system):
> >>
> >> 1) There is some user process running at the background (like
> >> cat /dev/zero..)
> >> 2) User process reads sysfs entry which causes I2C acccess
> >> 3) User process locks rt_mutex in the I2C-core
> >> 4) User process sleeps while it keeps rt_mutex locked
> >> (wait_for_completion in I2C transfer function)
> >
> >That's where things go wrong, there's absolutely nothing you can do to
> >fix the system once you block while holding a mutex.
> 
> Of course other processes are waiting until the (rt_)mutex is unlocked.
> Problem is that after the rt_mutex_unlock is done, the task which  just released
> the lock, may be in some non-running state for minutes.

Yeah, saw that, writing a patch for that, there's more than one problem
there.


  reply	other threads:[~2011-01-17 15:27 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-17 14:42 Bug in scheduler when using rt_mutex Onkalo Samu
2011-01-17 15:00 ` Peter Zijlstra
2011-01-17 15:15   ` samu.p.onkalo
2011-01-17 15:28     ` Peter Zijlstra [this message]
2011-01-17 16:00 ` Peter Zijlstra
2011-01-18  8:23   ` Onkalo Samu
2011-01-18  8:59     ` Yong Zhang
2011-01-18 13:35       ` Peter Zijlstra
2011-01-18 14:25         ` Onkalo Samu
2011-01-19  2:38         ` Yong Zhang
2011-01-19  3:43           ` Mike Galbraith
2011-01-19  4:35             ` Yong Zhang
2011-01-19  5:40               ` Mike Galbraith
2011-01-19  6:09                 ` Yong Zhang
2011-01-19  6:37                   ` Mike Galbraith
2011-01-19  7:19                     ` Ingo Molnar
2011-01-19  7:41                       ` Mike Galbraith
2011-01-19  9:44           ` Peter Zijlstra
2011-01-19 10:38             ` Peter Zijlstra
2011-01-19 11:30               ` Peter Zijlstra
2011-01-19 12:58                 ` Onkalo Samu
2011-01-19 13:13                   ` Onkalo Samu
2011-01-19 13:30                     ` Peter Zijlstra
2011-01-20  4:18                       ` Yong Zhang
2011-01-20  4:27                         ` Yong Zhang
2011-01-20  5:32                           ` Yong Zhang
2011-01-20  4:59                         ` Mike Galbraith
2011-01-20  5:30                           ` Yong Zhang
2011-01-20  6:12                             ` Mike Galbraith
2011-01-20  7:06                               ` Yong Zhang
2011-01-20  8:37                                 ` Mike Galbraith
2011-01-20  9:07                                   ` Yong Zhang
2011-01-20 10:07                                     ` Mike Galbraith
2011-01-21 11:08                                       ` Peter Zijlstra
2011-01-21 12:24                                         ` Yong Zhang
2011-01-21 13:40                                           ` Peter Zijlstra
2011-01-21 15:03                                             ` Yong Zhang
2011-01-21 15:10                                               ` Peter Zijlstra
2011-01-21 13:15                                       ` Yong Zhang
2011-01-20  7:07                       ` Onkalo Samu
2011-01-21  6:25                         ` Onkalo Samu
2011-01-20  3:10             ` Yong Zhang

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=1295278084.30950.127.camel@laptop \
    --to=peterz@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=samu.p.onkalo@nokia.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 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.