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