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 282