Thread (68 messages) 68 messages, 7 authors, 2014-09-23

Re: [PATCH 13/26] locking: Add non-fatal spin lock assert

From: Peter Hurley <hidden>
Date: 2014-09-03 14:50:11
Also in: lkml

On 09/03/2014 10:40 AM, Peter Zijlstra wrote:
On Wed, Sep 03, 2014 at 07:20:04AM -0400, Peter Hurley wrote:
quoted
Hi Peter,

On 09/03/2014 05:27 AM, Peter Zijlstra wrote:
quoted
On Tue, Sep 02, 2014 at 05:39:22PM -0400, Peter Hurley wrote:
quoted
Provide method for non-essential or non-critical code to warn of
invariant errors.

CC: Ingo Molnar <mingo@kernel.org>
CC: Peter Zijlstra <peterz@infradead.org>
CC: Thomas Gleixner <redacted>
Signed-off-by: Peter Hurley <redacted>
---
 include/linux/spinlock.h         | 1 +
 include/linux/spinlock_api_smp.h | 1 +
 include/linux/spinlock_api_up.h  | 1 +
 3 files changed, 3 insertions(+)
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h
index 3f2867f..8a9aaf1 100644
--- a/include/linux/spinlock.h
+++ b/include/linux/spinlock.h
@@ -394,6 +394,7 @@ static inline int spin_can_lock(spinlock_t *lock)
 }
 
 #define assert_spin_locked(lock)	assert_raw_spin_locked(&(lock)->rlock)
+#define warn_not_spin_locked(lock)	warn_not_raw_spin_locked(&(lock)->rlock)
 
 /*
  * Pull the atomic_t declaration:
diff --git a/include/linux/spinlock_api_smp.h b/include/linux/spinlock_api_smp.h
index 42dfab8..0ddd499 100644
--- a/include/linux/spinlock_api_smp.h
+++ b/include/linux/spinlock_api_smp.h
@@ -18,6 +18,7 @@
 int in_lock_functions(unsigned long addr);
 
 #define assert_raw_spin_locked(x)	BUG_ON(!raw_spin_is_locked(x))
+#define warn_not_raw_spin_locked(x)	WARN_ON_ONCE(!raw_spin_is_locked(x))
No we should remove assert_spin_locked() not add to it. Use
lockdep_assert_held() instead.
I probably should have been more descriptive in the changelog: this
is not for a test configuration, but rather, an assertion in an
exported api.
So ?
So a lockdep-only assert is unlikely to draw attention to existing bugs,
especially in established drivers.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help