diff options
Diffstat (limited to 'init')
| -rw-r--r-- | init/Kconfig | 34 | ||||
| -rw-r--r-- | init/main.c | 18 | 
2 files changed, 13 insertions, 39 deletions
| diff --git a/init/Kconfig b/init/Kconfig index 9afb971497f4..058e3671fa11 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -470,7 +470,6 @@ choice  config TREE_RCU  	bool "Tree-based hierarchical RCU"  	depends on !PREEMPT && SMP -	select IRQ_WORK  	help  	  This option selects the RCU implementation that is  	  designed for very large SMP system with hundreds or @@ -480,7 +479,6 @@ config TREE_RCU  config PREEMPT_RCU  	bool "Preemptible tree-based hierarchical RCU"  	depends on PREEMPT -	select IRQ_WORK  	help  	  This option selects the RCU implementation that is  	  designed for very large SMP systems with hundreds or @@ -501,9 +499,17 @@ config TINY_RCU  endchoice +config SRCU +	bool +	help +	  This option selects the sleepable version of RCU. This version +	  permits arbitrary sleeping or blocking within RCU read-side critical +	  sections. +  config TASKS_RCU  	bool "Task_based RCU implementation using voluntary context switch"  	default n +	select SRCU  	help  	  This option enables a task-based RCU implementation that uses  	  only voluntary context switch (not preemption!), idle, and @@ -668,9 +674,10 @@ config RCU_BOOST  config RCU_KTHREAD_PRIO  	int "Real-time priority to use for RCU worker threads" -	range 1 99 -	depends on RCU_BOOST -	default 1 +	range 1 99 if RCU_BOOST +	range 0 99 if !RCU_BOOST +	default 1 if RCU_BOOST +	default 0 if !RCU_BOOST  	help  	  This option specifies the SCHED_FIFO priority value that will be  	  assigned to the rcuc/n and rcub/n threads and is also the value @@ -1280,22 +1287,6 @@ source "usr/Kconfig"  endif -config INIT_FALLBACK -	bool "Fall back to defaults if init= parameter is bad" -	default y -	help -	  If enabled, the kernel will try the default init binaries if an -	  explicit request from the init= parameter fails. - -	  This can have unexpected effects.  For example, booting -	  with init=/sbin/kiosk_app will run /sbin/init or even /bin/sh -	  if /sbin/kiosk_app cannot be executed. - -	  The default value of Y is consistent with historical behavior. -	  Selecting N is likely to be more appropriate for most uses, -	  especially on kiosks and on kernels that are intended to be -	  run under the control of a script. -  config CC_OPTIMIZE_FOR_SIZE  	bool "Optimize for size"  	help @@ -1595,6 +1586,7 @@ config PERF_EVENTS  	depends on HAVE_PERF_EVENTS  	select ANON_INODES  	select IRQ_WORK +	select SRCU  	help  	  Enable kernel support for various performance events provided  	  by software and hardware. diff --git a/init/main.c b/init/main.c index 61b993767db5..6f0f1c5ff8cc 100644 --- a/init/main.c +++ b/init/main.c @@ -87,10 +87,6 @@  #include <asm/sections.h>  #include <asm/cacheflush.h> -#ifdef CONFIG_X86_LOCAL_APIC -#include <asm/smp.h> -#endif -  static int kernel_init(void *);  extern void init_IRQ(void); @@ -351,15 +347,6 @@ __setup("rdinit=", rdinit_setup);  #ifndef CONFIG_SMP  static const unsigned int setup_max_cpus = NR_CPUS; -#ifdef CONFIG_X86_LOCAL_APIC -static void __init smp_init(void) -{ -	APIC_init_uniprocessor(); -} -#else -#define smp_init()	do { } while (0) -#endif -  static inline void setup_nr_cpu_ids(void) { }  static inline void smp_prepare_cpus(unsigned int maxcpus) { }  #endif @@ -966,13 +953,8 @@ static int __ref kernel_init(void *unused)  		ret = run_init_process(execute_command);  		if (!ret)  			return 0; -#ifndef CONFIG_INIT_FALLBACK  		panic("Requested init %s failed (error %d).",  		      execute_command, ret); -#else -		pr_err("Failed to execute %s (error %d).  Attempting defaults...\n", -		       execute_command, ret); -#endif  	}  	if (!try_to_run_init_process("/sbin/init") ||  	    !try_to_run_init_process("/etc/init") || |