Merge tag 'v3.3.7' into 3.3/master
[zen-stable.git] / init / Kconfig
blobabe492c497dd8534d250cfb9044e4beca8ead892
1 config ARCH
2         string
3         option env="ARCH"
5 config KERNELVERSION
6         string
7         option env="KERNELVERSION"
9 config DEFCONFIG_LIST
10         string
11         depends on !UML
12         option defconfig_list
13         default "/lib/modules/$UNAME_RELEASE/.config"
14         default "/etc/kernel-config"
15         default "/boot/config-$UNAME_RELEASE"
16         default "$ARCH_DEFCONFIG"
17         default "arch/$ARCH/defconfig"
19 config CONSTRUCTORS
20         bool
21         depends on !UML
23 config HAVE_IRQ_WORK
24         bool
26 config IRQ_WORK
27         bool
28         depends on HAVE_IRQ_WORK
30 menu "General setup"
32 choice
33         prompt "CPU Scheduler"
34         default SCHED_BFS
35         ---help---
36           Select the CPU Scheduler to be used.
38 config SCHED_BFS
39         bool "Brain Fuck Scheduler (BFS)"
40         ---help---
41           The Brain Fuck CPU Scheduler for excellent interactivity and
42           responsiveness on the desktop and solid scalability on normal
43           hardware. Not recommended for 4096 CPUs.
45           Currently incompatible with the Group CPU scheduler, and RCU TORTURE
46           TEST so these options are disabled.
48           Say Y here.
50 config SCHED_CFS
51         bool "Completely Fair Scheduler (CFS)"
52         ---help---
53         This is the default cpu scheduler found in the upstream kernel.
54 endchoice
56 config SCHED_BFS_AUTOISO
57         bool "Automatically use SCHED_ISO policy for X"
58         depends on SCHED_BFS
59         default n
60         ---help---
61           Selecting this option will automatically use the SCHED_ISO scheduling
62           policy for X, resulting in an interactivity boost. This *may* cause
63           things like skipping sound on audio applications that are not run
64           as SCHED_ISO.
66           Tasks (including X) can be run as sched_iso manually using schedtool.
69 choice
70         prompt "Zen-Tune Profile"
71         default ZEN_CUSTOM
72         ---help---
73           Select the tunable profile to be used.
75 config ZEN_DEFAULT
76         bool "Default"
77         ---help---
78           This option sets tunables to default.
80             DIRTY_RATIO: 1
81             BACKGROUND_DIRTY_RATIO: 10
82            *BFS ONLY*
83             ISO_CPU: 70
84             RR_INTERVAL: 6
85            *CFS ONLY*
86             SCHED LATENCY: 6 ms
87             SCHED LATENCY GRANULARITY: 0.75 ms
90 config ZEN_CUSTOM
91         bool "Custom"
92         ---help---
93           This option sets tunables to optimal desktop values.
94           Changes to these values can be adjusted in include/linux/zentune.h
96             DIRTY_RATIO: 50
97             BACKGROUND_DIRTY_RATIO: 20
98            *BFS ONLY*
99             ISO_CPU: 25
100             RR_INTERVAL: 3
101            *CFS ONLY*
102             SCHED LATENCY: 3 ms
103             SCHED LATENCY GRANULARITY: 0.3 ms
106 endchoice
108 config EXPERIMENTAL
109         bool "Prompt for development and/or incomplete code/drivers"
110         ---help---
111           Some of the various things that Linux supports (such as network
112           drivers, file systems, network protocols, etc.) can be in a state
113           of development where the functionality, stability, or the level of
114           testing is not yet high enough for general use. This is usually
115           known as the "alpha-test" phase among developers. If a feature is
116           currently in alpha-test, then the developers usually discourage
117           uninformed widespread use of this feature by the general public to
118           avoid "Why doesn't this work?" type mail messages. However, active
119           testing and use of these systems is welcomed. Just be aware that it
120           may not meet the normal level of reliability or it may fail to work
121           in some special cases. Detailed bug reports from people familiar
122           with the kernel internals are usually welcomed by the developers
123           (before submitting bug reports, please read the documents
124           <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
125           <file:Documentation/BUG-HUNTING>, and
126           <file:Documentation/oops-tracing.txt> in the kernel source).
128           This option will also make obsoleted drivers available. These are
129           drivers that have been replaced by something else, and/or are
130           scheduled to be removed in a future kernel release.
132           Unless you intend to help test and develop a feature or driver that
133           falls into this category, or you have a situation that requires
134           using these features, you should probably say N here, which will
135           cause the configurator to present you with fewer choices. If
136           you say Y here, you will be offered the choice of using features or
137           drivers that are currently considered to be in the alpha-test phase.
139 config BROKEN
140         bool
142 config BROKEN_ON_SMP
143         bool
144         depends on BROKEN || !SMP
145         default y
147 config INIT_ENV_ARG_LIMIT
148         int
149         default 32 if !UML
150         default 128 if UML
151         help
152           Maximum of each of the number of arguments and environment
153           variables passed to init from the kernel command line.
156 config CROSS_COMPILE
157         string "Cross-compiler tool prefix"
158         help
159           Same as running 'make CROSS_COMPILE=prefix-' but stored for
160           default make runs in this kernel build directory.  You don't
161           need to set this unless you want the configured kernel build
162           directory to select the cross-compiler automatically.
164 config LOCALVERSION
165         string "Local version - append to kernel release"
166         help
167           Append an extra string to the end of your kernel version.
168           This will show up when you type uname, for example.
169           The string you set here will be appended after the contents of
170           any files with a filename matching localversion* in your
171           object and source tree, in that order.  Your total string can
172           be a maximum of 64 characters.
174 config LOCALVERSION_AUTO
175         bool "Automatically append version information to the version string"
176         default y
177         help
178           This will try to automatically determine if the current tree is a
179           release tree by looking for git tags that belong to the current
180           top of tree revision.
182           A string of the format -gxxxxxxxx will be added to the localversion
183           if a git-based tree is found.  The string generated by this will be
184           appended after any matching localversion* files, and after the value
185           set in CONFIG_LOCALVERSION.
187           (The actual string used here is the first eight characters produced
188           by running the command:
190             $ git rev-parse --verify HEAD
192           which is done within the script "scripts/setlocalversion".)
194 config HAVE_KERNEL_GZIP
195         bool
197 config HAVE_KERNEL_BZIP2
198         bool
200 config HAVE_KERNEL_LZMA
201         bool
203 config HAVE_KERNEL_XZ
204         bool
206 config HAVE_KERNEL_LZO
207         bool
209 choice
210         prompt "Kernel compression mode"
211         default KERNEL_GZIP
212         depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
213         help
214           The linux kernel is a kind of self-extracting executable.
215           Several compression algorithms are available, which differ
216           in efficiency, compression and decompression speed.
217           Compression speed is only relevant when building a kernel.
218           Decompression speed is relevant at each boot.
220           If you have any problems with bzip2 or lzma compressed
221           kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
222           version of this functionality (bzip2 only), for 2.4, was
223           supplied by Christian Ludwig)
225           High compression options are mostly useful for users, who
226           are low on disk space (embedded systems), but for whom ram
227           size matters less.
229           If in doubt, select 'gzip'
231 config KERNEL_GZIP
232         bool "Gzip"
233         depends on HAVE_KERNEL_GZIP
234         help
235           The old and tried gzip compression. It provides a good balance
236           between compression ratio and decompression speed.
238 config KERNEL_BZIP2
239         bool "Bzip2"
240         depends on HAVE_KERNEL_BZIP2
241         help
242           Its compression ratio and speed is intermediate.
243           Decompression speed is slowest among the three.  The kernel
244           size is about 10% smaller with bzip2, in comparison to gzip.
245           Bzip2 uses a large amount of memory. For modern kernels you
246           will need at least 8MB RAM or more for booting.
248 config KERNEL_LZMA
249         bool "LZMA"
250         depends on HAVE_KERNEL_LZMA
251         help
252           The most recent compression algorithm.
253           Its ratio is best, decompression speed is between the other
254           two. Compression is slowest.  The kernel size is about 33%
255           smaller with LZMA in comparison to gzip.
257 config KERNEL_XZ
258         bool "XZ"
259         depends on HAVE_KERNEL_XZ
260         help
261           XZ uses the LZMA2 algorithm and instruction set specific
262           BCJ filters which can improve compression ratio of executable
263           code. The size of the kernel is about 30% smaller with XZ in
264           comparison to gzip. On architectures for which there is a BCJ
265           filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
266           will create a few percent smaller kernel than plain LZMA.
268           The speed is about the same as with LZMA: The decompression
269           speed of XZ is better than that of bzip2 but worse than gzip
270           and LZO. Compression is slow.
272 config KERNEL_LZO
273         bool "LZO"
274         depends on HAVE_KERNEL_LZO
275         help
276           Its compression ratio is the poorest among the 4. The kernel
277           size is about 10% bigger than gzip; however its speed
278           (both compression and decompression) is the fastest.
280 endchoice
282 config DEFAULT_HOSTNAME
283         string "Default hostname"
284         default "(none)"
285         help
286           This option determines the default system hostname before userspace
287           calls sethostname(2). The kernel traditionally uses "(none)" here,
288           but you may wish to use a different default here to make a minimal
289           system more usable with less configuration.
291 config SWAP
292         bool "Support for paging of anonymous memory (swap)"
293         depends on MMU && BLOCK
294         default y
295         help
296           This option allows you to choose whether you want to have support
297           for so called swap devices or swap files in your kernel that are
298           used to provide more virtual memory than the actual RAM present
299           in your computer.  If unsure say Y.
301 config SYSVIPC
302         bool "System V IPC"
303         ---help---
304           Inter Process Communication is a suite of library functions and
305           system calls which let processes (running programs) synchronize and
306           exchange information. It is generally considered to be a good thing,
307           and some programs won't run unless you say Y here. In particular, if
308           you want to run the DOS emulator dosemu under Linux (read the
309           DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
310           you'll need to say Y here.
312           You can find documentation about IPC with "info ipc" and also in
313           section 6.4 of the Linux Programmer's Guide, available from
314           <http://www.tldp.org/guides.html>.
316 config SYSVIPC_SYSCTL
317         bool
318         depends on SYSVIPC
319         depends on SYSCTL
320         default y
322 config POSIX_MQUEUE
323         bool "POSIX Message Queues"
324         depends on NET && EXPERIMENTAL
325         ---help---
326           POSIX variant of message queues is a part of IPC. In POSIX message
327           queues every message has a priority which decides about succession
328           of receiving it by a process. If you want to compile and run
329           programs written e.g. for Solaris with use of its POSIX message
330           queues (functions mq_*) say Y here.
332           POSIX message queues are visible as a filesystem called 'mqueue'
333           and can be mounted somewhere if you want to do filesystem
334           operations on message queues.
336           If unsure, say Y.
338 config POSIX_MQUEUE_SYSCTL
339         bool
340         depends on POSIX_MQUEUE
341         depends on SYSCTL
342         default y
344 config BSD_PROCESS_ACCT
345         bool "BSD Process Accounting"
346         help
347           If you say Y here, a user level program will be able to instruct the
348           kernel (via a special system call) to write process accounting
349           information to a file: whenever a process exits, information about
350           that process will be appended to the file by the kernel.  The
351           information includes things such as creation time, owning user,
352           command name, memory usage, controlling terminal etc. (the complete
353           list is in the struct acct in <file:include/linux/acct.h>).  It is
354           up to the user level program to do useful things with this
355           information.  This is generally a good idea, so say Y.
357 config BSD_PROCESS_ACCT_V3
358         bool "BSD Process Accounting version 3 file format"
359         depends on BSD_PROCESS_ACCT
360         default n
361         help
362           If you say Y here, the process accounting information is written
363           in a new file format that also logs the process IDs of each
364           process and it's parent. Note that this file format is incompatible
365           with previous v0/v1/v2 file formats, so you will need updated tools
366           for processing it. A preliminary version of these tools is available
367           at <http://www.gnu.org/software/acct/>.
369 config FHANDLE
370         bool "open by fhandle syscalls"
371         select EXPORTFS
372         help
373           If you say Y here, a user level program will be able to map
374           file names to handle and then later use the handle for
375           different file system operations. This is useful in implementing
376           userspace file servers, which now track files using handles instead
377           of names. The handle would remain the same even if file names
378           get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
379           syscalls.
381 config TASKSTATS
382         bool "Export task/process statistics through netlink (EXPERIMENTAL)"
383         depends on NET
384         default n
385         help
386           Export selected statistics for tasks/processes through the
387           generic netlink interface. Unlike BSD process accounting, the
388           statistics are available during the lifetime of tasks/processes as
389           responses to commands. Like BSD accounting, they are sent to user
390           space on task exit.
392           Say N if unsure.
394 config TASK_DELAY_ACCT
395         bool "Enable per-task delay accounting (EXPERIMENTAL)"
396         depends on TASKSTATS
397         help
398           Collect information on time spent by a task waiting for system
399           resources like cpu, synchronous block I/O completion and swapping
400           in pages. Such statistics can help in setting a task's priorities
401           relative to other tasks for cpu, io, rss limits etc.
403           Say N if unsure.
405 config TASK_XACCT
406         bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
407         depends on TASKSTATS
408         help
409           Collect extended task accounting data and send the data
410           to userland for processing over the taskstats interface.
412           Say N if unsure.
414 config TASK_IO_ACCOUNTING
415         bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
416         depends on TASK_XACCT
417         help
418           Collect information on the number of bytes of storage I/O which this
419           task has caused.
421           Say N if unsure.
423 config AUDIT
424         bool "Auditing support"
425         depends on NET
426         help
427           Enable auditing infrastructure that can be used with another
428           kernel subsystem, such as SELinux (which requires this for
429           logging of avc messages output).  Does not do system-call
430           auditing without CONFIG_AUDITSYSCALL.
432 config AUDITSYSCALL
433         bool "Enable system-call auditing support"
434         depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || ARM)
435         default y if SECURITY_SELINUX
436         help
437           Enable low-overhead system-call auditing infrastructure that
438           can be used independently or with another kernel subsystem,
439           such as SELinux.
441 config AUDIT_WATCH
442         def_bool y
443         depends on AUDITSYSCALL
444         select FSNOTIFY
446 config AUDIT_TREE
447         def_bool y
448         depends on AUDITSYSCALL
449         select FSNOTIFY
451 config AUDIT_LOGINUID_IMMUTABLE
452         bool "Make audit loginuid immutable"
453         depends on AUDIT
454         help
455           The config option toggles if a task setting its loginuid requires
456           CAP_SYS_AUDITCONTROL or if that task should require no special permissions
457           but should instead only allow setting its loginuid if it was never
458           previously set.  On systems which use systemd or a similar central
459           process to restart login services this should be set to true.  On older
460           systems in which an admin would typically have to directly stop and
461           start processes this should be set to false.  Setting this to true allows
462           one to drop potentially dangerous capabilites from the login tasks,
463           but may not be backwards compatible with older init systems.
465 source "kernel/irq/Kconfig"
467 menu "RCU Subsystem"
469 choice
470         prompt "RCU Implementation"
471         default TREE_RCU
473 config TREE_RCU
474         bool "Tree-based hierarchical RCU"
475         depends on !PREEMPT && SMP
476         help
477           This option selects the RCU implementation that is
478           designed for very large SMP system with hundreds or
479           thousands of CPUs.  It also scales down nicely to
480           smaller systems.
482 config TREE_PREEMPT_RCU
483         bool "Preemptible tree-based hierarchical RCU"
484         depends on PREEMPT && SMP
485         help
486           This option selects the RCU implementation that is
487           designed for very large SMP systems with hundreds or
488           thousands of CPUs, but for which real-time response
489           is also required.  It also scales down nicely to
490           smaller systems.
492 config TINY_RCU
493         bool "UP-only small-memory-footprint RCU"
494         depends on !PREEMPT && !SMP
495         help
496           This option selects the RCU implementation that is
497           designed for UP systems from which real-time response
498           is not required.  This option greatly reduces the
499           memory footprint of RCU.
501 config TINY_PREEMPT_RCU
502         bool "Preemptible UP-only small-memory-footprint RCU"
503         depends on PREEMPT && !SMP
504         help
505           This option selects the RCU implementation that is designed
506           for real-time UP systems.  This option greatly reduces the
507           memory footprint of RCU.
509 endchoice
511 config PREEMPT_RCU
512         def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
513         help
514           This option enables preemptible-RCU code that is common between
515           the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
517 config RCU_TRACE
518         bool "Enable tracing for RCU"
519         help
520           This option provides tracing in RCU which presents stats
521           in debugfs for debugging RCU implementation.
523           Say Y here if you want to enable RCU tracing
524           Say N if you are unsure.
526 config RCU_FANOUT
527         int "Tree-based hierarchical RCU fanout value"
528         range 2 64 if 64BIT
529         range 2 32 if !64BIT
530         depends on TREE_RCU || TREE_PREEMPT_RCU
531         default 64 if 64BIT
532         default 32 if !64BIT
533         help
534           This option controls the fanout of hierarchical implementations
535           of RCU, allowing RCU to work efficiently on machines with
536           large numbers of CPUs.  This value must be at least the fourth
537           root of NR_CPUS, which allows NR_CPUS to be insanely large.
538           The default value of RCU_FANOUT should be used for production
539           systems, but if you are stress-testing the RCU implementation
540           itself, small RCU_FANOUT values allow you to test large-system
541           code paths on small(er) systems.
543           Select a specific number if testing RCU itself.
544           Take the default if unsure.
546 config RCU_FANOUT_EXACT
547         bool "Disable tree-based hierarchical RCU auto-balancing"
548         depends on TREE_RCU || TREE_PREEMPT_RCU
549         default n
550         help
551           This option forces use of the exact RCU_FANOUT value specified,
552           regardless of imbalances in the hierarchy.  This is useful for
553           testing RCU itself, and might one day be useful on systems with
554           strong NUMA behavior.
556           Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
558           Say N if unsure.
560 config RCU_FAST_NO_HZ
561         bool "Accelerate last non-dyntick-idle CPU's grace periods"
562         depends on NO_HZ && SMP
563         default n
564         help
565           This option causes RCU to attempt to accelerate grace periods
566           in order to allow CPUs to enter dynticks-idle state more
567           quickly.  On the other hand, this option increases the overhead
568           of the dynticks-idle checking, particularly on systems with
569           large numbers of CPUs.
571           Say Y if energy efficiency is critically important, particularly
572                 if you have relatively few CPUs.
574           Say N if you are unsure.
576 config TREE_RCU_TRACE
577         def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
578         select DEBUG_FS
579         help
580           This option provides tracing for the TREE_RCU and
581           TREE_PREEMPT_RCU implementations, permitting Makefile to
582           trivially select kernel/rcutree_trace.c.
584 config RCU_BOOST
585         bool "Enable RCU priority boosting"
586         depends on RT_MUTEXES && PREEMPT_RCU
587         default n
588         help
589           This option boosts the priority of preempted RCU readers that
590           block the current preemptible RCU grace period for too long.
591           This option also prevents heavy loads from blocking RCU
592           callback invocation for all flavors of RCU.
594           Say Y here if you are working with real-time apps or heavy loads
595           Say N here if you are unsure.
597 config RCU_BOOST_PRIO
598         int "Real-time priority to boost RCU readers to"
599         range 1 99
600         depends on RCU_BOOST
601         default 1
602         help
603           This option specifies the real-time priority to which preempted
604           RCU readers are to be boosted.  If you are working with CPU-bound
605           real-time applications, you should specify a priority higher then
606           the highest-priority CPU-bound application.
608           Specify the real-time priority, or take the default if unsure.
610 config RCU_BOOST_DELAY
611         int "Milliseconds to delay boosting after RCU grace-period start"
612         range 0 3000
613         depends on RCU_BOOST
614         default 500
615         help
616           This option specifies the time to wait after the beginning of
617           a given grace period before priority-boosting preempted RCU
618           readers blocking that grace period.  Note that any RCU reader
619           blocking an expedited RCU grace period is boosted immediately.
621           Accept the default if unsure.
623 endmenu # "RCU Subsystem"
625 config IKCONFIG
626         tristate "Kernel .config support"
627         ---help---
628           This option enables the complete Linux kernel ".config" file
629           contents to be saved in the kernel. It provides documentation
630           of which kernel options are used in a running kernel or in an
631           on-disk kernel.  This information can be extracted from the kernel
632           image file with the script scripts/extract-ikconfig and used as
633           input to rebuild the current kernel or to build another kernel.
634           It can also be extracted from a running kernel by reading
635           /proc/config.gz if enabled (below).
637 config IKCONFIG_PROC
638         bool "Enable access to .config through /proc/config.gz"
639         depends on IKCONFIG && PROC_FS
640         ---help---
641           This option enables access to the kernel configuration file
642           through /proc/config.gz.
644 config LOG_BUF_SHIFT
645         int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
646         range 12 21
647         default 17
648         help
649           Select kernel log buffer size as a power of 2.
650           Examples:
651                      17 => 128 KB
652                      16 => 64 KB
653                      15 => 32 KB
654                      14 => 16 KB
655                      13 =>  8 KB
656                      12 =>  4 KB
659 # Architectures with an unreliable sched_clock() should select this:
661 config HAVE_UNSTABLE_SCHED_CLOCK
662         bool
664 menuconfig CGROUPS
665         boolean "Control Group support"
666         depends on EVENTFD
667         help
668           This option adds support for grouping sets of processes together, for
669           use with process control subsystems such as Cpusets, CFS, memory
670           controls or device isolation.
671           See
672                 - Documentation/scheduler/sched-design-CFS.txt  (CFS)
673                 - Documentation/cgroups/ (features for grouping, isolation
674                                           and resource control)
676           Say N if unsure.
678 if CGROUPS
680 config CGROUP_DEBUG
681         bool "Example debug cgroup subsystem"
682         default n
683         help
684           This option enables a simple cgroup subsystem that
685           exports useful debugging information about the cgroups
686           framework.
688           Say N if unsure.
690 config CGROUP_FREEZER
691         bool "Freezer cgroup subsystem"
692         help
693           Provides a way to freeze and unfreeze all tasks in a
694           cgroup.
696 config CGROUP_DEVICE
697         bool "Device controller for cgroups"
698         help
699           Provides a cgroup implementing whitelists for devices which
700           a process in the cgroup can mknod or open.
702 config CPUSETS
703         bool "Cpuset support"
704         help
705           This option will let you create and manage CPUSETs which
706           allow dynamically partitioning a system into sets of CPUs and
707           Memory Nodes and assigning tasks to run only within those sets.
708           This is primarily useful on large SMP or NUMA systems.
710           Say N if unsure.
712 config PROC_PID_CPUSET
713         bool "Include legacy /proc/<pid>/cpuset file"
714         depends on CPUSETS
715         default y
717 config CGROUP_CPUACCT
718         bool "Simple CPU accounting cgroup subsystem"
719         depends on !SCHED_BFS
720         help
721           Provides a simple Resource Controller for monitoring the
722           total CPU consumed by the tasks in a cgroup.
724 config RESOURCE_COUNTERS
725         bool "Resource counters"
726         help
727           This option enables controller independent resource accounting
728           infrastructure that works with cgroups.
730 config CGROUP_MEM_RES_CTLR
731         bool "Memory Resource Controller for Control Groups"
732         depends on RESOURCE_COUNTERS
733         select MM_OWNER
734         help
735           Provides a memory resource controller that manages both anonymous
736           memory and page cache. (See Documentation/cgroups/memory.txt)
738           Note that setting this option increases fixed memory overhead
739           associated with each page of memory in the system. By this,
740           20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
741           usage tracking struct at boot. Total amount of this is printed out
742           at boot.
744           Only enable when you're ok with these trade offs and really
745           sure you need the memory resource controller. Even when you enable
746           this, you can set "cgroup_disable=memory" at your boot option to
747           disable memory resource controller and you can avoid overheads.
748           (and lose benefits of memory resource controller)
750           This config option also selects MM_OWNER config option, which
751           could in turn add some fork/exit overhead.
753 config CGROUP_MEM_RES_CTLR_DISABLED
754         bool "Memory Resource Controller disabled by default"
755         depends on CGROUP_MEM_RES_CTLR
756         default n
757         help
758           Disable the memory group resource controller unless explicitly
759           enabled using the kernel parameter "cgroup_enable=memory".
761 config CGROUP_MEM_RES_CTLR_SWAP
762         bool "Memory Resource Controller Swap Extension"
763         depends on CGROUP_MEM_RES_CTLR && SWAP
764         help
765           Add swap management feature to memory resource controller. When you
766           enable this, you can limit mem+swap usage per cgroup. In other words,
767           when you disable this, memory resource controller has no cares to
768           usage of swap...a process can exhaust all of the swap. This extension
769           is useful when you want to avoid exhaustion swap but this itself
770           adds more overheads and consumes memory for remembering information.
771           Especially if you use 32bit system or small memory system, please
772           be careful about enabling this. When memory resource controller
773           is disabled by boot option, this will be automatically disabled and
774           there will be no overhead from this. Even when you set this config=y,
775           if boot option "swapaccount=0" is set, swap will not be accounted.
776           Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
777           size is 4096bytes, 512k per 1Gbytes of swap.
778 config CGROUP_MEM_RES_CTLR_SWAP_ENABLED
779         bool "Memory Resource Controller Swap Extension enabled by default"
780         depends on CGROUP_MEM_RES_CTLR_SWAP
781         default y
782         help
783           Memory Resource Controller Swap Extension comes with its price in
784           a bigger memory consumption. General purpose distribution kernels
785           which want to enable the feature but keep it disabled by default
786           and let the user enable it by swapaccount boot command line
787           parameter should have this option unselected.
788           For those who want to have the feature enabled by default should
789           select this option (if, for some reason, they need to disable it
790           then swapaccount=0 does the trick).
791 config CGROUP_MEM_RES_CTLR_KMEM
792         bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
793         depends on CGROUP_MEM_RES_CTLR && EXPERIMENTAL
794         default n
795         help
796           The Kernel Memory extension for Memory Resource Controller can limit
797           the amount of memory used by kernel objects in the system. Those are
798           fundamentally different from the entities handled by the standard
799           Memory Controller, which are page-based, and can be swapped. Users of
800           the kmem extension can use it to guarantee that no group of processes
801           will ever exhaust kernel resources alone.
803 config CGROUP_PERF
804         bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
805         depends on PERF_EVENTS && CGROUPS
806         help
807           This option extends the per-cpu mode to restrict monitoring to
808           threads which belong to the cgroup specified and run on the
809           designated cpu.
811           Say N if unsure.
813 menuconfig CGROUP_SCHED
814         bool "Group CPU scheduler"
815         depends on !SCHED_BFS
816         default n
817         help
818           This feature lets CPU scheduler recognize task groups and control CPU
819           bandwidth allocation to such task groups. It uses cgroups to group
820           tasks.
822 if CGROUP_SCHED
823 config FAIR_GROUP_SCHED
824         bool "Group scheduling for SCHED_OTHER"
825         depends on CGROUP_SCHED
826         default CGROUP_SCHED
828 config CFS_BANDWIDTH
829         bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
830         depends on EXPERIMENTAL
831         depends on FAIR_GROUP_SCHED
832         default n
833         help
834           This option allows users to define CPU bandwidth rates (limits) for
835           tasks running within the fair group scheduler.  Groups with no limit
836           set are considered to be unconstrained and will run with no
837           restriction.
838           See tip/Documentation/scheduler/sched-bwc.txt for more information.
840 config RT_GROUP_SCHED
841         bool "Group scheduling for SCHED_RR/FIFO"
842         depends on EXPERIMENTAL
843         depends on CGROUP_SCHED
844         default n
845         help
846           This feature lets you explicitly allocate real CPU bandwidth
847           to task groups. If enabled, it will also make it impossible to
848           schedule realtime tasks for non-root users until you allocate
849           realtime bandwidth for them.
850           See Documentation/scheduler/sched-rt-group.txt for more information.
852 endif #CGROUP_SCHED
854 config BLK_CGROUP
855         tristate "Block IO controller"
856         depends on BLOCK
857         default n
858         ---help---
859         Generic block IO controller cgroup interface. This is the common
860         cgroup interface which should be used by various IO controlling
861         policies.
863         Currently, CFQ IO scheduler uses it to recognize task groups and
864         control disk bandwidth allocation (proportional time slice allocation)
865         to such task groups. It is also used by bio throttling logic in
866         block layer to implement upper limit in IO rates on a device.
868         This option only enables generic Block IO controller infrastructure.
869         One needs to also enable actual IO controlling logic/policy. For
870         enabling proportional weight division of disk bandwidth in CFQ, set
871         CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
872         CONFIG_BLK_DEV_THROTTLING=y.
874         See Documentation/cgroups/blkio-controller.txt for more information.
876 config DEBUG_BLK_CGROUP
877         bool "Enable Block IO controller debugging"
878         depends on BLK_CGROUP
879         default n
880         ---help---
881         Enable some debugging help. Currently it exports additional stat
882         files in a cgroup which can be useful for debugging.
884 endif # CGROUPS
886 config CHECKPOINT_RESTORE
887         bool "Checkpoint/restore support" if EXPERT
888         default n
889         help
890           Enables additional kernel features in a sake of checkpoint/restore.
891           In particular it adds auxiliary prctl codes to setup process text,
892           data and heap segment sizes, and a few additional /proc filesystem
893           entries.
895           If unsure, say N here.
897 menuconfig NAMESPACES
898         bool "Namespaces support" if EXPERT
899         default !EXPERT
900         help
901           Provides the way to make tasks work with different objects using
902           the same id. For example same IPC id may refer to different objects
903           or same user id or pid may refer to different tasks when used in
904           different namespaces.
906 if NAMESPACES
908 config UTS_NS
909         bool "UTS namespace"
910         default y
911         help
912           In this namespace tasks see different info provided with the
913           uname() system call
915 config IPC_NS
916         bool "IPC namespace"
917         depends on (SYSVIPC || POSIX_MQUEUE)
918         default y
919         help
920           In this namespace tasks work with IPC ids which correspond to
921           different IPC objects in different namespaces.
923 config USER_NS
924         bool "User namespace (EXPERIMENTAL)"
925         depends on EXPERIMENTAL
926         default y
927         help
928           This allows containers, i.e. vservers, to use user namespaces
929           to provide different user info for different servers.
930           If unsure, say N.
932 config PID_NS
933         bool "PID Namespaces"
934         default y
935         help
936           Support process id namespaces.  This allows having multiple
937           processes with the same pid as long as they are in different
938           pid namespaces.  This is a building block of containers.
940 config NET_NS
941         bool "Network namespace"
942         depends on NET
943         default y
944         help
945           Allow user space to create what appear to be multiple instances
946           of the network stack.
948 endif # NAMESPACES
950 config SCHED_AUTOGROUP
951         bool "Automatic process group scheduling"
952         depends on !SCHED_BFS
953         select EVENTFD
954         select CGROUPS
955         select CGROUP_SCHED
956         select FAIR_GROUP_SCHED
957         help
958           This option optimizes the scheduler for common desktop workloads by
959           automatically creating and populating task groups.  This separation
960           of workloads isolates aggressive CPU burners (like build jobs) from
961           desktop applications.  Task group autogeneration is currently based
962           upon task session.
964 config MM_OWNER
965         bool
967 config SYSFS_DEPRECATED
968         bool "Enable deprecated sysfs features to support old userspace tools"
969         depends on SYSFS
970         default n
971         help
972           This option adds code that switches the layout of the "block" class
973           devices, to not show up in /sys/class/block/, but only in
974           /sys/block/.
976           This switch is only active when the sysfs.deprecated=1 boot option is
977           passed or the SYSFS_DEPRECATED_V2 option is set.
979           This option allows new kernels to run on old distributions and tools,
980           which might get confused by /sys/class/block/. Since 2007/2008 all
981           major distributions and tools handle this just fine.
983           Recent distributions and userspace tools after 2009/2010 depend on
984           the existence of /sys/class/block/, and will not work with this
985           option enabled.
987           Only if you are using a new kernel on an old distribution, you might
988           need to say Y here.
990 config SYSFS_DEPRECATED_V2
991         bool "Enable deprecated sysfs features by default"
992         default n
993         depends on SYSFS
994         depends on SYSFS_DEPRECATED
995         help
996           Enable deprecated sysfs by default.
998           See the CONFIG_SYSFS_DEPRECATED option for more details about this
999           option.
1001           Only if you are using a new kernel on an old distribution, you might
1002           need to say Y here. Even then, odds are you would not need it
1003           enabled, you can always pass the boot option if absolutely necessary.
1005 config RELAY
1006         bool "Kernel->user space relay support (formerly relayfs)"
1007         help
1008           This option enables support for relay interface support in
1009           certain file systems (such as debugfs).
1010           It is designed to provide an efficient mechanism for tools and
1011           facilities to relay large amounts of data from kernel space to
1012           user space.
1014           If unsure, say N.
1016 config BLK_DEV_INITRD
1017         bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
1018         depends on BROKEN || !FRV
1019         help
1020           The initial RAM filesystem is a ramfs which is loaded by the
1021           boot loader (loadlin or lilo) and that is mounted as root
1022           before the normal boot procedure. It is typically used to
1023           load modules needed to mount the "real" root file system,
1024           etc. See <file:Documentation/initrd.txt> for details.
1026           If RAM disk support (BLK_DEV_RAM) is also included, this
1027           also enables initial RAM disk (initrd) support and adds
1028           15 Kbytes (more on some other architectures) to the kernel size.
1030           If unsure say Y.
1032 if BLK_DEV_INITRD
1034 source "usr/Kconfig"
1036 endif
1038 config CC_OPTIMIZE_FOR_SIZE
1039         bool "Optimize for size"
1040         help
1041           Enabling this option will pass "-Os" instead of "-O2" to gcc
1042           resulting in a smaller kernel.
1044           If unsure, say Y.
1046 config SYSCTL
1047         bool
1049 config ANON_INODES
1050         bool
1052 menuconfig EXPERT
1053         bool "Configure standard kernel features (expert users)"
1054         # Unhide debug options, to make the on-by-default options visible
1055         select DEBUG_KERNEL
1056         help
1057           This option allows certain base kernel options and settings
1058           to be disabled or tweaked. This is for specialized
1059           environments which can tolerate a "non-standard" kernel.
1060           Only use this if you really know what you are doing.
1062 config UID16
1063         bool "Enable 16-bit UID system calls" if EXPERT
1064         depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
1065         default y
1066         help
1067           This enables the legacy 16-bit UID syscall wrappers.
1069 config SYSCTL_SYSCALL
1070         bool "Sysctl syscall support" if EXPERT
1071         depends on PROC_SYSCTL
1072         default n
1073         select SYSCTL
1074         ---help---
1075           sys_sysctl uses binary paths that have been found challenging
1076           to properly maintain and use.  The interface in /proc/sys
1077           using paths with ascii names is now the primary path to this
1078           information.
1080           Almost nothing using the binary sysctl interface so if you are
1081           trying to save some space it is probably safe to disable this,
1082           making your kernel marginally smaller.
1084           If unsure say N here.
1086 config KALLSYMS
1087          bool "Load all symbols for debugging/ksymoops" if EXPERT
1088          default y
1089          help
1090            Say Y here to let the kernel print out symbolic crash information and
1091            symbolic stack backtraces. This increases the size of the kernel
1092            somewhat, as all symbols have to be loaded into the kernel image.
1094 config KALLSYMS_ALL
1095         bool "Include all symbols in kallsyms"
1096         depends on DEBUG_KERNEL && KALLSYMS
1097         help
1098            Normally kallsyms only contains the symbols of functions for nicer
1099            OOPS messages and backtraces (i.e., symbols from the text and inittext
1100            sections). This is sufficient for most cases. And only in very rare
1101            cases (e.g., when a debugger is used) all symbols are required (e.g.,
1102            names of variables from the data sections, etc).
1104            This option makes sure that all symbols are loaded into the kernel
1105            image (i.e., symbols from all sections) in cost of increased kernel
1106            size (depending on the kernel configuration, it may be 300KiB or
1107            something like this).
1109            Say N unless you really need all symbols.
1111 config HOTPLUG
1112         bool "Support for hot-pluggable devices" if EXPERT
1113         default y
1114         help
1115           This option is provided for the case where no hotplug or uevent
1116           capabilities is wanted by the kernel.  You should only consider
1117           disabling this option for embedded systems that do not use modules, a
1118           dynamic /dev tree, or dynamic device discovery.  Just say Y.
1120 config PRINTK
1121         default y
1122         bool "Enable support for printk" if EXPERT
1123         help
1124           This option enables normal printk support. Removing it
1125           eliminates most of the message strings from the kernel image
1126           and makes the kernel more or less silent. As this makes it
1127           very difficult to diagnose system problems, saying N here is
1128           strongly discouraged.
1130 config BUG
1131         bool "BUG() support" if EXPERT
1132         default y
1133         help
1134           Disabling this option eliminates support for BUG and WARN, reducing
1135           the size of your kernel image and potentially quietly ignoring
1136           numerous fatal conditions. You should only consider disabling this
1137           option for embedded systems with no facilities for reporting errors.
1138           Just say Y.
1140 config ELF_CORE
1141         default y
1142         bool "Enable ELF core dumps" if EXPERT
1143         help
1144           Enable support for generating core dumps. Disabling saves about 4k.
1147 config PCSPKR_PLATFORM
1148         bool "Enable PC-Speaker support" if EXPERT
1149         depends on HAVE_PCSPKR_PLATFORM
1150         select I8253_LOCK
1151         default y
1152         help
1153           This option allows to disable the internal PC-Speaker
1154           support, saving some memory.
1156 config HAVE_PCSPKR_PLATFORM
1157         bool
1159 config BASE_FULL
1160         default y
1161         bool "Enable full-sized data structures for core" if EXPERT
1162         help
1163           Disabling this option reduces the size of miscellaneous core
1164           kernel data structures. This saves memory on small machines,
1165           but may reduce performance.
1167 config FUTEX
1168         bool "Enable futex support" if EXPERT
1169         default y
1170         select RT_MUTEXES
1171         help
1172           Disabling this option will cause the kernel to be built without
1173           support for "fast userspace mutexes".  The resulting kernel may not
1174           run glibc-based applications correctly.
1176 config EPOLL
1177         bool "Enable eventpoll support" if EXPERT
1178         default y
1179         select ANON_INODES
1180         help
1181           Disabling this option will cause the kernel to be built without
1182           support for epoll family of system calls.
1184 config SIGNALFD
1185         bool "Enable signalfd() system call" if EXPERT
1186         select ANON_INODES
1187         default y
1188         help
1189           Enable the signalfd() system call that allows to receive signals
1190           on a file descriptor.
1192           If unsure, say Y.
1194 config TIMERFD
1195         bool "Enable timerfd() system call" if EXPERT
1196         select ANON_INODES
1197         default y
1198         help
1199           Enable the timerfd() system call that allows to receive timer
1200           events on a file descriptor.
1202           If unsure, say Y.
1204 config EVENTFD
1205         bool "Enable eventfd() system call" if EXPERT
1206         select ANON_INODES
1207         default y
1208         help
1209           Enable the eventfd() system call that allows to receive both
1210           kernel notification (ie. KAIO) or userspace notifications.
1212           If unsure, say Y.
1214 config SHMEM
1215         bool "Use full shmem filesystem" if EXPERT
1216         default y
1217         depends on MMU
1218         help
1219           The shmem is an internal filesystem used to manage shared memory.
1220           It is backed by swap and manages resource limits. It is also exported
1221           to userspace as tmpfs if TMPFS is enabled. Disabling this
1222           option replaces shmem and tmpfs with the much simpler ramfs code,
1223           which may be appropriate on small systems without swap.
1225 config AIO
1226         bool "Enable AIO support" if EXPERT
1227         default y
1228         help
1229           This option enables POSIX asynchronous I/O which may by used
1230           by some high performance threaded applications. Disabling
1231           this option saves about 7k.
1233 config EMBEDDED
1234         bool "Embedded system"
1235         select EXPERT
1236         help
1237           This option should be enabled if compiling the kernel for
1238           an embedded system so certain expert options are available
1239           for configuration.
1241 config HAVE_PERF_EVENTS
1242         bool
1243         help
1244           See tools/perf/design.txt for details.
1246 config PERF_USE_VMALLOC
1247         bool
1248         help
1249           See tools/perf/design.txt for details
1251 menu "Kernel Performance Events And Counters"
1253 config PERF_EVENTS
1254         bool "Kernel performance events and counters"
1255         default y if (PROFILING || PERF_COUNTERS)
1256         depends on HAVE_PERF_EVENTS
1257         select ANON_INODES
1258         select IRQ_WORK
1259         help
1260           Enable kernel support for various performance events provided
1261           by software and hardware.
1263           Software events are supported either built-in or via the
1264           use of generic tracepoints.
1266           Most modern CPUs support performance events via performance
1267           counter registers. These registers count the number of certain
1268           types of hw events: such as instructions executed, cachemisses
1269           suffered, or branches mis-predicted - without slowing down the
1270           kernel or applications. These registers can also trigger interrupts
1271           when a threshold number of events have passed - and can thus be
1272           used to profile the code that runs on that CPU.
1274           The Linux Performance Event subsystem provides an abstraction of
1275           these software and hardware event capabilities, available via a
1276           system call and used by the "perf" utility in tools/perf/. It
1277           provides per task and per CPU counters, and it provides event
1278           capabilities on top of those.
1280           Say Y if unsure.
1282 config PERF_COUNTERS
1283         bool "Kernel performance counters (old config option)"
1284         depends on HAVE_PERF_EVENTS
1285         help
1286           This config has been obsoleted by the PERF_EVENTS
1287           config option - please see that one for details.
1289           It has no effect on the kernel whether you enable
1290           it or not, it is a compatibility placeholder.
1292           Say N if unsure.
1294 config DEBUG_PERF_USE_VMALLOC
1295         default n
1296         bool "Debug: use vmalloc to back perf mmap() buffers"
1297         depends on PERF_EVENTS && DEBUG_KERNEL
1298         select PERF_USE_VMALLOC
1299         help
1300          Use vmalloc memory to back perf mmap() buffers.
1302          Mostly useful for debugging the vmalloc code on platforms
1303          that don't require it.
1305          Say N if unsure.
1307 endmenu
1309 config VM_EVENT_COUNTERS
1310         default y
1311         bool "Enable VM event counters for /proc/vmstat" if EXPERT
1312         help
1313           VM event counters are needed for event counts to be shown.
1314           This option allows the disabling of the VM event counters
1315           on EXPERT systems.  /proc/vmstat will only show page counts
1316           if VM event counters are disabled.
1318 config PCI_QUIRKS
1319         default y
1320         bool "Enable PCI quirk workarounds" if EXPERT
1321         depends on PCI
1322         help
1323           This enables workarounds for various PCI chipset
1324           bugs/quirks. Disable this only if your target machine is
1325           unaffected by PCI quirks.
1327 config SLUB_DEBUG
1328         default y
1329         bool "Enable SLUB debugging support" if EXPERT
1330         depends on SLUB && SYSFS
1331         help
1332           SLUB has extensive debug support features. Disabling these can
1333           result in significant savings in code size. This also disables
1334           SLUB sysfs support. /sys/slab will not exist and there will be
1335           no support for cache validation etc.
1337 config COMPAT_BRK
1338         bool "Disable heap randomization"
1339         default y
1340         help
1341           Randomizing heap placement makes heap exploits harder, but it
1342           also breaks ancient binaries (including anything libc5 based).
1343           This option changes the bootup default to heap randomization
1344           disabled, and can be overridden at runtime by setting
1345           /proc/sys/kernel/randomize_va_space to 2.
1347           On non-ancient distros (post-2000 ones) N is usually a safe choice.
1349 choice
1350         prompt "Choose SLAB allocator"
1351         default SLUB
1352         help
1353            This option allows to select a slab allocator.
1355 config SLAB
1356         bool "SLAB"
1357         help
1358           The regular slab allocator that is established and known to work
1359           well in all environments. It organizes cache hot objects in
1360           per cpu and per node queues.
1362 config SLUB
1363         bool "SLUB (Unqueued Allocator)"
1364         help
1365            SLUB is a slab allocator that minimizes cache line usage
1366            instead of managing queues of cached objects (SLAB approach).
1367            Per cpu caching is realized using slabs of objects instead
1368            of queues of objects. SLUB can use memory efficiently
1369            and has enhanced diagnostics. SLUB is the default choice for
1370            a slab allocator.
1372 config SLOB
1373         depends on EXPERT
1374         bool "SLOB (Simple Allocator)"
1375         help
1376            SLOB replaces the stock allocator with a drastically simpler
1377            allocator. SLOB is generally more space efficient but
1378            does not perform as well on large systems.
1380 endchoice
1382 config MMAP_ALLOW_UNINITIALIZED
1383         bool "Allow mmapped anonymous memory to be uninitialized"
1384         depends on EXPERT && !MMU
1385         default n
1386         help
1387           Normally, and according to the Linux spec, anonymous memory obtained
1388           from mmap() has it's contents cleared before it is passed to
1389           userspace.  Enabling this config option allows you to request that
1390           mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1391           providing a huge performance boost.  If this option is not enabled,
1392           then the flag will be ignored.
1394           This is taken advantage of by uClibc's malloc(), and also by
1395           ELF-FDPIC binfmt's brk and stack allocator.
1397           Because of the obvious security issues, this option should only be
1398           enabled on embedded devices where you control what is run in
1399           userspace.  Since that isn't generally a problem on no-MMU systems,
1400           it is normally safe to say Y here.
1402           See Documentation/nommu-mmap.txt for more information.
1404 config PROFILING
1405         bool "Profiling support"
1406         help
1407           Say Y here to enable the extended profiling support mechanisms used
1408           by profilers such as OProfile.
1411 # Place an empty function call at each tracepoint site. Can be
1412 # dynamically changed for a probe function.
1414 config TRACEPOINTS
1415         bool
1417 source "arch/Kconfig"
1419 endmenu         # General setup
1421 config HAVE_GENERIC_DMA_COHERENT
1422         bool
1423         default n
1425 config SLABINFO
1426         bool
1427         depends on PROC_FS
1428         depends on SLAB || SLUB_DEBUG
1429         default y
1431 config RT_MUTEXES
1432         boolean
1434 config BASE_SMALL
1435         int
1436         default 0 if BASE_FULL
1437         default 1 if !BASE_FULL
1439 menuconfig MODULES
1440         bool "Enable loadable module support"
1441         help
1442           Kernel modules are small pieces of compiled code which can
1443           be inserted in the running kernel, rather than being
1444           permanently built into the kernel.  You use the "modprobe"
1445           tool to add (and sometimes remove) them.  If you say Y here,
1446           many parts of the kernel can be built as modules (by
1447           answering M instead of Y where indicated): this is most
1448           useful for infrequently used options which are not required
1449           for booting.  For more information, see the man pages for
1450           modprobe, lsmod, modinfo, insmod and rmmod.
1452           If you say Y here, you will need to run "make
1453           modules_install" to put the modules under /lib/modules/
1454           where modprobe can find them (you may need to be root to do
1455           this).
1457           If unsure, say Y.
1459 if MODULES
1461 config MODULE_FORCE_LOAD
1462         bool "Forced module loading"
1463         default n
1464         help
1465           Allow loading of modules without version information (ie. modprobe
1466           --force).  Forced module loading sets the 'F' (forced) taint flag and
1467           is usually a really bad idea.
1469 config MODULE_UNLOAD
1470         bool "Module unloading"
1471         help
1472           Without this option you will not be able to unload any
1473           modules (note that some modules may not be unloadable
1474           anyway), which makes your kernel smaller, faster
1475           and simpler.  If unsure, say Y.
1477 config MODULE_FORCE_UNLOAD
1478         bool "Forced module unloading"
1479         depends on MODULE_UNLOAD && EXPERIMENTAL
1480         help
1481           This option allows you to force a module to unload, even if the
1482           kernel believes it is unsafe: the kernel will remove the module
1483           without waiting for anyone to stop using it (using the -f option to
1484           rmmod).  This is mainly for kernel developers and desperate users.
1485           If unsure, say N.
1487 config MODVERSIONS
1488         bool "Module versioning support"
1489         help
1490           Usually, you have to use modules compiled with your kernel.
1491           Saying Y here makes it sometimes possible to use modules
1492           compiled for different kernels, by adding enough information
1493           to the modules to (hopefully) spot any changes which would
1494           make them incompatible with the kernel you are running.  If
1495           unsure, say N.
1497 config MODULE_SRCVERSION_ALL
1498         bool "Source checksum for all modules"
1499         help
1500           Modules which contain a MODULE_VERSION get an extra "srcversion"
1501           field inserted into their modinfo section, which contains a
1502           sum of the source files which made it.  This helps maintainers
1503           see exactly which source was used to build a module (since
1504           others sometimes change the module source without updating
1505           the version).  With this option, such a "srcversion" field
1506           will be created for all modules.  If unsure, say N.
1508 endif # MODULES
1510 config INIT_ALL_POSSIBLE
1511         bool
1512         help
1513           Back when each arch used to define their own cpu_online_map and
1514           cpu_possible_map, some of them chose to initialize cpu_possible_map
1515           with all 1s, and others with all 0s.  When they were centralised,
1516           it was better to provide this option than to break all the archs
1517           and have several arch maintainers pursuing me down dark alleys.
1519 config STOP_MACHINE
1520         bool
1521         default y
1522         depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1523         help
1524           Need stop_machine() primitive.
1526 source "block/Kconfig"
1528 config PREEMPT_NOTIFIERS
1529         bool
1531 config PADATA
1532         depends on SMP
1533         bool
1535 source "kernel/Kconfig.locks"