projects/linux·blob master · refs

281 lines · 5.7 KiB

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 QUEUED_SPINLOCKS_TRACE_CONTENDED_RELEASE
247 bool "Trace contended_release on queued spinlocks"
248 depends on QUEUED_SPINLOCKS && TRACEPOINTS
249 help
250 Fire the lock:contended_release tracepoint when a contended queued
251 spinlock is released, so it is possible to attribute a contended
252 spinlock to its holder.
253
254 Architectures that can patch the unlock site do this at no cost and
255 do not need this option.
256
257 Everywhere else the check is compiled into queued_spin_unlock() and
258 a small cost is paid on every unlock even when the tracepoint is
259 disabled: a static-branch NOP and possibly a few more instructions
260 to manage a stack frame.
261
262 Sleeping locks fire lock:contended_release regardless of this option.
263
264 If unsure, say N.
265
266config BPF_ARCH_SPINLOCK
267 bool
268
269config ARCH_USE_QUEUED_RWLOCKS
270 bool
271
272config QUEUED_RWLOCKS
273 def_bool y if ARCH_USE_QUEUED_RWLOCKS
274 depends on SMP && !PREEMPT_RT
275
276config ARCH_HAS_MMIOWB
277 bool
278
279config MMIOWB
280 def_bool y if ARCH_HAS_MMIOWB
281 depends on SMP