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. */ |