Skip to content

Commit 5fbefcd

Browse files
bvanasschegregkh
authored andcommitted
locking: Fix rwlock support in <linux/spinlock_up.h>
[ Upstream commit 756a0e0 ] Architecture support for rwlocks must be available whether or not CONFIG_DEBUG_SPINLOCK has been defined. Move the definitions of the arch_{read,write}_{lock,trylock,unlock}() macros such that these become visbile if CONFIG_DEBUG_SPINLOCK=n. This patch prepares for converting do_raw_{read,write}_trylock() into inline functions. Without this patch that conversion triggers a build failure for UP architectures, e.g. arm-ep93xx. I used the following kernel configuration to build the kernel for that architecture: CONFIG_ARCH_MULTIPLATFORM=y CONFIG_ARCH_MULTI_V7=n CONFIG_ATAGS=y CONFIG_MMU=y CONFIG_ARCH_MULTI_V4T=y CONFIG_CPU_LITTLE_ENDIAN=y CONFIG_ARCH_EP93XX=y Fixes: fb1c8f9 ("[PATCH] spinlock consolidation") Signed-off-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://patch.msgid.link/20260313171510.230998-2-bvanassche@acm.org Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 8e1be8f commit 5fbefcd

1 file changed

Lines changed: 10 additions & 10 deletions

File tree

include/linux/spinlock_up.h

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,6 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
4848
lock->slock = 1;
4949
}
5050

51-
/*
52-
* Read-write spinlocks. No debug version.
53-
*/
54-
#define arch_read_lock(lock) do { barrier(); (void)(lock); } while (0)
55-
#define arch_write_lock(lock) do { barrier(); (void)(lock); } while (0)
56-
#define arch_read_trylock(lock) ({ barrier(); (void)(lock); 1; })
57-
#define arch_write_trylock(lock) ({ barrier(); (void)(lock); 1; })
58-
#define arch_read_unlock(lock) do { barrier(); (void)(lock); } while (0)
59-
#define arch_write_unlock(lock) do { barrier(); (void)(lock); } while (0)
60-
6151
#else /* DEBUG_SPINLOCK */
6252
#define arch_spin_is_locked(lock) ((void)(lock), 0)
6353
/* for sched/core.c and kernel_lock.c: */
@@ -68,4 +58,14 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
6858

6959
#define arch_spin_is_contended(lock) (((void)(lock), 0))
7060

61+
/*
62+
* Read-write spinlocks. No debug version.
63+
*/
64+
#define arch_read_lock(lock) do { barrier(); (void)(lock); } while (0)
65+
#define arch_write_lock(lock) do { barrier(); (void)(lock); } while (0)
66+
#define arch_read_trylock(lock) ({ barrier(); (void)(lock); 1; })
67+
#define arch_write_trylock(lock) ({ barrier(); (void)(lock); 1; })
68+
#define arch_read_unlock(lock) do { barrier(); (void)(lock); } while (0)
69+
#define arch_write_unlock(lock) do { barrier(); (void)(lock); } while (0)
70+
7171
#endif /* __LINUX_SPINLOCK_UP_H */

0 commit comments

Comments
 (0)