mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	rcu: move PREEMPT_RCU config option back under PREEMPT
The original preemptible-RCU patch put the choice between classic and preemptible RCU into kernel/Kconfig.preempt, which resulted in build failures on machines not supporting CONFIG_PREEMPT. This choice was therefore moved to init/Kconfig, which worked, but placed the choice between classic and preemptible RCU at the top level, a very obtuse choice indeed. This patch changes from the Kconfig "choice" mechanism to a pair of booleans, only one of which (CONFIG_PREEMPT_RCU) is user-visible, and is located in kernel/Kconfig.preempt, where one would expect it to be. The other (CONFIG_CLASSIC_RCU) is in init/Kconfig so that it is available to all architectures, hopefully avoiding build breakage. Thanks to Roman Zippel for suggesting this approach. Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Ingo Molnar <mingo@elte.hu> Acked-by: Steven Rostedt <rostedt@goodmis.org> Cc: Dipankar Sarma <dipankar@in.ibm.com> Cc: Josh Triplett <josh@freedesktop.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Roman Zippel <zippel@linux-m68k.org> Cc: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									f47831faba
								
							
						
					
					
						commit
						21bbb39c37
					
				
					 2 changed files with 18 additions and 31 deletions
				
			
		
							
								
								
									
										34
									
								
								init/Kconfig
									
										
									
									
									
								
							
							
						
						
									
										34
									
								
								init/Kconfig
									
										
									
									
									
								
							|  | @ -865,38 +865,10 @@ source "block/Kconfig" | |||
| config PREEMPT_NOTIFIERS | ||||
| 	bool | ||||
| 
 | ||||
| choice | ||||
| 	prompt "RCU implementation type:" | ||||
| 	default CLASSIC_RCU | ||||
| 	help | ||||
| 	  This allows you to choose either the classic RCU implementation | ||||
| 	  that is designed for best read-side performance on non-realtime | ||||
| 	  systems, or the preemptible RCU implementation for best latency | ||||
| 	  on realtime systems.  Note that some kernel preemption modes | ||||
| 	  will restrict your choice. | ||||
| 
 | ||||
| 	  Select the default if you are unsure. | ||||
| 
 | ||||
| config CLASSIC_RCU | ||||
| 	bool "Classic RCU" | ||||
| 	def_bool !PREEMPT_RCU | ||||
| 	help | ||||
| 	  This option selects the classic RCU implementation that is | ||||
| 	  designed for best read-side performance on non-realtime | ||||
| 	  systems. | ||||
| 
 | ||||
| 	  Say Y if you are unsure. | ||||
| 
 | ||||
| config PREEMPT_RCU | ||||
| 	bool "Preemptible RCU" | ||||
| 	depends on PREEMPT | ||||
| 	help | ||||
| 	  This option reduces the latency of the kernel by making certain | ||||
| 	  RCU sections preemptible. Normally RCU code is non-preemptible, if | ||||
| 	  this option is selected then read-only RCU sections become | ||||
| 	  preemptible. This helps latency, but may expose bugs due to | ||||
| 	  now-naive assumptions about each RCU read-side critical section | ||||
| 	  remaining on a given CPU through its execution. | ||||
| 
 | ||||
| 	  Say N if you are unsure. | ||||
| 
 | ||||
| endchoice | ||||
| 	  systems.  Classic RCU is the default.  Note that the | ||||
| 	  PREEMPT_RCU symbol is used to select/deselect this option. | ||||
|  |  | |||
|  | @ -52,8 +52,23 @@ config PREEMPT | |||
| 
 | ||||
| endchoice | ||||
| 
 | ||||
| config PREEMPT_RCU | ||||
| 	bool "Preemptible RCU" | ||||
| 	depends on PREEMPT | ||||
| 	default n | ||||
| 	help | ||||
| 	  This option reduces the latency of the kernel by making certain | ||||
| 	  RCU sections preemptible. Normally RCU code is non-preemptible, if | ||||
| 	  this option is selected then read-only RCU sections become | ||||
| 	  preemptible. This helps latency, but may expose bugs due to | ||||
| 	  now-naive assumptions about each RCU read-side critical section | ||||
| 	  remaining on a given CPU through its execution. | ||||
| 
 | ||||
| 	  Say N if you are unsure. | ||||
| 
 | ||||
| config RCU_TRACE | ||||
| 	bool "Enable tracing for RCU - currently stats in debugfs" | ||||
| 	depends on PREEMPT_RCU | ||||
| 	select DEBUG_FS | ||||
| 	default y | ||||
| 	help | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Paul E. McKenney
						Paul E. McKenney