diff options
Diffstat (limited to 'init')
| -rw-r--r-- | init/Kconfig | 60 | ||||
| -rw-r--r-- | init/main.c | 13 | 
2 files changed, 45 insertions, 28 deletions
diff --git a/init/Kconfig b/init/Kconfig index 4e337906016e..be788c0957d4 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -745,8 +745,8 @@ config DEBUG_BLK_CGROUP  endif # CGROUPS  menuconfig NAMESPACES -	bool "Namespaces support" if EMBEDDED -	default !EMBEDDED +	bool "Namespaces support" if EXPERT +	default !EXPERT  	help  	  Provides the way to make tasks work with different objects using  	  the same id. For example same IPC id may refer to different objects @@ -899,23 +899,31 @@ config SYSCTL  config ANON_INODES  	bool -menuconfig EMBEDDED -	bool "Configure standard kernel features (for small systems)" +menuconfig EXPERT +	bool "Configure standard kernel features (expert users)"  	help  	  This option allows certain base kernel options and settings            to be disabled or tweaked. This is for specialized            environments which can tolerate a "non-standard" kernel.            Only use this if you really know what you are doing. +config EMBEDDED +	bool "Embedded system" +	select EXPERT +	help +	  This option should be enabled if compiling the kernel for +	  an embedded system so certain expert options are available +	  for configuration. +  config UID16 -	bool "Enable 16-bit UID system calls" if EMBEDDED +	bool "Enable 16-bit UID system calls" if EXPERT  	depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)  	default y  	help  	  This enables the legacy 16-bit UID syscall wrappers.  config SYSCTL_SYSCALL -	bool "Sysctl syscall support" if EMBEDDED +	bool "Sysctl syscall support" if EXPERT  	depends on PROC_SYSCTL  	default y  	select SYSCTL @@ -932,7 +940,7 @@ config SYSCTL_SYSCALL  	  If unsure say Y here.  config KALLSYMS -	 bool "Load all symbols for debugging/ksymoops" if EMBEDDED +	 bool "Load all symbols for debugging/ksymoops" if EXPERT  	 default y  	 help  	   Say Y here to let the kernel print out symbolic crash information and @@ -963,7 +971,7 @@ config KALLSYMS_EXTRA_PASS  config HOTPLUG -	bool "Support for hot-pluggable devices" if EMBEDDED +	bool "Support for hot-pluggable devices" if EXPERT  	default y  	help  	  This option is provided for the case where no hotplug or uevent @@ -973,7 +981,7 @@ config HOTPLUG  config PRINTK  	default y -	bool "Enable support for printk" if EMBEDDED +	bool "Enable support for printk" if EXPERT  	help  	  This option enables normal printk support. Removing it  	  eliminates most of the message strings from the kernel image @@ -982,7 +990,7 @@ config PRINTK  	  strongly discouraged.  config BUG -	bool "BUG() support" if EMBEDDED +	bool "BUG() support" if EXPERT  	default y  	help            Disabling this option eliminates support for BUG and WARN, reducing @@ -993,12 +1001,12 @@ config BUG  config ELF_CORE  	default y -	bool "Enable ELF core dumps" if EMBEDDED +	bool "Enable ELF core dumps" if EXPERT  	help  	  Enable support for generating core dumps. Disabling saves about 4k.  config PCSPKR_PLATFORM -	bool "Enable PC-Speaker support" if EMBEDDED +	bool "Enable PC-Speaker support" if EXPERT  	depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES  	default y  	help @@ -1007,14 +1015,14 @@ config PCSPKR_PLATFORM  config BASE_FULL  	default y -	bool "Enable full-sized data structures for core" if EMBEDDED +	bool "Enable full-sized data structures for core" if EXPERT  	help  	  Disabling this option reduces the size of miscellaneous core  	  kernel data structures. This saves memory on small machines,  	  but may reduce performance.  config FUTEX -	bool "Enable futex support" if EMBEDDED +	bool "Enable futex support" if EXPERT  	default y  	select RT_MUTEXES  	help @@ -1023,7 +1031,7 @@ config FUTEX  	  run glibc-based applications correctly.  config EPOLL -	bool "Enable eventpoll support" if EMBEDDED +	bool "Enable eventpoll support" if EXPERT  	default y  	select ANON_INODES  	help @@ -1031,7 +1039,7 @@ config EPOLL  	  support for epoll family of system calls.  config SIGNALFD -	bool "Enable signalfd() system call" if EMBEDDED +	bool "Enable signalfd() system call" if EXPERT  	select ANON_INODES  	default y  	help @@ -1041,7 +1049,7 @@ config SIGNALFD  	  If unsure, say Y.  config TIMERFD -	bool "Enable timerfd() system call" if EMBEDDED +	bool "Enable timerfd() system call" if EXPERT  	select ANON_INODES  	default y  	help @@ -1051,7 +1059,7 @@ config TIMERFD  	  If unsure, say Y.  config EVENTFD -	bool "Enable eventfd() system call" if EMBEDDED +	bool "Enable eventfd() system call" if EXPERT  	select ANON_INODES  	default y  	help @@ -1061,7 +1069,7 @@ config EVENTFD  	  If unsure, say Y.  config SHMEM -	bool "Use full shmem filesystem" if EMBEDDED +	bool "Use full shmem filesystem" if EXPERT  	default y  	depends on MMU  	help @@ -1072,7 +1080,7 @@ config SHMEM  	  which may be appropriate on small systems without swap.  config AIO -	bool "Enable AIO support" if EMBEDDED +	bool "Enable AIO support" if EXPERT  	default y  	help  	  This option enables POSIX asynchronous I/O which may by used @@ -1149,16 +1157,16 @@ endmenu  config VM_EVENT_COUNTERS  	default y -	bool "Enable VM event counters for /proc/vmstat" if EMBEDDED +	bool "Enable VM event counters for /proc/vmstat" if EXPERT  	help  	  VM event counters are needed for event counts to be shown.  	  This option allows the disabling of the VM event counters -	  on EMBEDDED systems.  /proc/vmstat will only show page counts +	  on EXPERT systems.  /proc/vmstat will only show page counts  	  if VM event counters are disabled.  config PCI_QUIRKS  	default y -	bool "Enable PCI quirk workarounds" if EMBEDDED +	bool "Enable PCI quirk workarounds" if EXPERT  	depends on PCI  	help  	  This enables workarounds for various PCI chipset @@ -1167,7 +1175,7 @@ config PCI_QUIRKS  config SLUB_DEBUG  	default y -	bool "Enable SLUB debugging support" if EMBEDDED +	bool "Enable SLUB debugging support" if EXPERT  	depends on SLUB && SYSFS  	help  	  SLUB has extensive debug support features. Disabling these can @@ -1211,7 +1219,7 @@ config SLUB  	   a slab allocator.  config SLOB -	depends on EMBEDDED +	depends on EXPERT  	bool "SLOB (Simple Allocator)"  	help  	   SLOB replaces the stock allocator with a drastically simpler @@ -1222,7 +1230,7 @@ endchoice  config MMAP_ALLOW_UNINITIALIZED  	bool "Allow mmapped anonymous memory to be uninitialized" -	depends on EMBEDDED && !MMU +	depends on EXPERT && !MMU  	default n  	help  	  Normally, and according to the Linux spec, anonymous memory obtained diff --git a/init/main.c b/init/main.c index 00799c1d4628..33c37c379e96 100644 --- a/init/main.c +++ b/init/main.c @@ -96,6 +96,15 @@ static inline void mark_rodata_ro(void) { }  extern void tc_init(void);  #endif +/* + * Debug helper: via this flag we know that we are in 'early bootup code' + * where only the boot processor is running with IRQ disabled.  This means + * two things - IRQ must not be enabled before the flag is cleared and some + * operations which are not allowed with IRQ disabled are allowed while the + * flag is set. + */ +bool early_boot_irqs_disabled __read_mostly; +  enum system_states system_state __read_mostly;  EXPORT_SYMBOL(system_state); @@ -554,7 +563,7 @@ asmlinkage void __init start_kernel(void)  	cgroup_init_early();  	local_irq_disable(); -	early_boot_irqs_off(); +	early_boot_irqs_disabled = true;  /*   * Interrupts are still disabled. Do necessary setups, then @@ -621,7 +630,7 @@ asmlinkage void __init start_kernel(void)  	if (!irqs_disabled())  		printk(KERN_CRIT "start_kernel(): bug: interrupts were "  				 "enabled early\n"); -	early_boot_irqs_on(); +	early_boot_irqs_disabled = false;  	local_irq_enable();  	/* Interrupts are enabled now so all GFP allocations are safe. */  |