| # SPDX-License-Identifier: GPL-2.0-only | |
| # | |
| # The ARCH_INLINE foo is necessary because select ignores "depends on" | |
| # | |
| config ARCH_INLINE_SPIN_TRYLOCK | |
| bool | |
| config ARCH_INLINE_SPIN_TRYLOCK_BH | |
| bool | |
| config ARCH_INLINE_SPIN_LOCK | |
| bool | |
| config ARCH_INLINE_SPIN_LOCK_BH | |
| bool | |
| config ARCH_INLINE_SPIN_LOCK_IRQ | |
| bool | |
| config ARCH_INLINE_SPIN_LOCK_IRQSAVE | |
| bool | |
| config ARCH_INLINE_SPIN_UNLOCK | |
| bool | |
| config ARCH_INLINE_SPIN_UNLOCK_BH | |
| bool | |
| config ARCH_INLINE_SPIN_UNLOCK_IRQ | |
| bool | |
| config ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE | |
| bool | |
| config ARCH_INLINE_READ_TRYLOCK | |
| bool | |
| config ARCH_INLINE_READ_LOCK | |
| bool | |
| config ARCH_INLINE_READ_LOCK_BH | |
| bool | |
| config ARCH_INLINE_READ_LOCK_IRQ | |
| bool | |
| config ARCH_INLINE_READ_LOCK_IRQSAVE | |
| bool | |
| config ARCH_INLINE_READ_UNLOCK | |
| bool | |
| config ARCH_INLINE_READ_UNLOCK_BH | |
| bool | |
| config ARCH_INLINE_READ_UNLOCK_IRQ | |
| bool | |
| config ARCH_INLINE_READ_UNLOCK_IRQRESTORE | |
| bool | |
| config ARCH_INLINE_WRITE_TRYLOCK | |
| bool | |
| config ARCH_INLINE_WRITE_LOCK | |
| bool | |
| config ARCH_INLINE_WRITE_LOCK_BH | |
| bool | |
| config ARCH_INLINE_WRITE_LOCK_IRQ | |
| bool | |
| config ARCH_INLINE_WRITE_LOCK_IRQSAVE | |
| bool | |
| config ARCH_INLINE_WRITE_UNLOCK | |
| bool | |
| config ARCH_INLINE_WRITE_UNLOCK_BH | |
| bool | |
| config ARCH_INLINE_WRITE_UNLOCK_IRQ | |
| bool | |
| config ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE | |
| bool | |
| config UNINLINE_SPIN_UNLOCK | |
| bool | |
| # | |
| # lock_* functions are inlined when: | |
| # - DEBUG_SPINLOCK=n and GENERIC_LOCKBREAK=n and ARCH_INLINE_*LOCK=y | |
| # | |
| # trylock_* functions are inlined when: | |
| # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y | |
| # | |
| # unlock and unlock_irq functions are inlined when: | |
| # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y | |
| # or | |
| # - DEBUG_SPINLOCK=n and PREEMPTION=n | |
| # | |
| # unlock_bh and unlock_irqrestore functions are inlined when: | |
| # - DEBUG_SPINLOCK=n and ARCH_INLINE_*LOCK=y | |
| # | |
| if !DEBUG_SPINLOCK | |
| config INLINE_SPIN_TRYLOCK | |
| def_bool y | |
| depends on ARCH_INLINE_SPIN_TRYLOCK | |
| config INLINE_SPIN_TRYLOCK_BH | |
| def_bool y | |
| depends on ARCH_INLINE_SPIN_TRYLOCK_BH | |
| config INLINE_SPIN_LOCK | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK | |
| config INLINE_SPIN_LOCK_BH | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_BH | |
| config INLINE_SPIN_LOCK_IRQ | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQ | |
| config INLINE_SPIN_LOCK_IRQSAVE | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_SPIN_LOCK_IRQSAVE | |
| config INLINE_SPIN_UNLOCK_BH | |
| def_bool y | |
| depends on ARCH_INLINE_SPIN_UNLOCK_BH | |
| config INLINE_SPIN_UNLOCK_IRQ | |
| def_bool y | |
| depends on !PREEMPTION || ARCH_INLINE_SPIN_UNLOCK_IRQ | |
| config INLINE_SPIN_UNLOCK_IRQRESTORE | |
| def_bool y | |
| depends on ARCH_INLINE_SPIN_UNLOCK_IRQRESTORE | |
| config INLINE_READ_TRYLOCK | |
| def_bool y | |
| depends on ARCH_INLINE_READ_TRYLOCK | |
| config INLINE_READ_LOCK | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK | |
| config INLINE_READ_LOCK_BH | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_BH | |
| config INLINE_READ_LOCK_IRQ | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQ | |
| config INLINE_READ_LOCK_IRQSAVE | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_READ_LOCK_IRQSAVE | |
| config INLINE_READ_UNLOCK | |
| def_bool y | |
| depends on !PREEMPTION || ARCH_INLINE_READ_UNLOCK | |
| config INLINE_READ_UNLOCK_BH | |
| def_bool y | |
| depends on ARCH_INLINE_READ_UNLOCK_BH | |
| config INLINE_READ_UNLOCK_IRQ | |
| def_bool y | |
| depends on !PREEMPTION || ARCH_INLINE_READ_UNLOCK_IRQ | |
| config INLINE_READ_UNLOCK_IRQRESTORE | |
| def_bool y | |
| depends on ARCH_INLINE_READ_UNLOCK_IRQRESTORE | |
| config INLINE_WRITE_TRYLOCK | |
| def_bool y | |
| depends on ARCH_INLINE_WRITE_TRYLOCK | |
| config INLINE_WRITE_LOCK | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK | |
| config INLINE_WRITE_LOCK_BH | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_BH | |
| config INLINE_WRITE_LOCK_IRQ | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQ | |
| config INLINE_WRITE_LOCK_IRQSAVE | |
| def_bool y | |
| depends on !GENERIC_LOCKBREAK && ARCH_INLINE_WRITE_LOCK_IRQSAVE | |
| config INLINE_WRITE_UNLOCK | |
| def_bool y | |
| depends on !PREEMPTION || ARCH_INLINE_WRITE_UNLOCK | |
| config INLINE_WRITE_UNLOCK_BH | |
| def_bool y | |
| depends on ARCH_INLINE_WRITE_UNLOCK_BH | |
| config INLINE_WRITE_UNLOCK_IRQ | |
| def_bool y | |
| depends on !PREEMPTION || ARCH_INLINE_WRITE_UNLOCK_IRQ | |
| config INLINE_WRITE_UNLOCK_IRQRESTORE | |
| def_bool y | |
| depends on ARCH_INLINE_WRITE_UNLOCK_IRQRESTORE | |
| endif | |
| config ARCH_SUPPORTS_ATOMIC_RMW | |
| bool | |
| config MUTEX_SPIN_ON_OWNER | |
| def_bool y | |
| depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW | |
| config RWSEM_SPIN_ON_OWNER | |
| def_bool y | |
| depends on SMP && ARCH_SUPPORTS_ATOMIC_RMW | |
| config LOCK_SPIN_ON_OWNER | |
| def_bool y | |
| depends on MUTEX_SPIN_ON_OWNER || RWSEM_SPIN_ON_OWNER | |
| config ARCH_USE_QUEUED_SPINLOCKS | |
| bool | |
| config QUEUED_SPINLOCKS | |
| def_bool y if ARCH_USE_QUEUED_SPINLOCKS | |
| depends on SMP | |
| config QUEUED_SPINLOCKS_TRACE_CONTENDED_RELEASE | |
| bool "Trace contended_release on queued spinlocks" | |
| depends on QUEUED_SPINLOCKS && TRACEPOINTS | |
| help | |
| Fire the lock:contended_release tracepoint when a contended queued | |
| spinlock is released, so it is possible to attribute a contended | |
| spinlock to its holder. | |
| Architectures that can patch the unlock site do this at no cost and | |
| do not need this option. | |
| Everywhere else the check is compiled into queued_spin_unlock() and | |
| a small cost is paid on every unlock even when the tracepoint is | |
| disabled: a static-branch NOP and possibly a few more instructions | |
| to manage a stack frame. | |
| Sleeping locks fire lock:contended_release regardless of this option. | |
| If unsure, say N. | |
| config BPF_ARCH_SPINLOCK | |
| bool | |
| config ARCH_USE_QUEUED_RWLOCKS | |
| bool | |
| config QUEUED_RWLOCKS | |
| def_bool y if ARCH_USE_QUEUED_RWLOCKS | |
| depends on SMP && !PREEMPT_RT | |
| config ARCH_HAS_MMIOWB | |
| bool | |
| config MMIOWB | |
| def_bool y if ARCH_HAS_MMIOWB | |
| depends on SMP |