From: Steven Rostedt <rostedt@goodmis.org>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: LKML <linux-kernel@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>,
Lai Jiangshan <laijs@cn.fujitsu.com>,
Jason Low <jason.low2@hp.com>, Brad Mouring <bmouring@ni.com>
Subject: Re: [patch V3 6/7] rtmutex: Cleanup deadlock detector debug logic
Date: Mon, 9 Jun 2014 21:04:58 -0400 [thread overview]
Message-ID: <20140609210458.10c4ac8d@gandalf.local.home> (raw)
In-Reply-To: <20140609202336.431063114@linutronix.de>
On Mon, 09 Jun 2014 20:28:10 -0000
Thomas Gleixner <tglx@linutronix.de> wrote:
> The conditions under which deadlock detection is conducted are unclear
> and undocumented.
>
> Add constants instead of using 0/1 and provide a selection function
> which hides the additional debug dependency from the calling code.
>
> Add comments where needed.
>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
> kernel/locking/rtmutex-debug.c | 5 +-
> kernel/locking/rtmutex-debug.h | 7 ++--
> kernel/locking/rtmutex.c | 69 +++++++++++++++++++++++++++-------------
> kernel/locking/rtmutex.h | 7 +++-
> kernel/locking/rtmutex_common.h | 15 ++++++++
> 5 files changed, 75 insertions(+), 28 deletions(-)
>
> Index: tip/kernel/locking/rtmutex-debug.c
> ===================================================================
> --- tip.orig/kernel/locking/rtmutex-debug.c
> +++ tip/kernel/locking/rtmutex-debug.c
> @@ -66,12 +66,13 @@ void rt_mutex_debug_task_free(struct tas
> * the deadlock. We print when we return. act_waiter can be NULL in
> * case of a remove waiter operation.
> */
> -void debug_rt_mutex_deadlock(int detect, struct rt_mutex_waiter *act_waiter,
> +void debug_rt_mutex_deadlock(enum rtmutex_chainwalk chwalk,
> + struct rt_mutex_waiter *act_waiter,
> struct rt_mutex *lock)
> {
> struct task_struct *task;
>
> - if (!debug_locks || detect || !act_waiter)
> + if (!debug_locks || chwalk || !act_waiter)
I know this will probably get a little verbose, but chwalk isn't very
descriptive. Perhaps change this to:
if (!debug_locks || chwalk == RT_MUTEX_FULL_CHAINWALK ||
!act_waiter)
To cut down on the verbosity, we could add helper macros:
#define chwalk_is_full(chwalk) ((chwalk) == RT_MUTEX_FULL_CHAINWALK)
#define chwalk_is_min(chwalk) ((chwalk) == RT_MUTEX_MIN_CHAINWALK)
And then the above would simply be:
if (!debug_locks || chwalk_is_full(chwalk) || !act_waiter)
And put this throughout.
-- Steve
next prev parent reply other threads:[~2014-06-10 1:05 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-09 20:28 [patch V3 0/7] rtmutex: Code clarification and optimization Thomas Gleixner
2014-06-09 20:28 ` [patch V3 1/7] rtmutex: Deobfuscate chain walk Thomas Gleixner
2014-06-09 20:59 ` Steven Rostedt
2014-06-10 3:52 ` Lai Jiangshan
2014-06-10 3:21 ` Jason Low
2014-06-10 13:57 ` Brad Mouring
2014-06-09 20:28 ` [patch V3 2/7] rtmutex: Clarify the boost/deboost part Thomas Gleixner
2014-06-10 0:37 ` Steven Rostedt
2014-06-10 3:22 ` Jason Low
2014-06-10 14:04 ` Brad Mouring
2014-06-09 20:28 ` [patch V3 4/7] rtmutex: Siplify remove_waiter() Thomas Gleixner
2014-06-10 0:53 ` Steven Rostedt
2014-06-10 3:35 ` Lai Jiangshan
2014-06-10 3:44 ` Jason Low
2014-06-10 14:10 ` Brad Mouring
2014-06-09 20:28 ` [patch V3 3/7] rtmutex: Document pi chain walk Thomas Gleixner
2014-06-10 0:45 ` Steven Rostedt
2014-06-10 3:51 ` Lai Jiangshan
2014-06-10 14:21 ` Brad Mouring
2014-06-09 20:28 ` [patch V3 5/7] rtmutex: Confine deadlock logic to futex Thomas Gleixner
2014-06-10 0:59 ` Steven Rostedt
2014-06-10 4:03 ` Lai Jiangshan
2014-06-10 17:39 ` Thomas Gleixner
2014-06-09 20:28 ` [patch V3 6/7] rtmutex: Cleanup deadlock detector debug logic Thomas Gleixner
2014-06-10 1:04 ` Steven Rostedt [this message]
2014-06-10 15:09 ` Brad Mouring
2014-06-09 20:28 ` [patch V3 7/7] rtmutex: Avoid pointless requeueing in the deadlock detection chain walk Thomas Gleixner
2014-06-10 1:20 ` Steven Rostedt
2014-06-10 3:48 ` Jason Low
2014-06-10 17:41 ` Thomas Gleixner
2014-06-10 17:47 ` Steven Rostedt
2014-06-10 20:45 ` Thomas Gleixner
2014-06-10 14:57 ` Brad Mouring
2014-06-10 15:19 ` Steven Rostedt
2014-06-10 17:43 ` Thomas Gleixner
2014-06-10 17:51 ` Steven Rostedt
2014-06-10 20:46 ` Thomas Gleixner
2014-06-10 0:27 ` [patch V3 0/7] rtmutex: Code clarification and optimization Steven Rostedt
2014-06-10 0:35 ` Steven Rostedt
2014-06-10 3:00 ` Lai Jiangshan
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=20140609210458.10c4ac8d@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=bmouring@ni.com \
--cc=jason.low2@hp.com \
--cc=laijs@cn.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--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
all inboxes | Powered by JetHome®