config ARCHstringoption env="ARCH"config KERNELVERSIONstringoption env="KERNELVERSION"config DEFCONFIG_LISTstringdepends on !UMLoption defconfig_listdefault "/lib/modules/$UNAME_RELEASE/.config"default "/etc/kernel-config"default "/boot/config-$UNAME_RELEASE"default "$ARCH_DEFCONFIG"default "arch/$ARCH/defconfig"config CONSTRUCTORSbooldepends on !UMLconfig IRQ_WORKboolconfig BUILDTIME_EXTABLE_SORTboolmenu "General setup"config BROKENboolconfig BROKEN_ON_SMPbooldepends on BROKEN || !SMPdefault yconfig INIT_ENV_ARG_LIMITintdefault 32 if !UMLdefault 128 if UMLhelpMaximum of each of the number of arguments and environmentvariables passed to init from the kernel command line.config CROSS_COMPILEstring "Cross-compiler tool prefix"helpSame as running 'make CROSS_COMPILE=prefix-' but stored fordefault make runs in this kernel build directory. You don'tneed to set this unless you want the configured kernel builddirectory to select the cross-compiler automatically.config COMPILE_TESTbool "Compile also drivers which will not load"default nhelpSome drivers can be compiled on a different platform than they areintended to be run on. Despite they cannot be loaded there (or evenwhen they load they cannot be used due to missing HW support),developers still, opposing to distributors, might want to build suchdrivers to compile-test them.If you are a developer and want to build everything available, say Yhere. If you are a user/distributor, say N here to exclude uselessdrivers to be distributed.config LOCALVERSIONstring "Local version - append to kernel release"helpAppend an extra string to the end of your kernel version.This will show up when you type uname, for example.The string you set here will be appended after the contents ofany files with a filename matching localversion* in yourobject and source tree, in that order. Your total string canbe a maximum of 64 characters.config LOCALVERSION_AUTObool "Automatically append version information to the version string"default yhelpThis will try to automatically determine if the current tree is arelease tree by looking for git tags that belong to the currenttop of tree revision.A string of the format -gxxxxxxxx will be added to the localversionif a git-based tree is found. The string generated by this will beappended after any matching localversion* files, and after the valueset in CONFIG_LOCALVERSION.(The actual string used here is the first eight characters producedby running the command:$ git rev-parse --verify HEADwhich is done within the script "scripts/setlocalversion".)config HAVE_KERNEL_GZIPboolconfig HAVE_KERNEL_BZIP2boolconfig HAVE_KERNEL_LZMAboolconfig HAVE_KERNEL_XZboolconfig HAVE_KERNEL_LZOboolconfig HAVE_KERNEL_LZ4boolchoiceprompt "Kernel compression mode"default KERNEL_GZIPdepends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4helpThe linux kernel is a kind of self-extracting executable.Several compression algorithms are available, which differin efficiency, compression and decompression speed.Compression speed is only relevant when building a kernel.Decompression speed is relevant at each boot.If you have any problems with bzip2 or lzma compressedkernels, mail me (Alain Knaff) <alain@knaff.lu>. (An olderversion of this functionality (bzip2 only), for 2.4, wassupplied by Christian Ludwig)High compression options are mostly useful for users, whoare low on disk space (embedded systems), but for whom ramsize matters less.If in doubt, select 'gzip'config KERNEL_GZIPbool "Gzip"depends on HAVE_KERNEL_GZIPhelpThe old and tried gzip compression. It provides a good balancebetween compression ratio and decompression speed.config KERNEL_BZIP2bool "Bzip2"depends on HAVE_KERNEL_BZIP2helpIts compression ratio and speed is intermediate.Decompression speed is slowest among the choices. The kernelsize is about 10% smaller with bzip2, in comparison to gzip.Bzip2 uses a large amount of memory. For modern kernels youwill need at least 8MB RAM or more for booting.config KERNEL_LZMAbool "LZMA"depends on HAVE_KERNEL_LZMAhelpThis compression algorithm's ratio is best. Decompression speedis between gzip and bzip2. Compression is slowest.The kernel size is about 33% smaller with LZMA in comparison to gzip.config KERNEL_XZbool "XZ"depends on HAVE_KERNEL_XZhelpXZ uses the LZMA2 algorithm and instruction set specificBCJ filters which can improve compression ratio of executablecode. The size of the kernel is about 30% smaller with XZ incomparison to gzip. On architectures for which there is a BCJfilter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZwill create a few percent smaller kernel than plain LZMA.The speed is about the same as with LZMA: The decompressionspeed of XZ is better than that of bzip2 but worse than gzipand LZO. Compression is slow.config KERNEL_LZObool "LZO"depends on HAVE_KERNEL_LZOhelpIts compression ratio is the poorest among the choices. The kernelsize is about 10% bigger than gzip; however its speed(both compression and decompression) is the fastest.config KERNEL_LZ4bool "LZ4"depends on HAVE_KERNEL_LZ4helpLZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.A preliminary version of LZ4 de/compression tool is available at<https://code.google.com/p/lz4/>.Its compression ratio is worse than LZO. The size of the kernelis about 8% bigger than LZO. But the decompression speed isfaster than LZO.endchoiceconfig DEFAULT_HOSTNAMEstring "Default hostname"default "(none)"helpThis option determines the default system hostname before userspacecalls sethostname(2). The kernel traditionally uses "(none)" here,but you may wish to use a different default here to make a minimalsystem more usable with less configuration.config SWAPbool "Support for paging of anonymous memory (swap)"depends on MMU && BLOCKdefault yhelpThis option allows you to choose whether you want to have supportfor so called swap devices or swap files in your kernel that areused to provide more virtual memory than the actual RAM presentin your computer. If unsure say Y.config SYSVIPCbool "System V IPC"---help---Inter Process Communication is a suite of library functions andsystem calls which let processes (running programs) synchronize andexchange information. It is generally considered to be a good thing,and some programs won't run unless you say Y here. In particular, ifyou want to run the DOS emulator dosemu under Linux (read theDOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),you'll need to say Y here.You can find documentation about IPC with "info ipc" and also insection 6.4 of the Linux Programmer's Guide, available from<http://www.tldp.org/guides.html>.config SYSVIPC_SYSCTLbooldepends on SYSVIPCdepends on SYSCTLdefault yconfig POSIX_MQUEUEbool "POSIX Message Queues"depends on NET---help---POSIX variant of message queues is a part of IPC. In POSIX messagequeues every message has a priority which decides about successionof receiving it by a process. If you want to compile and runprograms written e.g. for Solaris with use of its POSIX messagequeues (functions mq_*) say Y here.POSIX message queues are visible as a filesystem called 'mqueue'and can be mounted somewhere if you want to do filesystemoperations on message queues.If unsure, say Y.config POSIX_MQUEUE_SYSCTLbooldepends on POSIX_MQUEUEdepends on SYSCTLdefault yconfig CROSS_MEMORY_ATTACHbool "Enable process_vm_readv/writev syscalls"depends on MMUdefault yhelpEnabling this option adds the system calls process_vm_readv andprocess_vm_writev which allow a process with the correct privilegesto directly read from or write to another process' address space.See the man page for more details.config FHANDLEbool "open by fhandle syscalls"select EXPORTFShelpIf you say Y here, a user level program will be able to mapfile names to handle and then later use the handle fordifferent file system operations. This is useful in implementinguserspace file servers, which now track files using handles insteadof names. The handle would remain the same even if file namesget renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)syscalls.config USELIBbool "uselib syscall"default yhelpThis option enables the uselib syscall, a system call used in thedynamic linker from libc5 and earlier. glibc does not use thissystem call. If you intend to run programs built on libc5 orearlier, you may need to enable this syscall. Current systemsrunning glibc can safely disable this.config AUDITbool "Auditing support"depends on NEThelpEnable auditing infrastructure that can be used with anotherkernel subsystem, such as SELinux (which requires this forlogging of avc messages output). Does not do system-callauditing without CONFIG_AUDITSYSCALL.config HAVE_ARCH_AUDITSYSCALLboolconfig AUDITSYSCALLbool "Enable system-call auditing support"depends on AUDIT && HAVE_ARCH_AUDITSYSCALLdefault y if SECURITY_SELINUXhelpEnable low-overhead system-call auditing infrastructure thatcan be used independently or with another kernel subsystem,such as SELinux.config AUDIT_WATCHdef_bool ydepends on AUDITSYSCALLselect FSNOTIFYconfig AUDIT_TREEdef_bool ydepends on AUDITSYSCALLselect FSNOTIFYsource "kernel/irq/Kconfig"source "kernel/time/Kconfig"menu "CPU/Task time and stats accounting"config VIRT_CPU_ACCOUNTINGboolchoiceprompt "Cputime accounting"default TICK_CPU_ACCOUNTING if !PPC64default VIRT_CPU_ACCOUNTING_NATIVE if PPC64# Kind of a stub config for the pure tick based cputime accountingconfig TICK_CPU_ACCOUNTINGbool "Simple tick based cputime accounting"depends on !S390 && !NO_HZ_FULLhelpThis is the basic tick based cputime accounting that maintainsstatistics about user, system and idle time spent on per jiffiesgranularity.If unsure, say Y.config VIRT_CPU_ACCOUNTING_NATIVEbool "Deterministic task and CPU time accounting"depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULLselect VIRT_CPU_ACCOUNTINGhelpSelect this option to enable more accurate task and CPU timeaccounting. This is done by reading a CPU counter on eachkernel entry and exit and on transitions within the kernelbetween system, softirq and hardirq state, so there is asmall performance impact. In the case of s390 or IBM POWER > 5,this also enables accounting of stolen time on logically-partitionedsystems.config VIRT_CPU_ACCOUNTING_GENbool "Full dynticks CPU time accounting"depends on HAVE_CONTEXT_TRACKINGdepends on HAVE_VIRT_CPU_ACCOUNTING_GENselect VIRT_CPU_ACCOUNTINGselect CONTEXT_TRACKINGhelpSelect this option to enable task and CPU time accounting on fulldynticks systems. This accounting is implemented by watching everykernel-user boundaries using the context tracking subsystem.The accounting is thus performed at the expense of some significantoverhead.For now this is only useful if you are working on the fulldynticks subsystem development.If unsure, say N.config IRQ_TIME_ACCOUNTINGbool "Fine granularity task level IRQ time accounting"depends on HAVE_IRQ_TIME_ACCOUNTING && !NO_HZ_FULLhelpSelect this option to enable fine granularity task irq timeaccounting. This is done by reading a timestamp on eachtransitions between softirq and hardirq state, so there can be asmall performance impact.If in doubt, say N here.endchoiceconfig BSD_PROCESS_ACCTbool "BSD Process Accounting"helpIf you say Y here, a user level program will be able to instruct thekernel (via a special system call) to write process accountinginformation to a file: whenever a process exits, information aboutthat process will be appended to the file by the kernel. Theinformation includes things such as creation time, owning user,command name, memory usage, controlling terminal etc. (the completelist is in the struct acct in <file:include/linux/acct.h>). It isup to the user level program to do useful things with thisinformation. This is generally a good idea, so say Y.config BSD_PROCESS_ACCT_V3bool "BSD Process Accounting version 3 file format"depends on BSD_PROCESS_ACCTdefault nhelpIf you say Y here, the process accounting information is writtenin a new file format that also logs the process IDs of eachprocess and it's parent. Note that this file format is incompatiblewith previous v0/v1/v2 file formats, so you will need updated toolsfor processing it. A preliminary version of these tools is availableat <http://www.gnu.org/software/acct/>.config TASKSTATSbool "Export task/process statistics through netlink"depends on NETdefault nhelpExport selected statistics for tasks/processes through thegeneric netlink interface. Unlike BSD process accounting, thestatistics are available during the lifetime of tasks/processes asresponses to commands. Like BSD accounting, they are sent to userspace on task exit.Say N if unsure.config TASK_DELAY_ACCTbool "Enable per-task delay accounting"depends on TASKSTATShelpCollect information on time spent by a task waiting for systemresources like cpu, synchronous block I/O completion and swappingin pages. Such statistics can help in setting a task's prioritiesrelative to other tasks for cpu, io, rss limits etc.Say N if unsure.config TASK_XACCTbool "Enable extended accounting over taskstats"depends on TASKSTATShelpCollect extended task accounting data and send the datato userland for processing over the taskstats interface.Say N if unsure.config TASK_IO_ACCOUNTINGbool "Enable per-task storage I/O accounting"depends on TASK_XACCThelpCollect information on the number of bytes of storage I/O which thistask has caused.Say N if unsure.endmenu # "CPU/Task time and stats accounting"menu "RCU Subsystem"choiceprompt "RCU Implementation"default TREE_RCUconfig TREE_RCUbool "Tree-based hierarchical RCU"depends on !PREEMPT && SMPhelpThis option selects the RCU implementation that isdesigned for very large SMP system with hundreds orthousands of CPUs. It also scales down nicely tosmaller systems.config PREEMPT_RCUbool "Preemptible tree-based hierarchical RCU"depends on PREEMPThelpThis option selects the RCU implementation that isdesigned for very large SMP systems with hundreds orthousands of CPUs, but for which real-time responseis also required. It also scales down nicely tosmaller systems.Select this option if you are unsure.config TINY_RCUbool "UP-only small-memory-footprint RCU"depends on !PREEMPT && !SMPhelpThis option selects the RCU implementation that isdesigned for UP systems from which real-time responseis not required. This option greatly reduces thememory footprint of RCU.endchoiceconfig SRCUboolhelpThis option selects the sleepable version of RCU. This versionpermits arbitrary sleeping or blocking within RCU read-side criticalsections.config TASKS_RCUbool "Task_based RCU implementation using voluntary context switch"default nselect SRCUhelpThis option enables a task-based RCU implementation that usesonly voluntary context switch (not preemption!), idle, anduser-mode execution as quiescent states.If unsure, say N.config RCU_STALL_COMMONdef_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE )helpThis option enables RCU CPU stall code that is common betweenthe TINY and TREE variants of RCU. The purpose is to allowthe tiny variants to disable RCU CPU stall warnings, whilemaking these warnings mandatory for the tree variants.config CONTEXT_TRACKINGboolconfig RCU_USER_QSbool "Consider userspace as in RCU extended quiescent state"depends on HAVE_CONTEXT_TRACKING && SMPselect CONTEXT_TRACKINGhelpThis option sets hooks on kernel / userspace boundaries andputs RCU in extended quiescent state when the CPU runs inuserspace. It means that when a CPU runs in userspace, it isexcluded from the global RCU state machine and thus doesn'ttry to keep the timer tick on for RCU.Unless you want to hack and help the development of the fulldynticks mode, you shouldn't enable this option. It alsoadds unnecessary overhead.If unsure say Nconfig CONTEXT_TRACKING_FORCEbool "Force context tracking"depends on CONTEXT_TRACKINGdefault y if !NO_HZ_FULLhelpThe major pre-requirement for full dynticks to work is tosupport the context tracking subsystem. But there are alsoother dependencies to provide in order to make the fulldynticks working.This option stands for testing when an arch implements thecontext tracking backend but doesn't yet fullfill all therequirements to make the full dynticks feature working.Without the full dynticks, there is no way to test the supportfor context tracking and the subsystems that rely on it: RCUuserspace extended quiescent state and tickless cputimeaccounting. This option copes with the absence of the fulldynticks subsystem by forcing the context tracking on allCPUs in the system.Say Y only if you're working on the development of anarchitecture backend for the context tracking.Say N otherwise, this option brings an overhead that youdon't want in production.config RCU_FANOUTint "Tree-based hierarchical RCU fanout value"range 2 64 if 64BITrange 2 32 if !64BITdepends on TREE_RCU || PREEMPT_RCUdefault 64 if 64BITdefault 32 if !64BIThelpThis option controls the fanout of hierarchical implementationsof RCU, allowing RCU to work efficiently on machines withlarge numbers of CPUs. This value must be at least the fourthroot of NR_CPUS, which allows NR_CPUS to be insanely large.The default value of RCU_FANOUT should be used for productionsystems, but if you are stress-testing the RCU implementationitself, small RCU_FANOUT values allow you to test large-systemcode paths on small(er) systems.Select a specific number if testing RCU itself.Take the default if unsure.config RCU_FANOUT_LEAFint "Tree-based hierarchical RCU leaf-level fanout value"range 2 RCU_FANOUT if 64BITrange 2 RCU_FANOUT if !64BITdepends on TREE_RCU || PREEMPT_RCUdefault 16helpThis option controls the leaf-level fanout of hierarchicalimplementations of RCU, and allows trading off cache missesagainst lock contention. Systems that synchronize theirscheduling-clock interrupts for energy-efficiency reasons willwant the default because the smaller leaf-level fanout keepslock contention levels acceptably low. Very large systems(hundreds or thousands of CPUs) will instead want to set thisvalue to the maximum value possible in order to reduce thenumber of cache misses incurred during RCU's grace-periodinitialization. These systems tend to run CPU-bound, and thusare not helped by synchronized interrupts, and thus tend toskew them, which reduces lock contention enough that largeleaf-level fanouts work well.Select a specific number if testing RCU itself.Select the maximum permissible value for large systems.Take the default if unsure.config RCU_FANOUT_EXACTbool "Disable tree-based hierarchical RCU auto-balancing"depends on TREE_RCU || PREEMPT_RCUdefault nhelpThis option forces use of the exact RCU_FANOUT value specified,regardless of imbalances in the hierarchy. This is useful fortesting RCU itself, and might one day be useful on systems withstrong NUMA behavior.Without RCU_FANOUT_EXACT, the code will balance the hierarchy.Say N if unsure.config RCU_FAST_NO_HZbool "Accelerate last non-dyntick-idle CPU's grace periods"depends on NO_HZ_COMMON && SMPdefault nhelpThis option permits CPUs to enter dynticks-idle state even ifthey have RCU callbacks queued, and prevents RCU from wakingthese CPUs up more than roughly once every four jiffies (bydefault, you can adjust this using the rcutree.rcu_idle_gp_delayparameter), thus improving energy efficiency. On the otherhand, this option increases the duration of RCU grace periods,for example, slowing down synchronize_rcu().Say Y if energy efficiency is critically important, and youdon't care about increased grace-period durations.Say N if you are unsure.config TREE_RCU_TRACEdef_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )select DEBUG_FShelpThis option provides tracing for the TREE_RCU andPREEMPT_RCU implementations, permitting Makefile totrivially select kernel/rcutree_trace.c.config RCU_BOOSTbool "Enable RCU priority boosting"depends on RT_MUTEXES && PREEMPT_RCUdefault nhelpThis option boosts the priority of preempted RCU readers thatblock the current preemptible RCU grace period for too long.This option also prevents heavy loads from blocking RCUcallback invocation for all flavors of RCU.Say Y here if you are working with real-time apps or heavy loadsSay N here if you are unsure.config RCU_KTHREAD_PRIOint "Real-time priority to use for RCU worker threads"range 1 99 if RCU_BOOSTrange 0 99 if !RCU_BOOSTdefault 1 if RCU_BOOSTdefault 0 if !RCU_BOOSThelpThis option specifies the SCHED_FIFO priority value that will beassigned to the rcuc/n and rcub/n threads and is also the valueused for RCU_BOOST (if enabled). If you are working with areal-time application that has one or more CPU-bound threadsrunning at a real-time priority level, you should setRCU_KTHREAD_PRIO to a priority higher than the highest-priorityreal-time CPU-bound application thread. The default RCU_KTHREAD_PRIOvalue of 1 is appropriate in the common case, which is real-timeapplications that do not have any CPU-bound threads.Some real-time applications might not have a single real-timethread that saturates a given CPU, but instead might havemultiple real-time threads that, taken together, fully utilizethat CPU. In this case, you should set RCU_KTHREAD_PRIO toa priority higher than the lowest-priority thread that isconspiring to prevent the CPU from running any non-real-timetasks. For example, if one thread at priority 10 and anotherthread at priority 5 are between themselves fully consumingthe CPU time on a given CPU, then RCU_KTHREAD_PRIO should beset to priority 6 or higher.Specify the real-time priority, or take the default if unsure.config RCU_BOOST_DELAYint "Milliseconds to delay boosting after RCU grace-period start"range 0 3000depends on RCU_BOOSTdefault 500helpThis option specifies the time to wait after the beginning ofa given grace period before priority-boosting preempted RCUreaders blocking that grace period. Note that any RCU readerblocking an expedited RCU grace period is boosted immediately.Accept the default if unsure.config RCU_NOCB_CPUbool "Offload RCU callback processing from boot-selected CPUs"depends on TREE_RCU || PREEMPT_RCUdefault nhelpUse this option to reduce OS jitter for aggressive HPC orreal-time workloads. It can also be used to offload RCUcallback invocation to energy-efficient CPUs in battery-poweredasymmetric multiprocessors.This option offloads callback invocation from the set ofCPUs specified at boot time by the rcu_nocbs parameter.For each such CPU, a kthread ("rcuox/N") will be created toinvoke callbacks, where the "N" is the CPU being offloaded,and where the "x" is "b" for RCU-bh, "p" for RCU-preempt, and"s" for RCU-sched. Nothing prevents this kthread from runningon the specified CPUs, but (1) the kthreads may be preemptedbetween each callback, and (2) affinity or cgroups can be usedto force the kthreads to run on whatever set of CPUs is desired.Say Y here if you want to help to debug reduced OS jitter.Say N here if you are unsure.choiceprompt "Build-forced no-CBs CPUs"default RCU_NOCB_CPU_NONEdepends on RCU_NOCB_CPUhelpThis option allows no-CBs CPUs (whose RCU callbacks are invokedfrom kthreads rather than from softirq context) to be specifiedat build time. Additional no-CBs CPUs may be specified bythe rcu_nocbs= boot parameter.config RCU_NOCB_CPU_NONEbool "No build_forced no-CBs CPUs"helpThis option does not force any of the CPUs to be no-CBs CPUs.Only CPUs designated by the rcu_nocbs= boot parameter will beno-CBs CPUs, whose RCU callbacks will be invoked by per-CPUkthreads whose names begin with "rcuo". All other CPUs willinvoke their own RCU callbacks in softirq context.Select this option if you want to choose no-CBs CPUs atboot time, for example, to allow testing of different no-CBsconfigurations without having to rebuild the kernel each time.config RCU_NOCB_CPU_ZERObool "CPU 0 is a build_forced no-CBs CPU"helpThis option forces CPU 0 to be a no-CBs CPU, so that its RCUcallbacks are invoked by a per-CPU kthread whose name beginswith "rcuo". Additional CPUs may be designated as no-CBsCPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs.All other CPUs will invoke their own RCU callbacks in softirqcontext.Select this if CPU 0 needs to be a no-CBs CPU for real-timeor energy-efficiency reasons, but the real reason it existsis to ensure that randconfig testing covers mixed systems.config RCU_NOCB_CPU_ALLbool "All CPUs are build_forced no-CBs CPUs"helpThis option forces all CPUs to be no-CBs CPUs. The rcu_nocbs=boot parameter will be ignored. All CPUs' RCU callbacks willbe executed in the context of per-CPU rcuo kthreads created forthis purpose. Assuming that the kthreads whose names start with"rcuo" are bound to "housekeeping" CPUs, this reduces OS jitteron the remaining CPUs, but might decrease memory locality duringRCU-callback invocation, thus potentially degrading throughput.Select this if all CPUs need to be no-CBs CPUs for real-timeor energy-efficiency reasons.endchoiceendmenu # "RCU Subsystem"config BUILD_BIN2Cbooldefault nconfig IKCONFIGtristate "Kernel .config support"select BUILD_BIN2C---help---This option enables the complete Linux kernel ".config" filecontents to be saved in the kernel. It provides documentationof which kernel options are used in a running kernel or in anon-disk kernel. This information can be extracted from the kernelimage file with the script scripts/extract-ikconfig and used asinput to rebuild the current kernel or to build another kernel.It can also be extracted from a running kernel by reading/proc/config.gz if enabled (below).config IKCONFIG_PROCbool "Enable access to .config through /proc/config.gz"depends on IKCONFIG && PROC_FS---help---This option enables access to the kernel configuration filethrough /proc/config.gz.config LOG_BUF_SHIFTint "Kernel log buffer size (16 => 64KB, 17 => 128KB)"range 12 21default 17depends on PRINTKhelpSelect the minimal kernel log buffer size as a power of 2.The final size is affected by LOG_CPU_MAX_BUF_SHIFT configparameter, see below. Any higher size also might be forcedby "log_buf_len" boot parameter.Examples:17 => 128 KB16 => 64 KB15 => 32 KB14 => 16 KB13 => 8 KB12 => 4 KBconfig LOG_CPU_MAX_BUF_SHIFTint "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"depends on SMPrange 0 21default 12 if !BASE_SMALLdefault 0 if BASE_SMALLdepends on PRINTKhelpThis option allows to increase the default ring buffer sizeaccording to the number of CPUs. The value defines the contributionof each CPU as a power of 2. The used space is typically only fewlines however it might be much more when problems are reported,e.g. backtraces.The increased size means that a new buffer has to be allocated andthe original static one is unused. It makes sense only on systemswith more CPUs. Therefore this value is used only when the sum ofcontributions is greater than the half of the default kernel ringbuffer as defined by LOG_BUF_SHIFT. The default values are setso that more than 64 CPUs are needed to trigger the allocation.Also this option is ignored when "log_buf_len" kernel parameter isused as it forces an exact (power of two) size of the ring buffer.The number of possible CPUs is used for this computation ignoringhotplugging making the compuation optimal for the the worst casescenerio while allowing a simple algorithm to be used from bootup.Examples shift values and their meaning:17 => 128 KB for each CPU16 => 64 KB for each CPU15 => 32 KB for each CPU14 => 16 KB for each CPU13 => 8 KB for each CPU12 => 4 KB for each CPU## Architectures with an unreliable sched_clock() should select this:#config HAVE_UNSTABLE_SCHED_CLOCKboolconfig GENERIC_SCHED_CLOCKbool## For architectures that want to enable the support for NUMA-affine scheduler# balancing logic:#config ARCH_SUPPORTS_NUMA_BALANCINGbool## For architectures that know their GCC __int128 support is sound#config ARCH_SUPPORTS_INT128bool# For architectures that (ab)use NUMA to represent different memory regions# all cpu-local but of different latencies, such as SuperH.#config ARCH_WANT_NUMA_VARIABLE_LOCALITYboolconfig NUMA_BALANCINGbool "Memory placement aware NUMA scheduler"depends on ARCH_SUPPORTS_NUMA_BALANCINGdepends on !ARCH_WANT_NUMA_VARIABLE_LOCALITYdepends on SMP && NUMA && MIGRATIONhelpThis option adds support for automatic NUMA aware memory/task placement.The mechanism is quite primitive and is based on migrating memory whenit has references to the node the task is running on.This system will be inactive on UMA systems.config NUMA_BALANCING_DEFAULT_ENABLEDbool "Automatically enable NUMA aware memory/task placement"default ydepends on NUMA_BALANCINGhelpIf set, automatic NUMA balancing will be enabled if running on a NUMAmachine.menuconfig CGROUPSbool "Control Group support"select KERNFShelpThis option adds support for grouping sets of processes together, foruse with process control subsystems such as Cpusets, CFS, memorycontrols or device isolation.See- Documentation/scheduler/sched-design-CFS.txt (CFS)- Documentation/cgroups/ (features for grouping, isolationand resource control)Say N if unsure.if CGROUPSconfig CGROUP_DEBUGbool "Example debug cgroup subsystem"default nhelpThis option enables a simple cgroup subsystem thatexports useful debugging information about the cgroupsframework.Say N if unsure.config CGROUP_FREEZERbool "Freezer cgroup subsystem"helpProvides a way to freeze and unfreeze all tasks in acgroup.config CGROUP_DEVICEbool "Device controller for cgroups"helpProvides a cgroup implementing whitelists for devices whicha process in the cgroup can mknod or open.config CPUSETSbool "Cpuset support"helpThis option will let you create and manage CPUSETs whichallow dynamically partitioning a system into sets of CPUs andMemory Nodes and assigning tasks to run only within those sets.This is primarily useful on large SMP or NUMA systems.Say N if unsure.config PROC_PID_CPUSETbool "Include legacy /proc/<pid>/cpuset file"depends on CPUSETSdefault yconfig CGROUP_CPUACCTbool "Simple CPU accounting cgroup subsystem"helpProvides a simple Resource Controller for monitoring thetotal CPU consumed by the tasks in a cgroup.config PAGE_COUNTERboolconfig MEMCGbool "Memory Resource Controller for Control Groups"select PAGE_COUNTERselect EVENTFDhelpProvides a memory resource controller that manages both anonymousmemory and page cache. (See Documentation/cgroups/memory.txt)config MEMCG_SWAPbool "Memory Resource Controller Swap Extension"depends on MEMCG && SWAPhelpAdd swap management feature to memory resource controller. When youenable this, you can limit mem+swap usage per cgroup. In other words,when you disable this, memory resource controller has no cares tousage of swap...a process can exhaust all of the swap. This extensionis useful when you want to avoid exhaustion swap but this itselfadds more overheads and consumes memory for remembering information.Especially if you use 32bit system or small memory system, pleasebe careful about enabling this. When memory resource controlleris disabled by boot option, this will be automatically disabled andthere will be no overhead from this. Even when you set this config=y,if boot option "swapaccount=0" is set, swap will not be accounted.Now, memory usage of swap_cgroup is 2 bytes per entry. If swap pagesize is 4096bytes, 512k per 1Gbytes of swap.config MEMCG_SWAP_ENABLEDbool "Memory Resource Controller Swap Extension enabled by default"depends on MEMCG_SWAPdefault yhelpMemory Resource Controller Swap Extension comes with its price ina bigger memory consumption. General purpose distribution kernelswhich want to enable the feature but keep it disabled by defaultand let the user enable it by swapaccount=1 boot command lineparameter should have this option unselected.For those who want to have the feature enabled by default shouldselect this option (if, for some reason, they need to disable itthen swapaccount=0 does the trick).config MEMCG_KMEMbool "Memory Resource Controller Kernel Memory accounting"depends on MEMCGdepends on SLUB || SLABhelpThe Kernel Memory extension for Memory Resource Controller can limitthe amount of memory used by kernel objects in the system. Those arefundamentally different from the entities handled by the standardMemory Controller, which are page-based, and can be swapped. Users ofthe kmem extension can use it to guarantee that no group of processeswill ever exhaust kernel resources alone.WARNING: Current implementation lacks reclaim support. That meansallocation attempts will fail when close to the limit even if thereare plenty of kmem available for reclaim. That makes this optionunusable in real life so DO NOT SELECT IT unless for developmentpurposes.config CGROUP_HUGETLBbool "HugeTLB Resource Controller for Control Groups"depends on HUGETLB_PAGEselect PAGE_COUNTERdefault nhelpProvides a cgroup Resource Controller for HugeTLB pages.When you enable this, you can put a per cgroup limit on HugeTLB usage.The limit is enforced during page fault. Since HugeTLB doesn'tsupport page reclaim, enforcing the limit at page fault time impliesthat, the application will get SIGBUS signal if it tries to accessHugeTLB pages beyond its limit. This requires the application to knowbeforehand how much HugeTLB pages it would require for its use. Thecontrol group is tracked in the third page lru pointer. This meansthat we cannot use the controller with huge page less than 3 pages.config CGROUP_PERFbool "Enable perf_event per-cpu per-container group (cgroup) monitoring"depends on PERF_EVENTS && CGROUPShelpThis option extends the per-cpu mode to restrict monitoring tothreads which belong to the cgroup specified and run on thedesignated cpu.Say N if unsure.menuconfig CGROUP_SCHEDbool "Group CPU scheduler"default nhelpThis feature lets CPU scheduler recognize task groups and control CPUbandwidth allocation to such task groups. It uses cgroups to grouptasks.if CGROUP_SCHEDconfig FAIR_GROUP_SCHEDbool "Group scheduling for SCHED_OTHER"depends on CGROUP_SCHEDdefault CGROUP_SCHEDconfig CFS_BANDWIDTHbool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"depends on FAIR_GROUP_SCHEDdefault nhelpThis option allows users to define CPU bandwidth rates (limits) fortasks running within the fair group scheduler. Groups with no limitset are considered to be unconstrained and will run with norestriction.See tip/Documentation/scheduler/sched-bwc.txt for more information.config RT_GROUP_SCHEDbool "Group scheduling for SCHED_RR/FIFO"depends on CGROUP_SCHEDdefault nhelpThis feature lets you explicitly allocate real CPU bandwidthto task groups. If enabled, it will also make it impossible toschedule realtime tasks for non-root users until you allocaterealtime bandwidth for them.See Documentation/scheduler/sched-rt-group.txt for more information.endif #CGROUP_SCHEDconfig BLK_CGROUPbool "Block IO controller"depends on BLOCKdefault n---help---Generic block IO controller cgroup interface. This is the commoncgroup interface which should be used by various IO controllingpolicies.Currently, CFQ IO scheduler uses it to recognize task groups andcontrol disk bandwidth allocation (proportional time slice allocation)to such task groups. It is also used by bio throttling logic inblock layer to implement upper limit in IO rates on a device.This option only enables generic Block IO controller infrastructure.One needs to also enable actual IO controlling logic/policy. Forenabling proportional weight division of disk bandwidth in CFQ, setCONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, setCONFIG_BLK_DEV_THROTTLING=y.See Documentation/cgroups/blkio-controller.txt for more information.config DEBUG_BLK_CGROUPbool "Enable Block IO controller debugging"depends on BLK_CGROUPdefault n---help---Enable some debugging help. Currently it exports additional statfiles in a cgroup which can be useful for debugging.endif # CGROUPSconfig CHECKPOINT_RESTOREbool "Checkpoint/restore support" if EXPERTdefault nhelpEnables additional kernel features in a sake of checkpoint/restore.In particular it adds auxiliary prctl codes to setup process text,data and heap segment sizes, and a few additional /proc filesystementries.If unsure, say N here.menuconfig NAMESPACESbool "Namespaces support" if EXPERTdefault !EXPERThelpProvides the way to make tasks work with different objects usingthe same id. For example same IPC id may refer to different objectsor same user id or pid may refer to different tasks when used indifferent namespaces.if NAMESPACESconfig UTS_NSbool "UTS namespace"default yhelpIn this namespace tasks see different info provided with theuname() system callconfig IPC_NSbool "IPC namespace"depends on (SYSVIPC || POSIX_MQUEUE)default yhelpIn this namespace tasks work with IPC ids which correspond todifferent IPC objects in different namespaces.config USER_NSbool "User namespace"default nhelpThis allows containers, i.e. vservers, to use user namespacesto provide different user info for different servers.When user namespaces are enabled in the kernel it isrecommended that the MEMCG and MEMCG_KMEM options also beenabled and that user-space use the memory control groups tolimit the amount of memory a memory unprivileged users canuse.If unsure, say N.config PID_NSbool "PID Namespaces"default yhelpSupport process id namespaces. This allows having multipleprocesses with the same pid as long as they are in differentpid namespaces. This is a building block of containers.config NET_NSbool "Network namespace"depends on NETdefault yhelpAllow user space to create what appear to be multiple instancesof the network stack.endif # NAMESPACESconfig SCHED_AUTOGROUPbool "Automatic process group scheduling"select CGROUPSselect CGROUP_SCHEDselect FAIR_GROUP_SCHEDhelpThis option optimizes the scheduler for common desktop workloads byautomatically creating and populating task groups. This separationof workloads isolates aggressive CPU burners (like build jobs) fromdesktop applications. Task group autogeneration is currently basedupon task session.config SYSFS_DEPRECATEDbool "Enable deprecated sysfs features to support old userspace tools"depends on SYSFSdefault nhelpThis option adds code that switches the layout of the "block" classdevices, to not show up in /sys/class/block/, but only in/sys/block/.This switch is only active when the sysfs.deprecated=1 boot option ispassed or the SYSFS_DEPRECATED_V2 option is set.This option allows new kernels to run on old distributions and tools,which might get confused by /sys/class/block/. Since 2007/2008 allmajor distributions and tools handle this just fine.Recent distributions and userspace tools after 2009/2010 depend onthe existence of /sys/class/block/, and will not work with thisoption enabled.Only if you are using a new kernel on an old distribution, you mightneed to say Y here.config SYSFS_DEPRECATED_V2bool "Enable deprecated sysfs features by default"default ndepends on SYSFSdepends on SYSFS_DEPRECATEDhelpEnable deprecated sysfs by default.See the CONFIG_SYSFS_DEPRECATED option for more details about thisoption.Only if you are using a new kernel on an old distribution, you mightneed to say Y here. Even then, odds are you would not need itenabled, you can always pass the boot option if absolutely necessary.config RELAYbool "Kernel->user space relay support (formerly relayfs)"helpThis option enables support for relay interface support incertain file systems (such as debugfs).It is designed to provide an efficient mechanism for tools andfacilities to relay large amounts of data from kernel space touser space.If unsure, say N.config BLK_DEV_INITRDbool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"depends on BROKEN || !FRVhelpThe initial RAM filesystem is a ramfs which is loaded by theboot loader (loadlin or lilo) and that is mounted as rootbefore the normal boot procedure. It is typically used toload modules needed to mount the "real" root file system,etc. See <file:Documentation/initrd.txt> for details.If RAM disk support (BLK_DEV_RAM) is also included, thisalso enables initial RAM disk (initrd) support and adds15 Kbytes (more on some other architectures) to the kernel size.If unsure say Y.if BLK_DEV_INITRDsource "usr/Kconfig"endifconfig CC_OPTIMIZE_FOR_SIZEbool "Optimize for size"helpEnabling this option will pass "-Os" instead of "-O2" toyour compiler resulting in a smaller kernel.If unsure, say N.config SYSCTLboolconfig ANON_INODESboolconfig HAVE_UID16boolconfig SYSCTL_EXCEPTION_TRACEboolhelpEnable support for /proc/sys/debug/exception-trace.config SYSCTL_ARCH_UNALIGN_NO_WARNboolhelpEnable support for /proc/sys/kernel/ignore-unaligned-usertrapAllows arch to define/use @no_unaligned_warning to possibly warnabout unaligned access emulation going on under the hood.config SYSCTL_ARCH_UNALIGN_ALLOWboolhelpEnable support for /proc/sys/kernel/unaligned-trapAllows arches to define/use @unaligned_enabled to runtime togglethe unaligned access emulation.see arch/parisc/kernel/unaligned.c for referenceconfig HAVE_PCSPKR_PLATFORMbool# interpreter that classic socket filters depend onconfig BPFboolmenuconfig EXPERTbool "Configure standard kernel features (expert users)"# Unhide debug options, to make the on-by-default options visibleselect DEBUG_KERNELhelpThis option allows certain base kernel options and settingsto be disabled or tweaked. This is for specializedenvironments which can tolerate a "non-standard" kernel.Only use this if you really know what you are doing.config UID16bool "Enable 16-bit UID system calls" if EXPERTdepends on HAVE_UID16default yhelpThis enables the legacy 16-bit UID syscall wrappers.config SGETMASK_SYSCALLbool "sgetmask/ssetmask syscalls support" if EXPERTdef_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH---help---sys_sgetmask and sys_ssetmask are obsolete system callsno longer supported in libc but still enabled by default in somearchitectures.If unsure, leave the default option here.config SYSFS_SYSCALLbool "Sysfs syscall support" if EXPERTdefault y---help---sys_sysfs is an obsolete system call no longer supported in libc.Note that disabling this option is more secure but might breakcompatibility with some systems.If unsure say Y here.config SYSCTL_SYSCALLbool "Sysctl syscall support" if EXPERTdepends on PROC_SYSCTLdefault nselect SYSCTL---help---sys_sysctl uses binary paths that have been found challengingto properly maintain and use. The interface in /proc/sysusing paths with ascii names is now the primary path to thisinformation.Almost nothing using the binary sysctl interface so if you aretrying to save some space it is probably safe to disable this,making your kernel marginally smaller.If unsure say N here.config KALLSYMSbool "Load all symbols for debugging/ksymoops" if EXPERTdefault yhelpSay Y here to let the kernel print out symbolic crash information andsymbolic stack backtraces. This increases the size of the kernelsomewhat, as all symbols have to be loaded into the kernel image.config KALLSYMS_ALLbool "Include all symbols in kallsyms"depends on DEBUG_KERNEL && KALLSYMShelpNormally kallsyms only contains the symbols of functions for nicerOOPS messages and backtraces (i.e., symbols from the text and inittextsections). This is sufficient for most cases. And only in very rarecases (e.g., when a debugger is used) all symbols are required (e.g.,names of variables from the data sections, etc).This option makes sure that all symbols are loaded into the kernelimage (i.e., symbols from all sections) in cost of increased kernelsize (depending on the kernel configuration, it may be 300KiB orsomething like this).Say N unless you really need all symbols.config PRINTKdefault ybool "Enable support for printk" if EXPERTselect IRQ_WORKhelpThis option enables normal printk support. Removing iteliminates most of the message strings from the kernel imageand makes the kernel more or less silent. As this makes itvery difficult to diagnose system problems, saying N here isstrongly discouraged.config BUGbool "BUG() support" if EXPERTdefault yhelpDisabling this option eliminates support for BUG and WARN, reducingthe size of your kernel image and potentially quietly ignoringnumerous fatal conditions. You should only consider disabling thisoption for embedded systems with no facilities for reporting errors.Just say Y.config ELF_COREdepends on COREDUMPdefault ybool "Enable ELF core dumps" if EXPERThelpEnable support for generating core dumps. Disabling saves about 4k.config PCSPKR_PLATFORMbool "Enable PC-Speaker support" if EXPERTdepends on HAVE_PCSPKR_PLATFORMselect I8253_LOCKdefault yhelpThis option allows to disable the internal PC-Speakersupport, saving some memory.config BASE_FULLdefault ybool "Enable full-sized data structures for core" if EXPERThelpDisabling this option reduces the size of miscellaneous corekernel data structures. This saves memory on small machines,but may reduce performance.config FUTEXbool "Enable futex support" if EXPERTdefault yselect RT_MUTEXEShelpDisabling this option will cause the kernel to be built withoutsupport for "fast userspace mutexes". The resulting kernel may notrun glibc-based applications correctly.config HAVE_FUTEX_CMPXCHGbooldepends on FUTEXhelpArchitectures should select this if futex_atomic_cmpxchg_inatomic()is implemented and always working. This removes a couple of runtimechecks.config EPOLLbool "Enable eventpoll support" if EXPERTdefault yselect ANON_INODEShelpDisabling this option will cause the kernel to be built withoutsupport for epoll family of system calls.config SIGNALFDbool "Enable signalfd() system call" if EXPERTselect ANON_INODESdefault yhelpEnable the signalfd() system call that allows to receive signalson a file descriptor.If unsure, say Y.config TIMERFDbool "Enable timerfd() system call" if EXPERTselect ANON_INODESdefault yhelpEnable the timerfd() system call that allows to receive timerevents on a file descriptor.If unsure, say Y.config EVENTFDbool "Enable eventfd() system call" if EXPERTselect ANON_INODESdefault yhelpEnable the eventfd() system call that allows to receive bothkernel notification (ie. KAIO) or userspace notifications.If unsure, say Y.# syscall, maps, verifierconfig BPF_SYSCALLbool "Enable bpf() system call" if EXPERTselect ANON_INODESselect BPFdefault nhelpEnable the bpf() system call that allows to manipulate eBPFprograms and maps via file descriptors.config SHMEMbool "Use full shmem filesystem" if EXPERTdefault ydepends on MMUhelpThe shmem is an internal filesystem used to manage shared memory.It is backed by swap and manages resource limits. It is also exportedto userspace as tmpfs if TMPFS is enabled. Disabling thisoption replaces shmem and tmpfs with the much simpler ramfs code,which may be appropriate on small systems without swap.config AIObool "Enable AIO support" if EXPERTdefault yhelpThis option enables POSIX asynchronous I/O which may by usedby some high performance threaded applications. Disablingthis option saves about 7k.config ADVISE_SYSCALLSbool "Enable madvise/fadvise syscalls" if EXPERTdefault yhelpThis option enables the madvise and fadvise syscalls, used byapplications to advise the kernel about their future memory or fileusage, improving performance. If building an embedded system where noapplications use these syscalls, you can disable this option to savespace.config PCI_QUIRKSdefault ybool "Enable PCI quirk workarounds" if EXPERTdepends on PCIhelpThis enables workarounds for various PCI chipsetbugs/quirks. Disable this only if your target machine isunaffected by PCI quirks.config EMBEDDEDbool "Embedded system"option allnoconfig_yselect EXPERThelpThis option should be enabled if compiling the kernel foran embedded system so certain expert options are availablefor configuration.config HAVE_PERF_EVENTSboolhelpSee tools/perf/design.txt for details.config PERF_USE_VMALLOCboolhelpSee tools/perf/design.txt for detailsmenu "Kernel Performance Events And Counters"config PERF_EVENTSbool "Kernel performance events and counters"default y if PROFILINGdepends on HAVE_PERF_EVENTSselect ANON_INODESselect IRQ_WORKselect SRCUhelpEnable kernel support for various performance events providedby software and hardware.Software events are supported either built-in or via theuse of generic tracepoints.Most modern CPUs support performance events via performancecounter registers. These registers count the number of certaintypes of hw events: such as instructions executed, cachemissessuffered, or branches mis-predicted - without slowing down thekernel or applications. These registers can also trigger interruptswhen a threshold number of events have passed - and can thus beused to profile the code that runs on that CPU.The Linux Performance Event subsystem provides an abstraction ofthese software and hardware event capabilities, available via asystem call and used by the "perf" utility in tools/perf/. Itprovides per task and per CPU counters, and it provides eventcapabilities on top of those.Say Y if unsure.config DEBUG_PERF_USE_VMALLOCdefault nbool "Debug: use vmalloc to back perf mmap() buffers"depends on PERF_EVENTS && DEBUG_KERNELselect PERF_USE_VMALLOChelpUse vmalloc memory to back perf mmap() buffers.Mostly useful for debugging the vmalloc code on platformsthat don't require it.Say N if unsure.endmenuconfig VM_EVENT_COUNTERSdefault ybool "Enable VM event counters for /proc/vmstat" if EXPERThelpVM event counters are needed for event counts to be shown.This option allows the disabling of the VM event counterson EXPERT systems. /proc/vmstat will only show page countsif VM event counters are disabled.config SLUB_DEBUGdefault ybool "Enable SLUB debugging support" if EXPERTdepends on SLUB && SYSFShelpSLUB has extensive debug support features. Disabling these canresult in significant savings in code size. This also disablesSLUB sysfs support. /sys/slab will not exist and there will beno support for cache validation etc.config COMPAT_BRKbool "Disable heap randomization"default yhelpRandomizing heap placement makes heap exploits harder, but italso breaks ancient binaries (including anything libc5 based).This option changes the bootup default to heap randomizationdisabled, and can be overridden at runtime by setting/proc/sys/kernel/randomize_va_space to 2.On non-ancient distros (post-2000 ones) N is usually a safe choice.choiceprompt "Choose SLAB allocator"default SLUBhelpThis option allows to select a slab allocator.config SLABbool "SLAB"helpThe regular slab allocator that is established and known to workwell in all environments. It organizes cache hot objects inper cpu and per node queues.config SLUBbool "SLUB (Unqueued Allocator)"helpSLUB is a slab allocator that minimizes cache line usageinstead of managing queues of cached objects (SLAB approach).Per cpu caching is realized using slabs of objects insteadof queues of objects. SLUB can use memory efficientlyand has enhanced diagnostics. SLUB is the default choice fora slab allocator.config SLOBdepends on EXPERTbool "SLOB (Simple Allocator)"helpSLOB replaces the stock allocator with a drastically simplerallocator. SLOB is generally more space efficient butdoes not perform as well on large systems.endchoiceconfig SLUB_CPU_PARTIALdefault ydepends on SLUB && SMPbool "SLUB per cpu partial cache"helpPer cpu partial caches accellerate objects allocation and freeingthat is local to a processor at the price of more indeterminismin the latency of the free. On overflow these caches will be clearedwhich requires the taking of locks that may cause latency spikes.Typically one would choose no for a realtime system.config MMAP_ALLOW_UNINITIALIZEDbool "Allow mmapped anonymous memory to be uninitialized"depends on EXPERT && !MMUdefault nhelpNormally, and according to the Linux spec, anonymous memory obtainedfrom mmap() has it's contents cleared before it is passed touserspace. Enabling this config option allows you to request thatmmap() skip that if it is given an MAP_UNINITIALIZED flag, thusproviding a huge performance boost. If this option is not enabled,then the flag will be ignored.This is taken advantage of by uClibc's malloc(), and also byELF-FDPIC binfmt's brk and stack allocator.Because of the obvious security issues, this option should only beenabled on embedded devices where you control what is run inuserspace. Since that isn't generally a problem on no-MMU systems,it is normally safe to say Y here.See Documentation/nommu-mmap.txt for more information.config SYSTEM_TRUSTED_KEYRINGbool "Provide system-wide ring of trusted keys"depends on KEYShelpProvide a system keyring to which trusted keys can be added. Keys inthe keyring are considered to be trusted. Keys may be added at willby the kernel from compiled-in data and from hardware key stores, butuserspace may only add extra keys if those keys can be verified bykeys already in the keyring.Keys in this keyring are used by module signature checking.config PROFILINGbool "Profiling support"helpSay Y here to enable the extended profiling support mechanisms usedby profilers such as OProfile.## Place an empty function call at each tracepoint site. Can be# dynamically changed for a probe function.#config TRACEPOINTSboolsource "arch/Kconfig"endmenu # General setupconfig HAVE_GENERIC_DMA_COHERENTbooldefault nconfig SLABINFObooldepends on PROC_FSdepends on SLAB || SLUB_DEBUGdefault yconfig RT_MUTEXESboolconfig BASE_SMALLintdefault 0 if BASE_FULLdefault 1 if !BASE_FULLmenuconfig MODULESbool "Enable loadable module support"option moduleshelpKernel modules are small pieces of compiled code which canbe inserted in the running kernel, rather than beingpermanently built into the kernel. You use the "modprobe"tool to add (and sometimes remove) them. If you say Y here,many parts of the kernel can be built as modules (byanswering M instead of Y where indicated): this is mostuseful for infrequently used options which are not requiredfor booting. For more information, see the man pages formodprobe, lsmod, modinfo, insmod and rmmod.If you say Y here, you will need to run "makemodules_install" to put the modules under /lib/modules/where modprobe can find them (you may need to be root to dothis).If unsure, say Y.if MODULESconfig MODULE_FORCE_LOADbool "Forced module loading"default nhelpAllow loading of modules without version information (ie. modprobe--force). Forced module loading sets the 'F' (forced) taint flag andis usually a really bad idea.config MODULE_UNLOADbool "Module unloading"helpWithout this option you will not be able to unload anymodules (note that some modules may not be unloadableanyway), which makes your kernel smaller, fasterand simpler. If unsure, say Y.config MODULE_FORCE_UNLOADbool "Forced module unloading"depends on MODULE_UNLOADhelpThis option allows you to force a module to unload, even if thekernel believes it is unsafe: the kernel will remove the modulewithout waiting for anyone to stop using it (using the -f option tormmod). This is mainly for kernel developers and desperate users.If unsure, say N.config MODVERSIONSbool "Module versioning support"helpUsually, you have to use modules compiled with your kernel.Saying Y here makes it sometimes possible to use modulescompiled for different kernels, by adding enough informationto the modules to (hopefully) spot any changes which wouldmake them incompatible with the kernel you are running. Ifunsure, say N.config MODULE_SRCVERSION_ALLbool "Source checksum for all modules"helpModules which contain a MODULE_VERSION get an extra "srcversion"field inserted into their modinfo section, which contains asum of the source files which made it. This helps maintainerssee exactly which source was used to build a module (sinceothers sometimes change the module source without updatingthe version). With this option, such a "srcversion" fieldwill be created for all modules. If unsure, say N.config MODULE_SIGbool "Module signature verification"depends on MODULESselect SYSTEM_TRUSTED_KEYRINGselect KEYSselect CRYPTOselect ASYMMETRIC_KEY_TYPEselect ASYMMETRIC_PUBLIC_KEY_SUBTYPEselect PUBLIC_KEY_ALGO_RSAselect ASN1select OID_REGISTRYselect X509_CERTIFICATE_PARSERhelpCheck modules for valid signatures upon load: the signatureis simply appended to the module. For more information seeDocumentation/module-signing.txt.!!!WARNING!!! If you enable this option, you MUST make sure that themodule DOES NOT get stripped after being signed. This includes thedebuginfo strip done by some packagers (such as rpmbuild) andinclusion into an initramfs that wants the module size reduced.config MODULE_SIG_FORCEbool "Require modules to be validly signed"depends on MODULE_SIGhelpReject unsigned modules or signed modules for which we don't have akey. Without this, such modules will simply taint the kernel.config MODULE_SIG_ALLbool "Automatically sign all modules"default ydepends on MODULE_SIGhelpSign all modules during make modules_install. Without this option,modules must be signed manually, using the scripts/sign-file tool.comment "Do not forget to sign required modules with scripts/sign-file"depends on MODULE_SIG_FORCE && !MODULE_SIG_ALLchoiceprompt "Which hash algorithm should modules be signed with?"depends on MODULE_SIGhelpThis determines which sort of hashing algorithm will be used duringsignature generation. This algorithm _must_ be built into the kerneldirectly so that signature verification can take place. It is notpossible to load a signed module containing the algorithm to checkthe signature on that module.config MODULE_SIG_SHA1bool "Sign modules with SHA-1"select CRYPTO_SHA1config MODULE_SIG_SHA224bool "Sign modules with SHA-224"select CRYPTO_SHA256config MODULE_SIG_SHA256bool "Sign modules with SHA-256"select CRYPTO_SHA256config MODULE_SIG_SHA384bool "Sign modules with SHA-384"select CRYPTO_SHA512config MODULE_SIG_SHA512bool "Sign modules with SHA-512"select CRYPTO_SHA512endchoiceconfig MODULE_SIG_HASHstringdepends on MODULE_SIGdefault "sha1" if MODULE_SIG_SHA1default "sha224" if MODULE_SIG_SHA224default "sha256" if MODULE_SIG_SHA256default "sha384" if MODULE_SIG_SHA384default "sha512" if MODULE_SIG_SHA512config MODULE_COMPRESSbool "Compress modules on installation"depends on MODULEShelpThis option compresses the kernel modules when 'makemodules_install' is run.The modules will be compressed either using gzip or xz depend on thechoice made in "Compression algorithm".module-init-tools has support for gzip format while kmod handle gzipand xz compressed modules.When a kernel module is installed from outside of the main kernelsource and uses the Kbuild system for installing modules then thatkernel module will also be compressed when it is installed.This option provides little benefit when the modules are to be used insidean initrd or initramfs, it generally is more efficient to compress the wholeinitrd or initramfs instead.This is fully compatible with signed modules while the signed module iscompressed. module-init-tools or kmod handles decompression and provide toother layer the uncompressed but signed payload.choiceprompt "Compression algorithm"depends on MODULE_COMPRESSdefault MODULE_COMPRESS_GZIPhelpThis determines which sort of compression will be used during'make modules_install'.GZIP (default) and XZ are supported.config MODULE_COMPRESS_GZIPbool "GZIP"config MODULE_COMPRESS_XZbool "XZ"endchoiceendif # MODULESconfig INIT_ALL_POSSIBLEboolhelpBack when each arch used to define their own cpu_online_mask andcpu_possible_mask, some of them chose to initialize cpu_possible_maskwith all 1s, and others with all 0s. When they were centralised,it was better to provide this option than to break all the archsand have several arch maintainers pursuing me down dark alleys.config STOP_MACHINEbooldefault ydepends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPUhelpNeed stop_machine() primitive.source "block/Kconfig"config PREEMPT_NOTIFIERSboolconfig PADATAdepends on SMPbool# Can be selected by architectures with broken toolchains# that get confused by correct const<->read_only section# mappingsconfig BROKEN_RODATAboolconfig ASN1tristatehelpBuild a simple ASN.1 grammar compiler that produces a bytecode outputthat can be interpreted by the ASN.1 stream decoder and used toinform it as to what tags are to be expected in a stream and whatfunctions to call on what tags.source "kernel/Kconfig.locks"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。