From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Thavatchai Makphaibulchoke <thavatchai.makpahibulchoke@hp.com>,
Thavatchai Makphaibulchoke <tmac@hp.com>,
linux-kernel@vger.kernel.org, mingo@redhat.com,
tglx@linutronix.de, linux-rt-users@vger.kernel.org
Subject: Re: [PATCH 3.14.25-rt22 1/2] rtmutex Real-Time Linux: Fixing kernel BUG at kernel/locking/rtmutex.c:997!
Date: Thu, 26 Feb 2015 14:56:30 +0100 [thread overview]
Message-ID: <20150226135630.GD12992@linutronix.de> (raw)
In-Reply-To: <20150223195743.546b2ef0@grimm.local.home>
* Steven Rostedt | 2015-02-23 19:57:43 [-0500]:
>On Mon, 23 Feb 2015 17:16:27 -0700
>Thavatchai Makphaibulchoke <thavatchai.makpahibulchoke@hp.com> wrote:
>> If I'm not mistaken, another reason could also be due to the rate of the
>> timer interrupt, in the case that the mutex is highly contested IH could
>> stall the non-real-time requester for a long time, even to the point of
>> the cpu is perceived as hung.
>
>Perhaps we should just have trylocks fail if there are other waiters.
>As it wont slow down the high priority task. And doing that would
>probably even help other rt tasks that are blocked on the lock waiting
>for a release. Why make those tasks wait more if even a higher priority
>task is simply doing a trylock and can safely fail it. At least we
>could do that if the task trying to get the lock is a interrupt.
What happened so far? The events I remember:
- we gained FULL_NO_HZ
- people started to isolate CPUs and push their work / RT tasks there
- it has been noticed that the kernel is raising the timer softirq even
there is nothing going on once the softirq was started.
- tglx came with a patch which could go mainline if solves the problem.
- this patch did not make its way upstream (yet) and I pulled it into
-RT. Isn't this a problem in mainline, too? Why isn't there anyone
screaming?
- we had dead locks because the inner-lock of the sleeping was not safe
to be used from hardirq context. #1
- we had boxes freezing on startup and not making progress due to missed
irq_work wakeups. #2
- we had a deadlock splat on UP because the trylock failed. This was
fixed by only allowing this feature on SMP (since it only makes sense
with isolated CPUs). #3
- Now since the rtmutex rework we have dead lock splats which BUG()s the
systems. #4
The four problems we had/have so far are -RT specific but still
plainfull when I think back.
rtmutex wasn't made to be accessed from hardirq context. That is where we
use the rawlocks. One problem that we still have and Peter pointer out
around #1 is about owner boosting if the lock is held in hardirq context
and the wrong owner is recorded. This problem was ignored so far.
Using a fake task as you suggest in irq context and ignoring would
somehow fix the boosting problem and avoid the deadlock we see now.
I am not sure if we want keep doing that. The only reason why we grab
the lock in the first place was to check if there is a timer pending
and we run on the isolated CPU. It should not matter for the other CPUs,
right?
So instead going further that road, what about storing base->next_timer
someplace so it can be obtained via atomic_read() for the isolated CPUs?
>-- Steve
Sebastian
next prev parent reply other threads:[~2015-02-26 13:56 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-20 1:31 [PATCH 3.14.25-rt22 0/2] rtmutex Real-Time Linux: fix kernel BUG at kernel/locking/rtmutex.c:997! and some optimization Thavatchai Makphaibulchoke
2015-02-20 1:31 ` [PATCH 3.14.25-rt22 1/2] rtmutex Real-Time Linux: Fixing kernel BUG at kernel/locking/rtmutex.c:997! Thavatchai Makphaibulchoke
2015-02-20 4:53 ` Steven Rostedt
2015-02-20 18:54 ` Thavatchai Makphaibulchoke
2015-02-21 1:49 ` Steven Rostedt
2015-02-23 18:37 ` Steven Rostedt
2015-02-24 0:16 ` Thavatchai Makphaibulchoke
2015-02-24 0:57 ` Steven Rostedt
2015-02-26 13:56 ` Sebastian Andrzej Siewior [this message]
2015-02-26 14:06 ` Steven Rostedt
2015-03-06 12:19 ` Sebastian Andrzej Siewior
2015-03-09 16:36 ` Steven Rostedt
2015-03-09 16:49 ` Sebastian Andrzej Siewior
2015-02-20 1:31 ` [PATCH 3.14.25-rt22 2/2] kernel/locking/rtmutex.c: some code optimization Thavatchai Makphaibulchoke
2015-04-07 1:26 ` [PATCH v2 0/2] rtmutex Real-Time Linux: fix BUG at kernel/locking/rtmutex.c:997! Thavatchai Makphaibulchoke
2015-04-07 1:26 ` [PATCH v2 1/2] rtmutex Real-Time Linux: Fixing kernel " Thavatchai Makphaibulchoke
2015-04-07 1:59 ` Steven Rostedt
2015-04-07 5:09 ` Mike Galbraith
2015-04-07 10:29 ` Peter Zijlstra
2015-04-07 10:49 ` Mike Galbraith
2015-04-07 10:56 ` Peter Zijlstra
2015-04-07 11:01 ` Mike Galbraith
2015-04-08 0:55 ` Thavatchai Makphaibulchoke
2015-04-08 8:50 ` Thomas Gleixner
2015-04-09 22:56 ` Thavatchai Makphaibulchoke
2015-04-07 11:23 ` Thomas Gleixner
2015-04-07 11:47 ` Mike Galbraith
2015-04-07 12:04 ` Peter Zijlstra
2015-04-07 12:07 ` Peter Zijlstra
2015-04-07 12:41 ` Steven Rostedt
2015-04-07 12:54 ` Peter Zijlstra
2015-04-07 13:58 ` Steven Rostedt
2015-04-07 18:12 ` Jason Low
2015-04-07 19:17 ` Thomas Gleixner
2015-04-07 19:57 ` Jason Low
2015-04-07 21:38 ` Thomas Gleixner
2015-04-07 1:26 ` [PATCH v2 2/2] kernel/locking/rtmutex.c: some code optimization Thavatchai Makphaibulchoke
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=20150226135630.GD12992@linutronix.de \
--to=bigeasy@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rt-users@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=thavatchai.makpahibulchoke@hp.com \
--cc=tmac@hp.com \
/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.