1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477 |
- config ARCH
- string
- option env="ARCH"
- config KERNELVERSION
- string
- option env="KERNELVERSION"
- config DEFCONFIG_LIST
- string
- depends on !UML
- option defconfig_list
- default "/lib/modules/$UNAME_RELEASE/.config"
- default "/etc/kernel-config"
- default "/boot/config-$UNAME_RELEASE"
- default "$ARCH_DEFCONFIG"
- default "arch/$ARCH/defconfig"
- config CONSTRUCTORS
- bool
- depends on !UML
- config HAVE_IRQ_WORK
- bool
- config IRQ_WORK
- bool
- depends on HAVE_IRQ_WORK
- menu "General setup"
- config EXPERIMENTAL
- bool "Prompt for development and/or incomplete code/drivers"
- ---help---
- Some of the various things that Linux supports (such as network
- drivers, file systems, network protocols, etc.) can be in a state
- of development where the functionality, stability, or the level of
- testing is not yet high enough for general use. This is usually
- known as the "alpha-test" phase among developers. If a feature is
- currently in alpha-test, then the developers usually discourage
- uninformed widespread use of this feature by the general public to
- avoid "Why doesn't this work?" type mail messages. However, active
- testing and use of these systems is welcomed. Just be aware that it
- may not meet the normal level of reliability or it may fail to work
- in some special cases. Detailed bug reports from people familiar
- with the kernel internals are usually welcomed by the developers
- (before submitting bug reports, please read the documents
- <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
- <file:Documentation/BUG-HUNTING>, and
- <file:Documentation/oops-tracing.txt> in the kernel source).
- This option will also make obsoleted drivers available. These are
- drivers that have been replaced by something else, and/or are
- scheduled to be removed in a future kernel release.
- Unless you intend to help test and develop a feature or driver that
- falls into this category, or you have a situation that requires
- using these features, you should probably say N here, which will
- cause the configurator to present you with fewer choices. If
- you say Y here, you will be offered the choice of using features or
- drivers that are currently considered to be in the alpha-test phase.
- config BROKEN
- bool
- config BROKEN_ON_SMP
- bool
- depends on BROKEN || !SMP
- default y
- config INIT_ENV_ARG_LIMIT
- int
- default 32 if !UML
- default 128 if UML
- help
- Maximum of each of the number of arguments and environment
- variables passed to init from the kernel command line.
- config CROSS_COMPILE
- string "Cross-compiler tool prefix"
- help
- Same as running 'make CROSS_COMPILE=prefix-' but stored for
- default make runs in this kernel build directory. You don't
- need to set this unless you want the configured kernel build
- directory to select the cross-compiler automatically.
- config LOCALVERSION
- string "Local version - append to kernel release"
- help
- Append 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 of
- any files with a filename matching localversion* in your
- object and source tree, in that order. Your total string can
- be a maximum of 64 characters.
- config LOCALVERSION_AUTO
- bool "Automatically append version information to the version string"
- default y
- help
- This will try to automatically determine if the current tree is a
- release tree by looking for git tags that belong to the current
- top of tree revision.
- A string of the format -gxxxxxxxx will be added to the localversion
- if a git-based tree is found. The string generated by this will be
- appended after any matching localversion* files, and after the value
- set in CONFIG_LOCALVERSION.
- (The actual string used here is the first eight characters produced
- by running the command:
- $ git rev-parse --verify HEAD
- which is done within the script "scripts/setlocalversion".)
- config HAVE_KERNEL_GZIP
- bool
- config HAVE_KERNEL_BZIP2
- bool
- config HAVE_KERNEL_LZMA
- bool
- config HAVE_KERNEL_XZ
- bool
- config HAVE_KERNEL_LZO
- bool
- config HAVE_KERNEL_LZ4
- bool
- choice
- prompt "Kernel compression mode"
- default KERNEL_GZIP
- depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
- help
- The linux kernel is a kind of self-extracting executable.
- Several compression algorithms are available, which differ
- in 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 compressed
- kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
- version of this functionality (bzip2 only), for 2.4, was
- supplied by Christian Ludwig)
- High compression options are mostly useful for users, who
- are low on disk space (embedded systems), but for whom ram
- size matters less.
- If in doubt, select 'gzip'
- config KERNEL_GZIP
- bool "Gzip"
- depends on HAVE_KERNEL_GZIP
- help
- The old and tried gzip compression. It provides a good balance
- between compression ratio and decompression speed.
- config KERNEL_BZIP2
- bool "Bzip2"
- depends on HAVE_KERNEL_BZIP2
- help
- Its compression ratio and speed is intermediate.
- Decompression speed is slowest among the three. The kernel
- size is about 10% smaller with bzip2, in comparison to gzip.
- Bzip2 uses a large amount of memory. For modern kernels you
- will need at least 8MB RAM or more for booting.
- config KERNEL_LZMA
- bool "LZMA"
- depends on HAVE_KERNEL_LZMA
- help
- The most recent compression algorithm.
- Its ratio is best, decompression speed is between the other
- two. Compression is slowest. The kernel size is about 33%
- smaller with LZMA in comparison to gzip.
- config KERNEL_XZ
- bool "XZ"
- depends on HAVE_KERNEL_XZ
- help
- XZ uses the LZMA2 algorithm and instruction set specific
- BCJ filters which can improve compression ratio of executable
- code. The size of the kernel is about 30% smaller with XZ in
- comparison to gzip. On architectures for which there is a BCJ
- filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
- will create a few percent smaller kernel than plain LZMA.
- The speed is about the same as with LZMA: The decompression
- speed of XZ is better than that of bzip2 but worse than gzip
- and LZO. Compression is slow.
- config KERNEL_LZO
- bool "LZO"
- depends on HAVE_KERNEL_LZO
- help
- Its compression ratio is the poorest among the 4. The kernel
- size is about 10% bigger than gzip; however its speed
- (both compression and decompression) is the fastest.
- config KERNEL_LZ4
- bool "LZ4"
- depends on HAVE_KERNEL_LZ4
- help
- LZ4 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 kernel
- is about 8% bigger than LZO. But the decompression speed is
- faster than LZO.
- endchoice
- config DEFAULT_HOSTNAME
- string "Default hostname"
- default "(none)"
- help
- This option determines the default system hostname before userspace
- calls sethostname(2). The kernel traditionally uses "(none)" here,
- but you may wish to use a different default here to make a minimal
- system more usable with less configuration.
- config SWAP
- bool "Support for paging of anonymous memory (swap)"
- depends on MMU && BLOCK
- default y
- help
- This option allows you to choose whether you want to have support
- for so called swap devices or swap files in your kernel that are
- used to provide more virtual memory than the actual RAM present
- in your computer. If unsure say Y.
- config SYSVIPC
- bool "System V IPC"
- ---help---
- Inter Process Communication is a suite of library functions and
- system calls which let processes (running programs) synchronize and
- exchange information. It is generally considered to be a good thing,
- and some programs won't run unless you say Y here. In particular, if
- you want to run the DOS emulator dosemu under Linux (read the
- DOSEMU-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 in
- section 6.4 of the Linux Programmer's Guide, available from
- <http://www.tldp.org/guides.html>.
- config SYSVIPC_SYSCTL
- bool
- depends on SYSVIPC
- depends on SYSCTL
- default y
- config POSIX_MQUEUE
- bool "POSIX Message Queues"
- depends on NET && EXPERIMENTAL
- ---help---
- POSIX variant of message queues is a part of IPC. In POSIX message
- queues every message has a priority which decides about succession
- of receiving it by a process. If you want to compile and run
- programs written e.g. for Solaris with use of its POSIX message
- queues (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 filesystem
- operations on message queues.
- If unsure, say Y.
- config POSIX_MQUEUE_SYSCTL
- bool
- depends on POSIX_MQUEUE
- depends on SYSCTL
- default y
- config BSD_PROCESS_ACCT
- bool "BSD Process Accounting"
- help
- If you say Y here, a user level program will be able to instruct the
- kernel (via a special system call) to write process accounting
- information to a file: whenever a process exits, information about
- that process will be appended to the file by the kernel. The
- information includes things such as creation time, owning user,
- command name, memory usage, controlling terminal etc. (the complete
- list is in the struct acct in <file:include/linux/acct.h>). It is
- up to the user level program to do useful things with this
- information. This is generally a good idea, so say Y.
- config BSD_PROCESS_ACCT_V3
- bool "BSD Process Accounting version 3 file format"
- depends on BSD_PROCESS_ACCT
- default n
- help
- If you say Y here, the process accounting information is written
- in a new file format that also logs the process IDs of each
- process and it's parent. Note that this file format is incompatible
- with previous v0/v1/v2 file formats, so you will need updated tools
- for processing it. A preliminary version of these tools is available
- at <http://www.gnu.org/software/acct/>.
- config FHANDLE
- bool "open by fhandle syscalls"
- select EXPORTFS
- help
- If you say Y here, a user level program will be able to map
- file names to handle and then later use the handle for
- different file system operations. This is useful in implementing
- userspace file servers, which now track files using handles instead
- of names. The handle would remain the same even if file names
- get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
- syscalls.
- config TASKSTATS
- bool "Export task/process statistics through netlink (EXPERIMENTAL)"
- depends on NET
- default n
- help
- Export selected statistics for tasks/processes through the
- generic netlink interface. Unlike BSD process accounting, the
- statistics are available during the lifetime of tasks/processes as
- responses to commands. Like BSD accounting, they are sent to user
- space on task exit.
- Say N if unsure.
- config TASK_DELAY_ACCT
- bool "Enable per-task delay accounting (EXPERIMENTAL)"
- depends on TASKSTATS
- help
- Collect information on time spent by a task waiting for system
- resources like cpu, synchronous block I/O completion and swapping
- in pages. Such statistics can help in setting a task's priorities
- relative to other tasks for cpu, io, rss limits etc.
- Say N if unsure.
- config TASK_XACCT
- bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
- depends on TASKSTATS
- help
- Collect extended task accounting data and send the data
- to userland for processing over the taskstats interface.
- Say N if unsure.
- config TASK_IO_ACCOUNTING
- bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
- depends on TASK_XACCT
- help
- Collect information on the number of bytes of storage I/O which this
- task has caused.
- Say N if unsure.
- config AUDIT
- bool "Auditing support"
- depends on NET
- help
- Enable auditing infrastructure that can be used with another
- kernel subsystem, such as SELinux (which requires this for
- logging of avc messages output). Does not do system-call
- auditing without CONFIG_AUDITSYSCALL.
- config AUDITSYSCALL
- bool "Enable system-call auditing support"
- depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || ARM)
- default y if SECURITY_SELINUX
- help
- Enable low-overhead system-call auditing infrastructure that
- can be used independently or with another kernel subsystem,
- such as SELinux.
- config AUDIT_WATCH
- def_bool y
- depends on AUDITSYSCALL
- select FSNOTIFY
- config AUDIT_TREE
- def_bool y
- depends on AUDITSYSCALL
- select FSNOTIFY
- config AUDIT_LOGINUID_IMMUTABLE
- bool "Make audit loginuid immutable"
- depends on AUDIT
- help
- The config option toggles if a task setting its loginuid requires
- CAP_SYS_AUDITCONTROL or if that task should require no special permissions
- but should instead only allow setting its loginuid if it was never
- previously set. On systems which use systemd or a similar central
- process to restart login services this should be set to true. On older
- systems in which an admin would typically have to directly stop and
- start processes this should be set to false. Setting this to true allows
- one to drop potentially dangerous capabilites from the login tasks,
- but may not be backwards compatible with older init systems.
- source "kernel/irq/Kconfig"
- menu "RCU Subsystem"
- choice
- prompt "RCU Implementation"
- default TREE_RCU
- config TREE_RCU
- bool "Tree-based hierarchical RCU"
- depends on !PREEMPT && SMP
- help
- This option selects the RCU implementation that is
- designed for very large SMP system with hundreds or
- thousands of CPUs. It also scales down nicely to
- smaller systems.
- config TREE_PREEMPT_RCU
- bool "Preemptible tree-based hierarchical RCU"
- depends on PREEMPT && SMP
- help
- This option selects the RCU implementation that is
- designed for very large SMP systems with hundreds or
- thousands of CPUs, but for which real-time response
- is also required. It also scales down nicely to
- smaller systems.
- config TINY_RCU
- bool "UP-only small-memory-footprint RCU"
- depends on !PREEMPT && !SMP
- help
- This option selects the RCU implementation that is
- designed for UP systems from which real-time response
- is not required. This option greatly reduces the
- memory footprint of RCU.
- config TINY_PREEMPT_RCU
- bool "Preemptible UP-only small-memory-footprint RCU"
- depends on PREEMPT && !SMP
- help
- This option selects the RCU implementation that is designed
- for real-time UP systems. This option greatly reduces the
- memory footprint of RCU.
- endchoice
- config PREEMPT_RCU
- def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
- help
- This option enables preemptible-RCU code that is common between
- the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
- config RCU_FANOUT
- int "Tree-based hierarchical RCU fanout value"
- range 2 64 if 64BIT
- range 2 32 if !64BIT
- depends on TREE_RCU || TREE_PREEMPT_RCU
- default 64 if 64BIT
- default 32 if !64BIT
- help
- This option controls the fanout of hierarchical implementations
- of RCU, allowing RCU to work efficiently on machines with
- large numbers of CPUs. This value must be at least the fourth
- root of NR_CPUS, which allows NR_CPUS to be insanely large.
- The default value of RCU_FANOUT should be used for production
- systems, but if you are stress-testing the RCU implementation
- itself, small RCU_FANOUT values allow you to test large-system
- code paths on small(er) systems.
- Select a specific number if testing RCU itself.
- Take the default if unsure.
- config RCU_FANOUT_EXACT
- bool "Disable tree-based hierarchical RCU auto-balancing"
- depends on TREE_RCU || TREE_PREEMPT_RCU
- default n
- help
- This option forces use of the exact RCU_FANOUT value specified,
- regardless of imbalances in the hierarchy. This is useful for
- testing RCU itself, and might one day be useful on systems with
- strong NUMA behavior.
- Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
- Say N if unsure.
- config RCU_FAST_NO_HZ
- bool "Accelerate last non-dyntick-idle CPU's grace periods"
- depends on NO_HZ && SMP && !SEC_FACTORY
- default n
- help
- This option causes RCU to attempt to accelerate grace periods
- in order to allow CPUs to enter dynticks-idle state more
- quickly. On the other hand, this option increases the overhead
- of the dynticks-idle checking, particularly on systems with
- large numbers of CPUs.
- Say Y if energy efficiency is critically important, particularly
- if you have relatively few CPUs.
- Say N if you are unsure.
- config RCU_FAST_NO_HZ_OFF_AT_BOOT
- bool "turn off rcu_fast_no_hz concept at boot time"
- depends on RCU_FAST_NO_HZ
- default n
- config TREE_RCU_TRACE
- def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
- select DEBUG_FS
- help
- This option provides tracing for the TREE_RCU and
- TREE_PREEMPT_RCU implementations, permitting Makefile to
- trivially select kernel/rcutree_trace.c.
- config RCU_BOOST
- bool "Enable RCU priority boosting"
- depends on RT_MUTEXES && PREEMPT_RCU
- default n
- help
- This option boosts the priority of preempted RCU readers that
- block the current preemptible RCU grace period for too long.
- This option also prevents heavy loads from blocking RCU
- callback invocation for all flavors of RCU.
- Say Y here if you are working with real-time apps or heavy loads
- Say N here if you are unsure.
- config RCU_BOOST_PRIO
- int "Real-time priority to boost RCU readers to"
- range 1 99
- depends on RCU_BOOST
- default 1
- help
- This option specifies the real-time priority to which preempted
- RCU readers are to be boosted. If you are working with CPU-bound
- real-time applications, you should specify a priority higher then
- the highest-priority CPU-bound application.
- Specify the real-time priority, or take the default if unsure.
- config RCU_BOOST_DELAY
- int "Milliseconds to delay boosting after RCU grace-period start"
- range 0 3000
- depends on RCU_BOOST
- default 500
- help
- This option specifies the time to wait after the beginning of
- a given grace period before priority-boosting preempted RCU
- readers blocking that grace period. Note that any RCU reader
- blocking an expedited RCU grace period is boosted immediately.
- Accept the default if unsure.
- endmenu # "RCU Subsystem"
- config IKCONFIG
- tristate "Kernel .config support"
- ---help---
- This option enables the complete Linux kernel ".config" file
- contents to be saved in the kernel. It provides documentation
- of which kernel options are used in a running kernel or in an
- on-disk kernel. This information can be extracted from the kernel
- image file with the script scripts/extract-ikconfig and used as
- input 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_PROC
- bool "Enable access to .config through /proc/config.gz"
- depends on IKCONFIG && PROC_FS
- ---help---
- This option enables access to the kernel configuration file
- through /proc/config.gz.
- config LOG_BUF_SHIFT
- int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
- range 12 21
- default 17
- depends on PRINTK
- help
- Select kernel log buffer size as a power of 2.
- Examples:
- 17 => 128 KB
- 16 => 64 KB
- 15 => 32 KB
- 14 => 16 KB
- 13 => 8 KB
- 12 => 4 KB
- #
- # Architectures with an unreliable sched_clock() should select this:
- #
- config HAVE_UNSTABLE_SCHED_CLOCK
- bool
- config GENERIC_SCHED_CLOCK
- bool
- menuconfig CGROUPS
- boolean "Control Group support"
- depends on EVENTFD
- help
- This option adds support for grouping sets of processes together, for
- use with process control subsystems such as Cpusets, CFS, memory
- controls or device isolation.
- See
- - Documentation/scheduler/sched-design-CFS.txt (CFS)
- - Documentation/cgroups/ (features for grouping, isolation
- and resource control)
- Say N if unsure.
- if CGROUPS
- config CGROUP_DEBUG
- bool "Example debug cgroup subsystem"
- default n
- help
- This option enables a simple cgroup subsystem that
- exports useful debugging information about the cgroups
- framework.
- Say N if unsure.
- config CGROUP_FREEZER
- bool "Freezer cgroup subsystem"
- help
- Provides a way to freeze and unfreeze all tasks in a
- cgroup.
- config CGROUP_DEVICE
- bool "Device controller for cgroups"
- help
- Provides a cgroup implementing whitelists for devices which
- a process in the cgroup can mknod or open.
- config CPUSETS
- bool "Cpuset support"
- help
- This option will let you create and manage CPUSETs which
- allow dynamically partitioning a system into sets of CPUs and
- Memory 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_CPUSET
- bool "Include legacy /proc/<pid>/cpuset file"
- depends on CPUSETS
- default y
- config CGROUP_CPUACCT
- bool "Simple CPU accounting cgroup subsystem"
- help
- Provides a simple Resource Controller for monitoring the
- total CPU consumed by the tasks in a cgroup.
- config RESOURCE_COUNTERS
- bool "Resource counters"
- help
- This option enables controller independent resource accounting
- infrastructure that works with cgroups.
- config CGROUP_MEM_RES_CTLR
- bool "Memory Resource Controller for Control Groups"
- depends on RESOURCE_COUNTERS
- select MM_OWNER
- help
- Provides a memory resource controller that manages both anonymous
- memory and page cache. (See Documentation/cgroups/memory.txt)
- Note that setting this option increases fixed memory overhead
- associated with each page of memory in the system. By this,
- 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
- usage tracking struct at boot. Total amount of this is printed out
- at boot.
- Only enable when you're ok with these trade offs and really
- sure you need the memory resource controller. Even when you enable
- this, you can set "cgroup_disable=memory" at your boot option to
- disable memory resource controller and you can avoid overheads.
- (and lose benefits of memory resource controller)
- This config option also selects MM_OWNER config option, which
- could in turn add some fork/exit overhead.
- config CGROUP_MEM_RES_CTLR_SWAP
- bool "Memory Resource Controller Swap Extension"
- depends on CGROUP_MEM_RES_CTLR && SWAP
- help
- Add swap management feature to memory resource controller. When you
- enable this, you can limit mem+swap usage per cgroup. In other words,
- when you disable this, memory resource controller has no cares to
- usage of swap...a process can exhaust all of the swap. This extension
- is useful when you want to avoid exhaustion swap but this itself
- adds more overheads and consumes memory for remembering information.
- Especially if you use 32bit system or small memory system, please
- be careful about enabling this. When memory resource controller
- is disabled by boot option, this will be automatically disabled and
- there 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 page
- size is 4096bytes, 512k per 1Gbytes of swap.
- config CGROUP_MEM_RES_CTLR_SWAP_ENABLED
- bool "Memory Resource Controller Swap Extension enabled by default"
- depends on CGROUP_MEM_RES_CTLR_SWAP
- default y
- help
- Memory Resource Controller Swap Extension comes with its price in
- a bigger memory consumption. General purpose distribution kernels
- which want to enable the feature but keep it disabled by default
- and let the user enable it by swapaccount boot command line
- parameter should have this option unselected.
- For those who want to have the feature enabled by default should
- select this option (if, for some reason, they need to disable it
- then swapaccount=0 does the trick).
- config CGROUP_MEM_RES_CTLR_KMEM
- bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
- depends on CGROUP_MEM_RES_CTLR && EXPERIMENTAL
- default n
- help
- The Kernel Memory extension for Memory Resource Controller can limit
- the amount of memory used by kernel objects in the system. Those are
- fundamentally different from the entities handled by the standard
- Memory Controller, which are page-based, and can be swapped. Users of
- the kmem extension can use it to guarantee that no group of processes
- will ever exhaust kernel resources alone.
- config CGROUP_PERF
- bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
- depends on PERF_EVENTS && CGROUPS
- help
- This option extends the per-cpu mode to restrict monitoring to
- threads which belong to the cgroup specified and run on the
- designated cpu.
- Say N if unsure.
- menuconfig CGROUP_SCHED
- bool "Group CPU scheduler"
- default n
- help
- This feature lets CPU scheduler recognize task groups and control CPU
- bandwidth allocation to such task groups. It uses cgroups to group
- tasks.
- if CGROUP_SCHED
- config FAIR_GROUP_SCHED
- bool "Group scheduling for SCHED_OTHER"
- depends on CGROUP_SCHED
- default CGROUP_SCHED
- config CFS_BANDWIDTH
- bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
- depends on EXPERIMENTAL
- depends on FAIR_GROUP_SCHED
- default n
- help
- This option allows users to define CPU bandwidth rates (limits) for
- tasks running within the fair group scheduler. Groups with no limit
- set are considered to be unconstrained and will run with no
- restriction.
- See tip/Documentation/scheduler/sched-bwc.txt for more information.
- config RT_GROUP_SCHED
- bool "Group scheduling for SCHED_RR/FIFO"
- depends on EXPERIMENTAL
- depends on CGROUP_SCHED
- default n
- help
- This feature lets you explicitly allocate real CPU bandwidth
- to task groups. If enabled, it will also make it impossible to
- schedule realtime tasks for non-root users until you allocate
- realtime bandwidth for them.
- See Documentation/scheduler/sched-rt-group.txt for more information.
- endif #CGROUP_SCHED
- config BLK_CGROUP
- tristate "Block IO controller"
- depends on BLOCK
- default n
- ---help---
- Generic block IO controller cgroup interface. This is the common
- cgroup interface which should be used by various IO controlling
- policies.
- Currently, CFQ IO scheduler uses it to recognize task groups and
- control disk bandwidth allocation (proportional time slice allocation)
- to such task groups. It is also used by bio throttling logic in
- block 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. For
- enabling proportional weight division of disk bandwidth in CFQ, set
- CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
- CONFIG_BLK_DEV_THROTTLING=y.
- See Documentation/cgroups/blkio-controller.txt for more information.
- config DEBUG_BLK_CGROUP
- bool "Enable Block IO controller debugging"
- depends on BLK_CGROUP
- default n
- ---help---
- Enable some debugging help. Currently it exports additional stat
- files in a cgroup which can be useful for debugging.
- endif # CGROUPS
- config CHECKPOINT_RESTORE
- bool "Checkpoint/restore support" if EXPERT
- default n
- help
- Enables 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 filesystem
- entries.
- If unsure, say N here.
- menuconfig NAMESPACES
- 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
- or same user id or pid may refer to different tasks when used in
- different namespaces.
- if NAMESPACES
- config UTS_NS
- bool "UTS namespace"
- default y
- help
- In this namespace tasks see different info provided with the
- uname() system call
- config IPC_NS
- bool "IPC namespace"
- depends on (SYSVIPC || POSIX_MQUEUE)
- default y
- help
- In this namespace tasks work with IPC ids which correspond to
- different IPC objects in different namespaces.
- config USER_NS
- bool "User namespace (EXPERIMENTAL)"
- depends on EXPERIMENTAL
- default y
- help
- This allows containers, i.e. vservers, to use user namespaces
- to provide different user info for different servers.
- If unsure, say N.
- config PID_NS
- bool "PID Namespaces"
- default y
- help
- Support process id namespaces. This allows having multiple
- processes with the same pid as long as they are in different
- pid namespaces. This is a building block of containers.
- config NET_NS
- bool "Network namespace"
- depends on NET
- default y
- help
- Allow user space to create what appear to be multiple instances
- of the network stack.
- endif # NAMESPACES
- config SCHED_AUTOGROUP
- bool "Automatic process group scheduling"
- select EVENTFD
- select CGROUPS
- select CGROUP_SCHED
- select FAIR_GROUP_SCHED
- help
- This option optimizes the scheduler for common desktop workloads by
- automatically creating and populating task groups. This separation
- of workloads isolates aggressive CPU burners (like build jobs) from
- desktop applications. Task group autogeneration is currently based
- upon task session.
- config MM_OWNER
- bool
- config SYSFS_DEPRECATED
- bool "Enable deprecated sysfs features to support old userspace tools"
- depends on SYSFS
- default n
- help
- This option adds code that switches the layout of the "block" class
- devices, 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 is
- passed 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 all
- major distributions and tools handle this just fine.
- Recent distributions and userspace tools after 2009/2010 depend on
- the existence of /sys/class/block/, and will not work with this
- option enabled.
- Only if you are using a new kernel on an old distribution, you might
- need to say Y here.
- config SYSFS_DEPRECATED_V2
- bool "Enable deprecated sysfs features by default"
- default n
- depends on SYSFS
- depends on SYSFS_DEPRECATED
- help
- Enable deprecated sysfs by default.
- See the CONFIG_SYSFS_DEPRECATED option for more details about this
- option.
- Only if you are using a new kernel on an old distribution, you might
- need to say Y here. Even then, odds are you would not need it
- enabled, you can always pass the boot option if absolutely necessary.
- config RELAY
- bool "Kernel->user space relay support (formerly relayfs)"
- help
- This option enables support for relay interface support in
- certain file systems (such as debugfs).
- It is designed to provide an efficient mechanism for tools and
- facilities to relay large amounts of data from kernel space to
- user space.
- If unsure, say N.
- config BLK_DEV_INITRD
- bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
- depends on BROKEN || !FRV
- help
- The initial RAM filesystem is a ramfs which is loaded by the
- boot loader (loadlin or lilo) and that is mounted as root
- before the normal boot procedure. It is typically used to
- load 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, this
- also enables initial RAM disk (initrd) support and adds
- 15 Kbytes (more on some other architectures) to the kernel size.
- If unsure say Y.
- if BLK_DEV_INITRD
- source "usr/Kconfig"
- endif
- config CC_OPTIMIZE_FOR_SIZE
- bool "Optimize for size"
- help
- Enabling this option will pass "-Os" instead of "-O2" to gcc
- resulting in a smaller kernel.
- If unsure, say Y.
- config SYSCTL
- bool
- config ANON_INODES
- bool
- config PANIC_TIMEOUT
- int "Default panic timeout"
- default 0
- help
- Set default panic timeout.
- menuconfig EXPERT
- bool "Configure standard kernel features (expert users)"
- # Unhide debug options, to make the on-by-default options visible
- select DEBUG_KERNEL
- 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 UID16
- 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 EXPERT
- depends on PROC_SYSCTL
- default n
- select SYSCTL
- ---help---
- sys_sysctl uses binary paths that have been found challenging
- to properly maintain and use. The interface in /proc/sys
- using paths with ascii names is now the primary path to this
- information.
- Almost nothing using the binary sysctl interface so if you are
- trying to save some space it is probably safe to disable this,
- making your kernel marginally smaller.
- If unsure say N here.
- config KALLSYMS
- 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
- symbolic stack backtraces. This increases the size of the kernel
- somewhat, as all symbols have to be loaded into the kernel image.
- config KALLSYMS_ALL
- bool "Include all symbols in kallsyms"
- depends on DEBUG_KERNEL && KALLSYMS
- help
- Normally kallsyms only contains the symbols of functions for nicer
- OOPS messages and backtraces (i.e., symbols from the text and inittext
- sections). This is sufficient for most cases. And only in very rare
- cases (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 kernel
- image (i.e., symbols from all sections) in cost of increased kernel
- size (depending on the kernel configuration, it may be 300KiB or
- something like this).
- Say N unless you really need all symbols.
- config HOTPLUG
- bool "Support for hot-pluggable devices" if EXPERT
- default y
- help
- This option is provided for the case where no hotplug or uevent
- capabilities is wanted by the kernel. You should only consider
- disabling this option for embedded systems that do not use modules, a
- dynamic /dev tree, or dynamic device discovery. Just say Y.
- config PRINTK
- default y
- 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
- and makes the kernel more or less silent. As this makes it
- very difficult to diagnose system problems, saying N here is
- strongly discouraged.
- config BUG
- bool "BUG() support" if EXPERT
- default y
- help
- Disabling this option eliminates support for BUG and WARN, reducing
- the size of your kernel image and potentially quietly ignoring
- numerous fatal conditions. You should only consider disabling this
- option for embedded systems with no facilities for reporting errors.
- Just say Y.
- config ELF_CORE
- default y
- 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 EXPERT
- depends on HAVE_PCSPKR_PLATFORM
- select I8253_LOCK
- default y
- help
- This option allows to disable the internal PC-Speaker
- support, saving some memory.
- config HAVE_PCSPKR_PLATFORM
- bool
- config BASE_FULL
- default y
- 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 EXPERT
- default y
- select RT_MUTEXES
- help
- Disabling this option will cause the kernel to be built without
- support for "fast userspace mutexes". The resulting kernel may not
- run glibc-based applications correctly.
- config EPOLL
- bool "Enable eventpoll support" if EXPERT
- default y
- select ANON_INODES
- help
- Disabling this option will cause the kernel to be built without
- support for epoll family of system calls.
- config SIGNALFD
- bool "Enable signalfd() system call" if EXPERT
- select ANON_INODES
- default y
- help
- Enable the signalfd() system call that allows to receive signals
- on a file descriptor.
- If unsure, say Y.
- config TIMERFD
- bool "Enable timerfd() system call" if EXPERT
- select ANON_INODES
- default y
- help
- Enable the timerfd() system call that allows to receive timer
- events on a file descriptor.
- If unsure, say Y.
- config EVENTFD
- bool "Enable eventfd() system call" if EXPERT
- select ANON_INODES
- default y
- help
- Enable the eventfd() system call that allows to receive both
- kernel notification (ie. KAIO) or userspace notifications.
- If unsure, say Y.
- config SHMEM
- bool "Use full shmem filesystem" if EXPERT
- default y
- depends on MMU
- help
- The shmem is an internal filesystem used to manage shared memory.
- It is backed by swap and manages resource limits. It is also exported
- to userspace as tmpfs if TMPFS is enabled. Disabling this
- option replaces shmem and tmpfs with the much simpler ramfs code,
- which may be appropriate on small systems without swap.
- config AIO
- bool "Enable AIO support" if EXPERT
- default y
- help
- This option enables POSIX asynchronous I/O which may by used
- by some high performance threaded applications. Disabling
- this option saves about 7k.
- 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 HAVE_PERF_EVENTS
- bool
- help
- See tools/perf/design.txt for details.
- config PERF_USE_VMALLOC
- bool
- help
- See tools/perf/design.txt for details
- menu "Kernel Performance Events And Counters"
- config PERF_EVENTS
- bool "Kernel performance events and counters"
- default y if (PROFILING || PERF_COUNTERS)
- depends on HAVE_PERF_EVENTS
- select ANON_INODES
- select IRQ_WORK
- help
- Enable kernel support for various performance events provided
- by software and hardware.
- Software events are supported either built-in or via the
- use of generic tracepoints.
- Most modern CPUs support performance events via performance
- counter registers. These registers count the number of certain
- types of hw events: such as instructions executed, cachemisses
- suffered, or branches mis-predicted - without slowing down the
- kernel or applications. These registers can also trigger interrupts
- when a threshold number of events have passed - and can thus be
- used to profile the code that runs on that CPU.
- The Linux Performance Event subsystem provides an abstraction of
- these software and hardware event capabilities, available via a
- system call and used by the "perf" utility in tools/perf/. It
- provides per task and per CPU counters, and it provides event
- capabilities on top of those.
- Say Y if unsure.
- config PERF_COUNTERS
- bool "Kernel performance counters (old config option)"
- depends on HAVE_PERF_EVENTS
- help
- This config has been obsoleted by the PERF_EVENTS
- config option - please see that one for details.
- It has no effect on the kernel whether you enable
- it or not, it is a compatibility placeholder.
- Say N if unsure.
- config DEBUG_PERF_USE_VMALLOC
- default n
- bool "Debug: use vmalloc to back perf mmap() buffers"
- depends on PERF_EVENTS && DEBUG_KERNEL
- select PERF_USE_VMALLOC
- help
- Use vmalloc memory to back perf mmap() buffers.
- Mostly useful for debugging the vmalloc code on platforms
- that don't require it.
- Say N if unsure.
- endmenu
- config VM_EVENT_COUNTERS
- default y
- 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 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 EXPERT
- depends on PCI
- help
- This enables workarounds for various PCI chipset
- bugs/quirks. Disable this only if your target machine is
- unaffected by PCI quirks.
- config SLUB_DEBUG
- default y
- bool "Enable SLUB debugging support" if EXPERT
- depends on SLUB && SYSFS
- help
- SLUB has extensive debug support features. Disabling these can
- result in significant savings in code size. This also disables
- SLUB sysfs support. /sys/slab will not exist and there will be
- no support for cache validation etc.
- config COMPAT_BRK
- bool "Disable heap randomization"
- default y
- help
- Randomizing heap placement makes heap exploits harder, but it
- also breaks ancient binaries (including anything libc5 based).
- This option changes the bootup default to heap randomization
- disabled, 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.
- choice
- prompt "Choose SLAB allocator"
- default SLUB
- help
- This option allows to select a slab allocator.
- config SLAB
- bool "SLAB"
- help
- The regular slab allocator that is established and known to work
- well in all environments. It organizes cache hot objects in
- per cpu and per node queues.
- config SLUB
- depends on BROKEN || NUMA || !DISCONTIGMEM
- bool "SLUB (Unqueued Allocator)"
- help
- SLUB is a slab allocator that minimizes cache line usage
- instead of managing queues of cached objects (SLAB approach).
- Per cpu caching is realized using slabs of objects instead
- of queues of objects. SLUB can use memory efficiently
- and has enhanced diagnostics. SLUB is the default choice for
- a slab allocator.
- config SLOB
- depends on EXPERT
- bool "SLOB (Simple Allocator)"
- help
- SLOB replaces the stock allocator with a drastically simpler
- allocator. SLOB is generally more space efficient but
- does not perform as well on large systems.
- endchoice
- config MMAP_ALLOW_UNINITIALIZED
- bool "Allow mmapped anonymous memory to be uninitialized"
- depends on EXPERT && !MMU
- default n
- help
- Normally, and according to the Linux spec, anonymous memory obtained
- from mmap() has it's contents cleared before it is passed to
- userspace. Enabling this config option allows you to request that
- mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
- providing 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 by
- ELF-FDPIC binfmt's brk and stack allocator.
- Because of the obvious security issues, this option should only be
- enabled on embedded devices where you control what is run in
- userspace. 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 DEFERRED_INITCALLS
- bool "Deferred initcalls support"
- default n
- help
- Say 'y' here to include support for deferred initcalls
- config PROFILING
- bool "Profiling support"
- help
- Say Y here to enable the extended profiling support mechanisms used
- by profilers such as OProfile.
- #
- # Place an empty function call at each tracepoint site. Can be
- # dynamically changed for a probe function.
- #
- config TRACEPOINTS
- bool
- source "arch/Kconfig"
- endmenu # General setup
- config HAVE_GENERIC_DMA_COHERENT
- bool
- default n
- config SLABINFO
- bool
- depends on PROC_FS
- depends on SLAB || SLUB_DEBUG
- default y
- config RT_MUTEXES
- boolean
- config BASE_SMALL
- int
- default 0 if BASE_FULL
- default 1 if !BASE_FULL
- menuconfig MODULES
- bool "Enable loadable module support"
- help
- Kernel modules are small pieces of compiled code which can
- be inserted in the running kernel, rather than being
- permanently 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 (by
- answering M instead of Y where indicated): this is most
- useful for infrequently used options which are not required
- for booting. For more information, see the man pages for
- modprobe, lsmod, modinfo, insmod and rmmod.
- If you say Y here, you will need to run "make
- modules_install" to put the modules under /lib/modules/
- where modprobe can find them (you may need to be root to do
- this).
- If unsure, say Y.
- if MODULES
- config MODULE_FORCE_LOAD
- bool "Forced module loading"
- default n
- help
- Allow loading of modules without version information (ie. modprobe
- --force). Forced module loading sets the 'F' (forced) taint flag and
- is usually a really bad idea.
- config MODULE_UNLOAD
- bool "Module unloading"
- help
- Without this option you will not be able to unload any
- modules (note that some modules may not be unloadable
- anyway), which makes your kernel smaller, faster
- and simpler. If unsure, say Y.
- config MODULE_FORCE_UNLOAD
- bool "Forced module unloading"
- depends on MODULE_UNLOAD && EXPERIMENTAL
- help
- This option allows you to force a module to unload, even if the
- kernel believes it is unsafe: the kernel will remove the module
- without waiting for anyone to stop using it (using the -f option to
- rmmod). This is mainly for kernel developers and desperate users.
- If unsure, say N.
- config MODVERSIONS
- bool "Module versioning support"
- help
- Usually, you have to use modules compiled with your kernel.
- Saying Y here makes it sometimes possible to use modules
- compiled for different kernels, by adding enough information
- to the modules to (hopefully) spot any changes which would
- make them incompatible with the kernel you are running. If
- unsure, say N.
- config MODULE_SRCVERSION_ALL
- bool "Source checksum for all modules"
- help
- Modules which contain a MODULE_VERSION get an extra "srcversion"
- field inserted into their modinfo section, which contains a
- sum of the source files which made it. This helps maintainers
- see exactly which source was used to build a module (since
- others sometimes change the module source without updating
- the version). With this option, such a "srcversion" field
- will be created for all modules. If unsure, say N.
- endif # MODULES
- config INIT_ALL_POSSIBLE
- bool
- help
- Back when each arch used to define their own cpu_online_mask and
- cpu_possible_mask, some of them chose to initialize cpu_possible_mask
- with all 1s, and others with all 0s. When they were centralised,
- it was better to provide this option than to break all the archs
- and have several arch maintainers pursuing me down dark alleys.
- config STOP_MACHINE
- bool
- default y
- depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
- help
- Need stop_machine() primitive.
- source "block/Kconfig"
- config PREEMPT_NOTIFIERS
- bool
- config PADATA
- depends on SMP
- bool
- source "kernel/Kconfig.locks"
|