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