Messages in this thread | | | Date | Thu, 15 May 2014 13:04:35 -0400 | From | Steven Rostedt <> | Subject | Re: [patch 2/2] rtmutex: Avoid pointless requeueing in the deadlock detection chain walk |
| |
On Wed, 14 May 2014 20:03:27 -0000 Thomas Gleixner <tglx@linutronix.de> wrote:
> In case the dead lock detector is enabled we follow the lock chain to > the end in rt_mutex_adjust_prio_chain, even if we could stop earlier > due to the priority/waiter constellation.
I'm assuming that we want to detect deadlocks for all futex calls even when CONFIG_DEBUG_RT_MUTEXES is set?
In kernel/locking/rtmutex_common.h:
#ifdef CONFIG_DEBUG_RT_MUTEXES # include "rtmutex-debug.h" #else # include "rtmutex.h" #endif
In kernel/locking/rtmutex.h:
#define debug_rt_mutex_detect_deadlock(w,d) (d)
In kernel/locking/rtmutex.h:
static inline int debug_rt_mutex_detect_deadlock(struct rt_mutex_waiter *waiter, int detect) { return (waiter != NULL); }
Shouldn't that be: return detect || waiter != NULL;
?
I know this a separate issue from this patch series, but it's something that I just noticed.
> > But once we are not longer the top priority waiter in a certain step
"we are no longer the top"
> or the task holding the lock has already the same priority then there > is no point in dequeing and enqueing along the lock chain as there is > no change at all. > > So stop the queueing at this point.
I'll continue reviewing the patch.
-- Steve
| |