Skip to content

Commit

Permalink
lockdep: Selftest: convert spinlock to raw spinlock
Browse files Browse the repository at this point in the history
To make the lockdep selftest working on RT we need to convert the
spinlock tests to a raw spinlock. Otherwise we cannot run the irq
context checks. For mainline this is just annotational as spinlocks
are mapped to raw_spinlocks anyway.

Signed-off-by: Yong Zhang <yong.zhang0@gmail.com>
Link: http://lkml.kernel.org/r/1334559716-18447-2-git-send-email-yong.zhang0@gmail.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
  • Loading branch information
yongzhang0 authored and Ingo Molnar committed Feb 19, 2013
1 parent 6617fec commit 9fb1b90
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions lib/locking-selftest.c
Expand Up @@ -47,10 +47,10 @@ __setup("debug_locks_verbose=", setup_debug_locks_verbose);
* Normal standalone locks, for the circular and irq-context * Normal standalone locks, for the circular and irq-context
* dependency tests: * dependency tests:
*/ */
static DEFINE_SPINLOCK(lock_A); static DEFINE_RAW_SPINLOCK(lock_A);
static DEFINE_SPINLOCK(lock_B); static DEFINE_RAW_SPINLOCK(lock_B);
static DEFINE_SPINLOCK(lock_C); static DEFINE_RAW_SPINLOCK(lock_C);
static DEFINE_SPINLOCK(lock_D); static DEFINE_RAW_SPINLOCK(lock_D);


static DEFINE_RWLOCK(rwlock_A); static DEFINE_RWLOCK(rwlock_A);
static DEFINE_RWLOCK(rwlock_B); static DEFINE_RWLOCK(rwlock_B);
Expand All @@ -73,12 +73,12 @@ static DECLARE_RWSEM(rwsem_D);
* but X* and Y* are different classes. We do this so that * but X* and Y* are different classes. We do this so that
* we do not trigger a real lockup: * we do not trigger a real lockup:
*/ */
static DEFINE_SPINLOCK(lock_X1); static DEFINE_RAW_SPINLOCK(lock_X1);
static DEFINE_SPINLOCK(lock_X2); static DEFINE_RAW_SPINLOCK(lock_X2);
static DEFINE_SPINLOCK(lock_Y1); static DEFINE_RAW_SPINLOCK(lock_Y1);
static DEFINE_SPINLOCK(lock_Y2); static DEFINE_RAW_SPINLOCK(lock_Y2);
static DEFINE_SPINLOCK(lock_Z1); static DEFINE_RAW_SPINLOCK(lock_Z1);
static DEFINE_SPINLOCK(lock_Z2); static DEFINE_RAW_SPINLOCK(lock_Z2);


static DEFINE_RWLOCK(rwlock_X1); static DEFINE_RWLOCK(rwlock_X1);
static DEFINE_RWLOCK(rwlock_X2); static DEFINE_RWLOCK(rwlock_X2);
Expand Down Expand Up @@ -107,10 +107,10 @@ static DECLARE_RWSEM(rwsem_Z2);
*/ */
#define INIT_CLASS_FUNC(class) \ #define INIT_CLASS_FUNC(class) \
static noinline void \ static noinline void \
init_class_##class(spinlock_t *lock, rwlock_t *rwlock, struct mutex *mutex, \ init_class_##class(raw_spinlock_t *lock, rwlock_t *rwlock, \
struct rw_semaphore *rwsem) \ struct mutex *mutex, struct rw_semaphore *rwsem)\
{ \ { \
spin_lock_init(lock); \ raw_spin_lock_init(lock); \
rwlock_init(rwlock); \ rwlock_init(rwlock); \
mutex_init(mutex); \ mutex_init(mutex); \
init_rwsem(rwsem); \ init_rwsem(rwsem); \
Expand Down Expand Up @@ -168,10 +168,10 @@ static void init_shared_classes(void)
* Shortcuts for lock/unlock API variants, to keep * Shortcuts for lock/unlock API variants, to keep
* the testcases compact: * the testcases compact:
*/ */
#define L(x) spin_lock(&lock_##x) #define L(x) raw_spin_lock(&lock_##x)
#define U(x) spin_unlock(&lock_##x) #define U(x) raw_spin_unlock(&lock_##x)
#define LU(x) L(x); U(x) #define LU(x) L(x); U(x)
#define SI(x) spin_lock_init(&lock_##x) #define SI(x) raw_spin_lock_init(&lock_##x)


#define WL(x) write_lock(&rwlock_##x) #define WL(x) write_lock(&rwlock_##x)
#define WU(x) write_unlock(&rwlock_##x) #define WU(x) write_unlock(&rwlock_##x)
Expand Down Expand Up @@ -911,7 +911,7 @@ GENERATE_PERMUTATIONS_3_EVENTS(irq_read_recursion_soft)


#define I2(x) \ #define I2(x) \
do { \ do { \
spin_lock_init(&lock_##x); \ raw_spin_lock_init(&lock_##x); \
rwlock_init(&rwlock_##x); \ rwlock_init(&rwlock_##x); \
mutex_init(&mutex_##x); \ mutex_init(&mutex_##x); \
init_rwsem(&rwsem_##x); \ init_rwsem(&rwsem_##x); \
Expand Down

0 comments on commit 9fb1b90

Please sign in to comment.