 5db6c6fefb
			
		
	
	
	5db6c6fefb
	
	
	
		
			
			Just like with mutexes (CONFIG_MUTEX_SPIN_ON_OWNER), encapsulate the dependencies for rwsem optimistic spinning. No logical changes here as it continues to depend on both SMP and the XADD algorithm variant. Signed-off-by: Davidlohr Bueso <davidlohr@hp.com> Acked-by: Jason Low <jason.low2@hp.com> [ Also make it depend on ARCH_SUPPORTS_ATOMIC_RMW. ] Signed-off-by: Peter Zijlstra <peterz@infradead.org> Link: http://lkml.kernel.org/r/1405112406-13052-2-git-send-email-davidlohr@hp.com Cc: aswin@hp.com Cc: Chris Mason <clm@fb.com> Cc: Davidlohr Bueso <davidlohr@hp.com> Cc: Josef Bacik <jbacik@fusionio.com> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Waiman Long <Waiman.Long@hp.com> Signed-off-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Ingo Molnar <mingo@kernel.org>
		
			
				
	
	
		
			239 lines
		
	
	
	
		
			4.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
	
		
			4.5 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| #
 | |
| # 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 PREEMPT=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 !PREEMPT || 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 !PREEMPT || 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 !PREEMPT || 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 !PREEMPT || 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 !PREEMPT || 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 && !DEBUG_MUTEXES && ARCH_SUPPORTS_ATOMIC_RMW
 | |
| 
 | |
| config RWSEM_SPIN_ON_OWNER
 | |
|        def_bool y
 | |
|        depends on SMP && RWSEM_XCHGADD_ALGORITHM && ARCH_SUPPORTS_ATOMIC_RMW
 | |
| 
 | |
| config ARCH_USE_QUEUE_RWLOCK
 | |
| 	bool
 | |
| 
 | |
| config QUEUE_RWLOCK
 | |
| 	def_bool y if ARCH_USE_QUEUE_RWLOCK
 | |
| 	depends on SMP
 |