xref: /openbmc/linux/kernel/Kconfig.locks (revision cfbb9be8)
1#
2# The ARCH_INLINE foo is necessary because select ignores "depends on"
3#
4config ARCH_INLINE_SPIN_TRYLOCK
5	bool
6
7config ARCH_INLINE_SPIN_TRYLOCK_BH
8	bool
9
10config ARCH_INLINE_SPIN_LOCK
11	bool
12
13config ARCH_INLINE_SPIN_LOCK_BH
14	bool
15
16config ARCH_INLINE_SPIN_LOCK_IRQ
17	bool
18
19config ARCH_INLINE_SPIN_LOCK_IRQSAVE
20	bool
21
22config ARCH_INLINE_SPIN_UNLOCK
23	bool
24
25config ARCH_INLINE_SPIN_UNLOCK_BH
26	bool
27
28config ARCH_INLINE_SPIN_UNLOCK_IRQ
29	bool
30
31config ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
32	bool
33
34
35config ARCH_INLINE_READ_TRYLOCK
36	bool
37
38config ARCH_INLINE_READ_LOCK
39	bool
40
41config ARCH_INLINE_READ_LOCK_BH
42	bool
43
44config ARCH_INLINE_READ_LOCK_IRQ
45	bool
46
47config ARCH_INLINE_READ_LOCK_IRQSAVE
48	bool
49
50config ARCH_INLINE_READ_UNLOCK
51	bool
52
53config ARCH_INLINE_READ_UNLOCK_BH
54	bool
55
56config ARCH_INLINE_READ_UNLOCK_IRQ
57	bool
58
59config ARCH_INLINE_READ_UNLOCK_IRQRESTORE
60	bool
61
62
63config ARCH_INLINE_WRITE_TRYLOCK
64	bool
65
66config ARCH_INLINE_WRITE_LOCK
67	bool
68
69config ARCH_INLINE_WRITE_LOCK_BH
70	bool
71
72config ARCH_INLINE_WRITE_LOCK_IRQ
73	bool
74
75config ARCH_INLINE_WRITE_LOCK_IRQSAVE
76	bool
77
78config ARCH_INLINE_WRITE_UNLOCK
79	bool
80
81config ARCH_INLINE_WRITE_UNLOCK_BH
82	bool
83
84config ARCH_INLINE_WRITE_UNLOCK_IRQ
85	bool
86
87config ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
88	bool
89
90config UNINLINE_SPIN_UNLOCK
91	bool
92
93#
94# lock_* functions are inlined when:
95#   - DEBUG_SPINLOCK=n and GENERIC_LOCKBREAK=n and ARCH_INLINE_*LOCK=y
96#
97# trylock_* functions are inlined when:
98#   - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y
99#
100# unlock and unlock_irq functions are inlined when:
101#   - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y
102#  or
103#   - DEBUG_SPINLOCK=n and PREEMPT=n
104#
105# unlock_bh and unlock_irqrestore functions are inlined when:
106#   - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y
107#
108
109if !DEBUG_SPINLOCK
110
111config INLINE_SPIN_TRYLOCK
112	def_bool y
113	depends on ARCH_INLINE_SPIN_TRYLOCK
114
115config INLINE_SPIN_TRYLOCK_BH
116	def_bool y
117	depends on ARCH_INLINE_SPIN_TRYLOCK_BH
118
119config INLINE_SPIN_LOCK
120	def_bool y
121	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK
122
123config INLINE_SPIN_LOCK_BH
124	def_bool y
125	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_BH
126
127config INLINE_SPIN_LOCK_IRQ
128	def_bool y
129	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQ
130
131config INLINE_SPIN_LOCK_IRQSAVE
132	def_bool y
133	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQSAVE
134
135config INLINE_SPIN_UNLOCK_BH
136	def_bool y
137	depends on ARCH_INLINE_SPIN_UNLOCK_BH
138
139config INLINE_SPIN_UNLOCK_IRQ
140	def_bool y
141	depends on !PREEMPT || ARCH_INLINE_SPIN_UNLOCK_IRQ
142
143config INLINE_SPIN_UNLOCK_IRQRESTORE
144	def_bool y
145	depends on ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE
146
147
148config INLINE_READ_TRYLOCK
149	def_bool y
150	depends on ARCH_INLINE_READ_TRYLOCK
151
152config INLINE_READ_LOCK
153	def_bool y
154	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK
155
156config INLINE_READ_LOCK_BH
157	def_bool y
158	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_BH
159
160config INLINE_READ_LOCK_IRQ
161	def_bool y
162	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQ
163
164config INLINE_READ_LOCK_IRQSAVE
165	def_bool y
166	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQSAVE
167
168config INLINE_READ_UNLOCK
169	def_bool y
170	depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK
171
172config INLINE_READ_UNLOCK_BH
173	def_bool y
174	depends on ARCH_INLINE_READ_UNLOCK_BH
175
176config INLINE_READ_UNLOCK_IRQ
177	def_bool y
178	depends on !PREEMPT || ARCH_INLINE_READ_UNLOCK_IRQ
179
180config INLINE_READ_UNLOCK_IRQRESTORE
181	def_bool y
182	depends on ARCH_INLINE_READ_UNLOCK_IRQRESTORE
183
184
185config INLINE_WRITE_TRYLOCK
186	def_bool y
187	depends on ARCH_INLINE_WRITE_TRYLOCK
188
189config INLINE_WRITE_LOCK
190	def_bool y
191	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK
192
193config INLINE_WRITE_LOCK_BH
194	def_bool y
195	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_BH
196
197config INLINE_WRITE_LOCK_IRQ
198	def_bool y
199	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQ
200
201config INLINE_WRITE_LOCK_IRQSAVE
202	def_bool y
203	depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQSAVE
204
205config INLINE_WRITE_UNLOCK
206	def_bool y
207	depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK
208
209config INLINE_WRITE_UNLOCK_BH
210	def_bool y
211	depends on ARCH_INLINE_WRITE_UNLOCK_BH
212
213config INLINE_WRITE_UNLOCK_IRQ
214	def_bool y
215	depends on !PREEMPT || ARCH_INLINE_WRITE_UNLOCK_IRQ
216
217config INLINE_WRITE_UNLOCK_IRQRESTORE
218	def_bool y
219	depends on ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE
220
221endif
222
223config ARCH_SUPPORTS_ATOMIC_RMW
224	bool
225
226config MUTEX_SPIN_ON_OWNER
227	def_bool y
228	depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW
229
230config RWSEM_SPIN_ON_OWNER
231       def_bool y
232       depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW
233
234config LOCK_SPIN_ON_OWNER
235       def_bool y
236       depends on MUTEX_SPIN_ON_OWNER || RWSEM_SPIN_ON_OWNER
237
238config ARCH_USE_QUEUED_SPINLOCKS
239	bool
240
241config QUEUED_SPINLOCKS
242	def_bool y if ARCH_USE_QUEUED_SPINLOCKS
243	depends on SMP
244
245config ARCH_USE_QUEUED_RWLOCKS
246	bool
247
248config QUEUED_RWLOCKS
249	def_bool y if ARCH_USE_QUEUED_RWLOCKS
250	depends on SMP
251