Root/init/Kconfig

1config ARCH
2    string
3    option env="ARCH"
4
5config KERNELVERSION
6    string
7    option env="KERNELVERSION"
8
9config 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"
18
19config CONSTRUCTORS
20    bool
21    depends on !UML
22
23config IRQ_WORK
24    bool
25
26config BUILDTIME_EXTABLE_SORT
27    bool
28
29menu "General setup"
30
31config BROKEN
32    bool
33
34config BROKEN_ON_SMP
35    bool
36    depends on BROKEN || !SMP
37    default y
38
39config INIT_ENV_ARG_LIMIT
40    int
41    default 32 if !UML
42    default 128 if UML
43    help
44      Maximum of each of the number of arguments and environment
45      variables passed to init from the kernel command line.
46
47
48config CROSS_COMPILE
49    string "Cross-compiler tool prefix"
50    help
51      Same as running 'make CROSS_COMPILE=prefix-' but stored for
52      default make runs in this kernel build directory. You don't
53      need to set this unless you want the configured kernel build
54      directory to select the cross-compiler automatically.
55
56config LOCALVERSION
57    string "Local version - append to kernel release"
58    help
59      Append an extra string to the end of your kernel version.
60      This will show up when you type uname, for example.
61      The string you set here will be appended after the contents of
62      any files with a filename matching localversion* in your
63      object and source tree, in that order. Your total string can
64      be a maximum of 64 characters.
65
66config LOCALVERSION_AUTO
67    bool "Automatically append version information to the version string"
68    default y
69    help
70      This will try to automatically determine if the current tree is a
71      release tree by looking for git tags that belong to the current
72      top of tree revision.
73
74      A string of the format -gxxxxxxxx will be added to the localversion
75      if a git-based tree is found. The string generated by this will be
76      appended after any matching localversion* files, and after the value
77      set in CONFIG_LOCALVERSION.
78
79      (The actual string used here is the first eight characters produced
80      by running the command:
81
82        $ git rev-parse --verify HEAD
83
84      which is done within the script "scripts/setlocalversion".)
85
86config HAVE_KERNEL_GZIP
87    bool
88
89config HAVE_KERNEL_BZIP2
90    bool
91
92config HAVE_KERNEL_LZMA
93    bool
94
95config HAVE_KERNEL_XZ
96    bool
97
98config HAVE_KERNEL_LZO
99    bool
100
101choice
102    prompt "Kernel compression mode"
103    default KERNEL_GZIP
104    depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO
105    help
106      The linux kernel is a kind of self-extracting executable.
107      Several compression algorithms are available, which differ
108      in efficiency, compression and decompression speed.
109      Compression speed is only relevant when building a kernel.
110      Decompression speed is relevant at each boot.
111
112      If you have any problems with bzip2 or lzma compressed
113      kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
114      version of this functionality (bzip2 only), for 2.4, was
115      supplied by Christian Ludwig)
116
117      High compression options are mostly useful for users, who
118      are low on disk space (embedded systems), but for whom ram
119      size matters less.
120
121      If in doubt, select 'gzip'
122
123config KERNEL_GZIP
124    bool "Gzip"
125    depends on HAVE_KERNEL_GZIP
126    help
127      The old and tried gzip compression. It provides a good balance
128      between compression ratio and decompression speed.
129
130config KERNEL_BZIP2
131    bool "Bzip2"
132    depends on HAVE_KERNEL_BZIP2
133    help
134      Its compression ratio and speed is intermediate.
135      Decompression speed is slowest among the choices. The kernel
136      size is about 10% smaller with bzip2, in comparison to gzip.
137      Bzip2 uses a large amount of memory. For modern kernels you
138      will need at least 8MB RAM or more for booting.
139
140config KERNEL_LZMA
141    bool "LZMA"
142    depends on HAVE_KERNEL_LZMA
143    help
144      This compression algorithm's ratio is best. Decompression speed
145      is between gzip and bzip2. Compression is slowest.
146      The kernel size is about 33% smaller with LZMA in comparison to gzip.
147
148config KERNEL_XZ
149    bool "XZ"
150    depends on HAVE_KERNEL_XZ
151    help
152      XZ uses the LZMA2 algorithm and instruction set specific
153      BCJ filters which can improve compression ratio of executable
154      code. The size of the kernel is about 30% smaller with XZ in
155      comparison to gzip. On architectures for which there is a BCJ
156      filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
157      will create a few percent smaller kernel than plain LZMA.
158
159      The speed is about the same as with LZMA: The decompression
160      speed of XZ is better than that of bzip2 but worse than gzip
161      and LZO. Compression is slow.
162
163config KERNEL_LZO
164    bool "LZO"
165    depends on HAVE_KERNEL_LZO
166    help
167      Its compression ratio is the poorest among the choices. The kernel
168      size is about 10% bigger than gzip; however its speed
169      (both compression and decompression) is the fastest.
170
171endchoice
172
173config DEFAULT_HOSTNAME
174    string "Default hostname"
175    default "(none)"
176    help
177      This option determines the default system hostname before userspace
178      calls sethostname(2). The kernel traditionally uses "(none)" here,
179      but you may wish to use a different default here to make a minimal
180      system more usable with less configuration.
181
182config SWAP
183    bool "Support for paging of anonymous memory (swap)"
184    depends on MMU && BLOCK
185    default y
186    help
187      This option allows you to choose whether you want to have support
188      for so called swap devices or swap files in your kernel that are
189      used to provide more virtual memory than the actual RAM present
190      in your computer. If unsure say Y.
191
192config SYSVIPC
193    bool "System V IPC"
194    ---help---
195      Inter Process Communication is a suite of library functions and
196      system calls which let processes (running programs) synchronize and
197      exchange information. It is generally considered to be a good thing,
198      and some programs won't run unless you say Y here. In particular, if
199      you want to run the DOS emulator dosemu under Linux (read the
200      DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
201      you'll need to say Y here.
202
203      You can find documentation about IPC with "info ipc" and also in
204      section 6.4 of the Linux Programmer's Guide, available from
205      <http://www.tldp.org/guides.html>.
206
207config SYSVIPC_SYSCTL
208    bool
209    depends on SYSVIPC
210    depends on SYSCTL
211    default y
212
213config POSIX_MQUEUE
214    bool "POSIX Message Queues"
215    depends on NET
216    ---help---
217      POSIX variant of message queues is a part of IPC. In POSIX message
218      queues every message has a priority which decides about succession
219      of receiving it by a process. If you want to compile and run
220      programs written e.g. for Solaris with use of its POSIX message
221      queues (functions mq_*) say Y here.
222
223      POSIX message queues are visible as a filesystem called 'mqueue'
224      and can be mounted somewhere if you want to do filesystem
225      operations on message queues.
226
227      If unsure, say Y.
228
229config POSIX_MQUEUE_SYSCTL
230    bool
231    depends on POSIX_MQUEUE
232    depends on SYSCTL
233    default y
234
235config FHANDLE
236    bool "open by fhandle syscalls"
237    select EXPORTFS
238    help
239      If you say Y here, a user level program will be able to map
240      file names to handle and then later use the handle for
241      different file system operations. This is useful in implementing
242      userspace file servers, which now track files using handles instead
243      of names. The handle would remain the same even if file names
244      get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
245      syscalls.
246
247config AUDIT
248    bool "Auditing support"
249    depends on NET
250    help
251      Enable auditing infrastructure that can be used with another
252      kernel subsystem, such as SELinux (which requires this for
253      logging of avc messages output). Does not do system-call
254      auditing without CONFIG_AUDITSYSCALL.
255
256config AUDITSYSCALL
257    bool "Enable system-call auditing support"
258    depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH || (ARM && AEABI && !OABI_COMPAT))
259    default y if SECURITY_SELINUX
260    help
261      Enable low-overhead system-call auditing infrastructure that
262      can be used independently or with another kernel subsystem,
263      such as SELinux.
264
265config AUDIT_WATCH
266    def_bool y
267    depends on AUDITSYSCALL
268    select FSNOTIFY
269
270config AUDIT_TREE
271    def_bool y
272    depends on AUDITSYSCALL
273    select FSNOTIFY
274
275config AUDIT_LOGINUID_IMMUTABLE
276    bool "Make audit loginuid immutable"
277    depends on AUDIT
278    help
279      The config option toggles if a task setting its loginuid requires
280      CAP_SYS_AUDITCONTROL or if that task should require no special permissions
281      but should instead only allow setting its loginuid if it was never
282      previously set. On systems which use systemd or a similar central
283      process to restart login services this should be set to true. On older
284      systems in which an admin would typically have to directly stop and
285      start processes this should be set to false. Setting this to true allows
286      one to drop potentially dangerous capabilites from the login tasks,
287      but may not be backwards compatible with older init systems.
288
289source "kernel/irq/Kconfig"
290source "kernel/time/Kconfig"
291
292menu "CPU/Task time and stats accounting"
293
294config VIRT_CPU_ACCOUNTING
295    bool
296
297choice
298    prompt "Cputime accounting"
299    default TICK_CPU_ACCOUNTING if !PPC64
300    default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
301
302# Kind of a stub config for the pure tick based cputime accounting
303config TICK_CPU_ACCOUNTING
304    bool "Simple tick based cputime accounting"
305    depends on !S390
306    help
307      This is the basic tick based cputime accounting that maintains
308      statistics about user, system and idle time spent on per jiffies
309      granularity.
310
311      If unsure, say Y.
312
313config VIRT_CPU_ACCOUNTING_NATIVE
314    bool "Deterministic task and CPU time accounting"
315    depends on HAVE_VIRT_CPU_ACCOUNTING
316    select VIRT_CPU_ACCOUNTING
317    help
318      Select this option to enable more accurate task and CPU time
319      accounting. This is done by reading a CPU counter on each
320      kernel entry and exit and on transitions within the kernel
321      between system, softirq and hardirq state, so there is a
322      small performance impact. In the case of s390 or IBM POWER > 5,
323      this also enables accounting of stolen time on logically-partitioned
324      systems.
325
326config VIRT_CPU_ACCOUNTING_GEN
327    bool "Full dynticks CPU time accounting"
328    depends on HAVE_CONTEXT_TRACKING && 64BIT
329    select VIRT_CPU_ACCOUNTING
330    select CONTEXT_TRACKING
331    help
332      Select this option to enable task and CPU time accounting on full
333      dynticks systems. This accounting is implemented by watching every
334      kernel-user boundaries using the context tracking subsystem.
335      The accounting is thus performed at the expense of some significant
336      overhead.
337
338      For now this is only useful if you are working on the full
339      dynticks subsystem development.
340
341      If unsure, say N.
342
343config IRQ_TIME_ACCOUNTING
344    bool "Fine granularity task level IRQ time accounting"
345    depends on HAVE_IRQ_TIME_ACCOUNTING
346    help
347      Select this option to enable fine granularity task irq time
348      accounting. This is done by reading a timestamp on each
349      transitions between softirq and hardirq state, so there can be a
350      small performance impact.
351
352      If in doubt, say N here.
353
354endchoice
355
356config BSD_PROCESS_ACCT
357    bool "BSD Process Accounting"
358    help
359      If you say Y here, a user level program will be able to instruct the
360      kernel (via a special system call) to write process accounting
361      information to a file: whenever a process exits, information about
362      that process will be appended to the file by the kernel. The
363      information includes things such as creation time, owning user,
364      command name, memory usage, controlling terminal etc. (the complete
365      list is in the struct acct in <file:include/linux/acct.h>). It is
366      up to the user level program to do useful things with this
367      information. This is generally a good idea, so say Y.
368
369config BSD_PROCESS_ACCT_V3
370    bool "BSD Process Accounting version 3 file format"
371    depends on BSD_PROCESS_ACCT
372    default n
373    help
374      If you say Y here, the process accounting information is written
375      in a new file format that also logs the process IDs of each
376      process and it's parent. Note that this file format is incompatible
377      with previous v0/v1/v2 file formats, so you will need updated tools
378      for processing it. A preliminary version of these tools is available
379      at <http://www.gnu.org/software/acct/>.
380
381config TASKSTATS
382    bool "Export task/process statistics through netlink"
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.
391
392      Say N if unsure.
393
394config TASK_DELAY_ACCT
395    bool "Enable per-task delay accounting"
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.
402
403      Say N if unsure.
404
405config TASK_XACCT
406    bool "Enable extended accounting over taskstats"
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.
411
412      Say N if unsure.
413
414config TASK_IO_ACCOUNTING
415    bool "Enable per-task storage I/O accounting"
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.
420
421      Say N if unsure.
422
423endmenu # "CPU/Task time and stats accounting"
424
425menu "RCU Subsystem"
426
427choice
428    prompt "RCU Implementation"
429    default TREE_RCU
430
431config TREE_RCU
432    bool "Tree-based hierarchical RCU"
433    depends on !PREEMPT && SMP
434    help
435      This option selects the RCU implementation that is
436      designed for very large SMP system with hundreds or
437      thousands of CPUs. It also scales down nicely to
438      smaller systems.
439
440config TREE_PREEMPT_RCU
441    bool "Preemptible tree-based hierarchical RCU"
442    depends on PREEMPT
443    help
444      This option selects the RCU implementation that is
445      designed for very large SMP systems with hundreds or
446      thousands of CPUs, but for which real-time response
447      is also required. It also scales down nicely to
448      smaller systems.
449
450      Select this option if you are unsure.
451
452config TINY_RCU
453    bool "UP-only small-memory-footprint RCU"
454    depends on !PREEMPT && !SMP
455    help
456      This option selects the RCU implementation that is
457      designed for UP systems from which real-time response
458      is not required. This option greatly reduces the
459      memory footprint of RCU.
460
461config TINY_PREEMPT_RCU
462    bool "Preemptible UP-only small-memory-footprint RCU"
463    depends on PREEMPT && !SMP
464    help
465      This option selects the RCU implementation that is designed
466      for real-time UP systems. This option greatly reduces the
467      memory footprint of RCU.
468
469endchoice
470
471config PREEMPT_RCU
472    def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
473    help
474      This option enables preemptible-RCU code that is common between
475      the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
476
477config RCU_STALL_COMMON
478    def_bool ( TREE_RCU || TREE_PREEMPT_RCU || RCU_TRACE )
479    help
480      This option enables RCU CPU stall code that is common between
481      the TINY and TREE variants of RCU. The purpose is to allow
482      the tiny variants to disable RCU CPU stall warnings, while
483      making these warnings mandatory for the tree variants.
484
485config CONTEXT_TRACKING
486       bool
487
488config RCU_USER_QS
489    bool "Consider userspace as in RCU extended quiescent state"
490    depends on HAVE_CONTEXT_TRACKING && SMP
491    select CONTEXT_TRACKING
492    help
493      This option sets hooks on kernel / userspace boundaries and
494      puts RCU in extended quiescent state when the CPU runs in
495      userspace. It means that when a CPU runs in userspace, it is
496      excluded from the global RCU state machine and thus doesn't
497      try to keep the timer tick on for RCU.
498
499      Unless you want to hack and help the development of the full
500      dynticks mode, you shouldn't enable this option. It also
501      adds unnecessary overhead.
502
503      If unsure say N
504
505config CONTEXT_TRACKING_FORCE
506    bool "Force context tracking"
507    depends on CONTEXT_TRACKING
508    help
509      Probe on user/kernel boundaries by default in order to
510      test the features that rely on it such as userspace RCU extended
511      quiescent states.
512      This test is there for debugging until we have a real user like the
513      full dynticks mode.
514
515config RCU_FANOUT
516    int "Tree-based hierarchical RCU fanout value"
517    range 2 64 if 64BIT
518    range 2 32 if !64BIT
519    depends on TREE_RCU || TREE_PREEMPT_RCU
520    default 64 if 64BIT
521    default 32 if !64BIT
522    help
523      This option controls the fanout of hierarchical implementations
524      of RCU, allowing RCU to work efficiently on machines with
525      large numbers of CPUs. This value must be at least the fourth
526      root of NR_CPUS, which allows NR_CPUS to be insanely large.
527      The default value of RCU_FANOUT should be used for production
528      systems, but if you are stress-testing the RCU implementation
529      itself, small RCU_FANOUT values allow you to test large-system
530      code paths on small(er) systems.
531
532      Select a specific number if testing RCU itself.
533      Take the default if unsure.
534
535config RCU_FANOUT_LEAF
536    int "Tree-based hierarchical RCU leaf-level fanout value"
537    range 2 RCU_FANOUT if 64BIT
538    range 2 RCU_FANOUT if !64BIT
539    depends on TREE_RCU || TREE_PREEMPT_RCU
540    default 16
541    help
542      This option controls the leaf-level fanout of hierarchical
543      implementations of RCU, and allows trading off cache misses
544      against lock contention. Systems that synchronize their
545      scheduling-clock interrupts for energy-efficiency reasons will
546      want the default because the smaller leaf-level fanout keeps
547      lock contention levels acceptably low. Very large systems
548      (hundreds or thousands of CPUs) will instead want to set this
549      value to the maximum value possible in order to reduce the
550      number of cache misses incurred during RCU's grace-period
551      initialization. These systems tend to run CPU-bound, and thus
552      are not helped by synchronized interrupts, and thus tend to
553      skew them, which reduces lock contention enough that large
554      leaf-level fanouts work well.
555
556      Select a specific number if testing RCU itself.
557
558      Select the maximum permissible value for large systems.
559
560      Take the default if unsure.
561
562config RCU_FANOUT_EXACT
563    bool "Disable tree-based hierarchical RCU auto-balancing"
564    depends on TREE_RCU || TREE_PREEMPT_RCU
565    default n
566    help
567      This option forces use of the exact RCU_FANOUT value specified,
568      regardless of imbalances in the hierarchy. This is useful for
569      testing RCU itself, and might one day be useful on systems with
570      strong NUMA behavior.
571
572      Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
573
574      Say N if unsure.
575
576config RCU_FAST_NO_HZ
577    bool "Accelerate last non-dyntick-idle CPU's grace periods"
578    depends on NO_HZ && SMP
579    default n
580    help
581      This option causes RCU to attempt to accelerate grace periods in
582      order to allow CPUs to enter dynticks-idle state more quickly.
583      On the other hand, this option increases the overhead of the
584      dynticks-idle checking, thus degrading scheduling latency.
585
586      Say Y if energy efficiency is critically important, and you don't
587          care about real-time response.
588
589      Say N if you are unsure.
590
591config TREE_RCU_TRACE
592    def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
593    select DEBUG_FS
594    help
595      This option provides tracing for the TREE_RCU and
596      TREE_PREEMPT_RCU implementations, permitting Makefile to
597      trivially select kernel/rcutree_trace.c.
598
599config RCU_BOOST
600    bool "Enable RCU priority boosting"
601    depends on RT_MUTEXES && PREEMPT_RCU
602    default n
603    help
604      This option boosts the priority of preempted RCU readers that
605      block the current preemptible RCU grace period for too long.
606      This option also prevents heavy loads from blocking RCU
607      callback invocation for all flavors of RCU.
608
609      Say Y here if you are working with real-time apps or heavy loads
610      Say N here if you are unsure.
611
612config RCU_BOOST_PRIO
613    int "Real-time priority to boost RCU readers to"
614    range 1 99
615    depends on RCU_BOOST
616    default 1
617    help
618      This option specifies the real-time priority to which long-term
619      preempted RCU readers are to be boosted. If you are working
620      with a real-time application that has one or more CPU-bound
621      threads running at a real-time priority level, you should set
622      RCU_BOOST_PRIO to a priority higher then the highest-priority
623      real-time CPU-bound thread. The default RCU_BOOST_PRIO value
624      of 1 is appropriate in the common case, which is real-time
625      applications that do not have any CPU-bound threads.
626
627      Some real-time applications might not have a single real-time
628      thread that saturates a given CPU, but instead might have
629      multiple real-time threads that, taken together, fully utilize
630      that CPU. In this case, you should set RCU_BOOST_PRIO to
631      a priority higher than the lowest-priority thread that is
632      conspiring to prevent the CPU from running any non-real-time
633      tasks. For example, if one thread at priority 10 and another
634      thread at priority 5 are between themselves fully consuming
635      the CPU time on a given CPU, then RCU_BOOST_PRIO should be
636      set to priority 6 or higher.
637
638      Specify the real-time priority, or take the default if unsure.
639
640config RCU_BOOST_DELAY
641    int "Milliseconds to delay boosting after RCU grace-period start"
642    range 0 3000
643    depends on RCU_BOOST
644    default 500
645    help
646      This option specifies the time to wait after the beginning of
647      a given grace period before priority-boosting preempted RCU
648      readers blocking that grace period. Note that any RCU reader
649      blocking an expedited RCU grace period is boosted immediately.
650
651      Accept the default if unsure.
652
653config RCU_NOCB_CPU
654    bool "Offload RCU callback processing from boot-selected CPUs"
655    depends on TREE_RCU || TREE_PREEMPT_RCU
656    default n
657    help
658      Use this option to reduce OS jitter for aggressive HPC or
659      real-time workloads. It can also be used to offload RCU
660      callback invocation to energy-efficient CPUs in battery-powered
661      asymmetric multiprocessors.
662
663      This option offloads callback invocation from the set of
664      CPUs specified at boot time by the rcu_nocbs parameter.
665      For each such CPU, a kthread ("rcuoN") will be created to
666      invoke callbacks, where the "N" is the CPU being offloaded.
667      Nothing prevents this kthread from running on the specified
668      CPUs, but (1) the kthreads may be preempted between each
669      callback, and (2) affinity or cgroups can be used to force
670      the kthreads to run on whatever set of CPUs is desired.
671
672      Say Y here if you want reduced OS jitter on selected CPUs.
673      Say N here if you are unsure.
674
675endmenu # "RCU Subsystem"
676
677config IKCONFIG
678    tristate "Kernel .config support"
679    ---help---
680      This option enables the complete Linux kernel ".config" file
681      contents to be saved in the kernel. It provides documentation
682      of which kernel options are used in a running kernel or in an
683      on-disk kernel. This information can be extracted from the kernel
684      image file with the script scripts/extract-ikconfig and used as
685      input to rebuild the current kernel or to build another kernel.
686      It can also be extracted from a running kernel by reading
687      /proc/config.gz if enabled (below).
688
689config IKCONFIG_PROC
690    bool "Enable access to .config through /proc/config.gz"
691    depends on IKCONFIG && PROC_FS
692    ---help---
693      This option enables access to the kernel configuration file
694      through /proc/config.gz.
695
696config LOG_BUF_SHIFT
697    int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
698    range 12 21
699    default 17
700    help
701      Select kernel log buffer size as a power of 2.
702      Examples:
703               17 => 128 KB
704             16 => 64 KB
705                 15 => 32 KB
706                 14 => 16 KB
707             13 => 8 KB
708             12 => 4 KB
709
710#
711# Architectures with an unreliable sched_clock() should select this:
712#
713config HAVE_UNSTABLE_SCHED_CLOCK
714    bool
715
716#
717# For architectures that want to enable the support for NUMA-affine scheduler
718# balancing logic:
719#
720config ARCH_SUPPORTS_NUMA_BALANCING
721    bool
722
723# For architectures that (ab)use NUMA to represent different memory regions
724# all cpu-local but of different latencies, such as SuperH.
725#
726config ARCH_WANT_NUMA_VARIABLE_LOCALITY
727    bool
728
729#
730# For architectures that are willing to define _PAGE_NUMA as _PAGE_PROTNONE
731config ARCH_WANTS_PROT_NUMA_PROT_NONE
732    bool
733
734config ARCH_USES_NUMA_PROT_NONE
735    bool
736    default y
737    depends on ARCH_WANTS_PROT_NUMA_PROT_NONE
738    depends on NUMA_BALANCING
739
740config NUMA_BALANCING_DEFAULT_ENABLED
741    bool "Automatically enable NUMA aware memory/task placement"
742    default y
743    depends on NUMA_BALANCING
744    help
745      If set, autonumic NUMA balancing will be enabled if running on a NUMA
746      machine.
747
748config NUMA_BALANCING
749    bool "Memory placement aware NUMA scheduler"
750    depends on ARCH_SUPPORTS_NUMA_BALANCING
751    depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
752    depends on SMP && NUMA && MIGRATION
753    help
754      This option adds support for automatic NUMA aware memory/task placement.
755      The mechanism is quite primitive and is based on migrating memory when
756      it is references to the node the task is running on.
757
758      This system will be inactive on UMA systems.
759
760menuconfig CGROUPS
761    boolean "Control Group support"
762    depends on EVENTFD
763    help
764      This option adds support for grouping sets of processes together, for
765      use with process control subsystems such as Cpusets, CFS, memory
766      controls or device isolation.
767      See
768        - Documentation/scheduler/sched-design-CFS.txt (CFS)
769        - Documentation/cgroups/ (features for grouping, isolation
770                      and resource control)
771
772      Say N if unsure.
773
774if CGROUPS
775
776config CGROUP_DEBUG
777    bool "Example debug cgroup subsystem"
778    default n
779    help
780      This option enables a simple cgroup subsystem that
781      exports useful debugging information about the cgroups
782      framework.
783
784      Say N if unsure.
785
786config CGROUP_FREEZER
787    bool "Freezer cgroup subsystem"
788    help
789      Provides a way to freeze and unfreeze all tasks in a
790      cgroup.
791
792config CGROUP_DEVICE
793    bool "Device controller for cgroups"
794    help
795      Provides a cgroup implementing whitelists for devices which
796      a process in the cgroup can mknod or open.
797
798config CPUSETS
799    bool "Cpuset support"
800    help
801      This option will let you create and manage CPUSETs which
802      allow dynamically partitioning a system into sets of CPUs and
803      Memory Nodes and assigning tasks to run only within those sets.
804      This is primarily useful on large SMP or NUMA systems.
805
806      Say N if unsure.
807
808config PROC_PID_CPUSET
809    bool "Include legacy /proc/<pid>/cpuset file"
810    depends on CPUSETS
811    default y
812
813config CGROUP_CPUACCT
814    bool "Simple CPU accounting cgroup subsystem"
815    help
816      Provides a simple Resource Controller for monitoring the
817      total CPU consumed by the tasks in a cgroup.
818
819config RESOURCE_COUNTERS
820    bool "Resource counters"
821    help
822      This option enables controller independent resource accounting
823      infrastructure that works with cgroups.
824
825config MEMCG
826    bool "Memory Resource Controller for Control Groups"
827    depends on RESOURCE_COUNTERS
828    select MM_OWNER
829    help
830      Provides a memory resource controller that manages both anonymous
831      memory and page cache. (See Documentation/cgroups/memory.txt)
832
833      Note that setting this option increases fixed memory overhead
834      associated with each page of memory in the system. By this,
835      20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
836      usage tracking struct at boot. Total amount of this is printed out
837      at boot.
838
839      Only enable when you're ok with these trade offs and really
840      sure you need the memory resource controller. Even when you enable
841      this, you can set "cgroup_disable=memory" at your boot option to
842      disable memory resource controller and you can avoid overheads.
843      (and lose benefits of memory resource controller)
844
845      This config option also selects MM_OWNER config option, which
846      could in turn add some fork/exit overhead.
847
848config MEMCG_SWAP
849    bool "Memory Resource Controller Swap Extension"
850    depends on MEMCG && SWAP
851    help
852      Add swap management feature to memory resource controller. When you
853      enable this, you can limit mem+swap usage per cgroup. In other words,
854      when you disable this, memory resource controller has no cares to
855      usage of swap...a process can exhaust all of the swap. This extension
856      is useful when you want to avoid exhaustion swap but this itself
857      adds more overheads and consumes memory for remembering information.
858      Especially if you use 32bit system or small memory system, please
859      be careful about enabling this. When memory resource controller
860      is disabled by boot option, this will be automatically disabled and
861      there will be no overhead from this. Even when you set this config=y,
862      if boot option "swapaccount=0" is set, swap will not be accounted.
863      Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
864      size is 4096bytes, 512k per 1Gbytes of swap.
865config MEMCG_SWAP_ENABLED
866    bool "Memory Resource Controller Swap Extension enabled by default"
867    depends on MEMCG_SWAP
868    default y
869    help
870      Memory Resource Controller Swap Extension comes with its price in
871      a bigger memory consumption. General purpose distribution kernels
872      which want to enable the feature but keep it disabled by default
873      and let the user enable it by swapaccount boot command line
874      parameter should have this option unselected.
875      For those who want to have the feature enabled by default should
876      select this option (if, for some reason, they need to disable it
877      then swapaccount=0 does the trick).
878config MEMCG_KMEM
879    bool "Memory Resource Controller Kernel Memory accounting"
880    depends on MEMCG
881    depends on SLUB || SLAB
882    help
883      The Kernel Memory extension for Memory Resource Controller can limit
884      the amount of memory used by kernel objects in the system. Those are
885      fundamentally different from the entities handled by the standard
886      Memory Controller, which are page-based, and can be swapped. Users of
887      the kmem extension can use it to guarantee that no group of processes
888      will ever exhaust kernel resources alone.
889
890config CGROUP_HUGETLB
891    bool "HugeTLB Resource Controller for Control Groups"
892    depends on RESOURCE_COUNTERS && HUGETLB_PAGE
893    default n
894    help
895      Provides a cgroup Resource Controller for HugeTLB pages.
896      When you enable this, you can put a per cgroup limit on HugeTLB usage.
897      The limit is enforced during page fault. Since HugeTLB doesn't
898      support page reclaim, enforcing the limit at page fault time implies
899      that, the application will get SIGBUS signal if it tries to access
900      HugeTLB pages beyond its limit. This requires the application to know
901      beforehand how much HugeTLB pages it would require for its use. The
902      control group is tracked in the third page lru pointer. This means
903      that we cannot use the controller with huge page less than 3 pages.
904
905config CGROUP_PERF
906    bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
907    depends on PERF_EVENTS && CGROUPS
908    help
909      This option extends the per-cpu mode to restrict monitoring to
910      threads which belong to the cgroup specified and run on the
911      designated cpu.
912
913      Say N if unsure.
914
915menuconfig CGROUP_SCHED
916    bool "Group CPU scheduler"
917    default n
918    help
919      This feature lets CPU scheduler recognize task groups and control CPU
920      bandwidth allocation to such task groups. It uses cgroups to group
921      tasks.
922
923if CGROUP_SCHED
924config FAIR_GROUP_SCHED
925    bool "Group scheduling for SCHED_OTHER"
926    depends on CGROUP_SCHED
927    default CGROUP_SCHED
928
929config CFS_BANDWIDTH
930    bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
931    depends on FAIR_GROUP_SCHED
932    default n
933    help
934      This option allows users to define CPU bandwidth rates (limits) for
935      tasks running within the fair group scheduler. Groups with no limit
936      set are considered to be unconstrained and will run with no
937      restriction.
938      See tip/Documentation/scheduler/sched-bwc.txt for more information.
939
940config RT_GROUP_SCHED
941    bool "Group scheduling for SCHED_RR/FIFO"
942    depends on CGROUP_SCHED
943    default n
944    help
945      This feature lets you explicitly allocate real CPU bandwidth
946      to task groups. If enabled, it will also make it impossible to
947      schedule realtime tasks for non-root users until you allocate
948      realtime bandwidth for them.
949      See Documentation/scheduler/sched-rt-group.txt for more information.
950
951endif #CGROUP_SCHED
952
953config BLK_CGROUP
954    bool "Block IO controller"
955    depends on BLOCK
956    default n
957    ---help---
958    Generic block IO controller cgroup interface. This is the common
959    cgroup interface which should be used by various IO controlling
960    policies.
961
962    Currently, CFQ IO scheduler uses it to recognize task groups and
963    control disk bandwidth allocation (proportional time slice allocation)
964    to such task groups. It is also used by bio throttling logic in
965    block layer to implement upper limit in IO rates on a device.
966
967    This option only enables generic Block IO controller infrastructure.
968    One needs to also enable actual IO controlling logic/policy. For
969    enabling proportional weight division of disk bandwidth in CFQ, set
970    CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
971    CONFIG_BLK_DEV_THROTTLING=y.
972
973    See Documentation/cgroups/blkio-controller.txt for more information.
974
975config DEBUG_BLK_CGROUP
976    bool "Enable Block IO controller debugging"
977    depends on BLK_CGROUP
978    default n
979    ---help---
980    Enable some debugging help. Currently it exports additional stat
981    files in a cgroup which can be useful for debugging.
982
983endif # CGROUPS
984
985config CHECKPOINT_RESTORE
986    bool "Checkpoint/restore support" if EXPERT
987    default n
988    help
989      Enables additional kernel features in a sake of checkpoint/restore.
990      In particular it adds auxiliary prctl codes to setup process text,
991      data and heap segment sizes, and a few additional /proc filesystem
992      entries.
993
994      If unsure, say N here.
995
996menuconfig NAMESPACES
997    bool "Namespaces support" if EXPERT
998    default !EXPERT
999    help
1000      Provides the way to make tasks work with different objects using
1001      the same id. For example same IPC id may refer to different objects
1002      or same user id or pid may refer to different tasks when used in
1003      different namespaces.
1004
1005if NAMESPACES
1006
1007config UTS_NS
1008    bool "UTS namespace"
1009    default y
1010    help
1011      In this namespace tasks see different info provided with the
1012      uname() system call
1013
1014config IPC_NS
1015    bool "IPC namespace"
1016    depends on (SYSVIPC || POSIX_MQUEUE)
1017    default y
1018    help
1019      In this namespace tasks work with IPC ids which correspond to
1020      different IPC objects in different namespaces.
1021
1022config USER_NS
1023    bool "User namespace"
1024    depends on UIDGID_CONVERTED
1025    select UIDGID_STRICT_TYPE_CHECKS
1026
1027    default n
1028    help
1029      This allows containers, i.e. vservers, to use user namespaces
1030      to provide different user info for different servers.
1031
1032      When user namespaces are enabled in the kernel it is
1033      recommended that the MEMCG and MEMCG_KMEM options also be
1034      enabled and that user-space use the memory control groups to
1035      limit the amount of memory a memory unprivileged users can
1036      use.
1037
1038      If unsure, say N.
1039
1040config PID_NS
1041    bool "PID Namespaces"
1042    default y
1043    help
1044      Support process id namespaces. This allows having multiple
1045      processes with the same pid as long as they are in different
1046      pid namespaces. This is a building block of containers.
1047
1048config NET_NS
1049    bool "Network namespace"
1050    depends on NET
1051    default y
1052    help
1053      Allow user space to create what appear to be multiple instances
1054      of the network stack.
1055
1056endif # NAMESPACES
1057
1058config UIDGID_CONVERTED
1059    # True if all of the selected software conmponents are known
1060    # to have uid_t and gid_t converted to kuid_t and kgid_t
1061    # where appropriate and are otherwise safe to use with
1062    # the user namespace.
1063    bool
1064    default y
1065
1066    # Filesystems
1067    depends on XFS_FS = n
1068
1069config UIDGID_STRICT_TYPE_CHECKS
1070    bool "Require conversions between uid/gids and their internal representation"
1071    depends on UIDGID_CONVERTED
1072    default n
1073    help
1074     While the nececessary conversions are being added to all subsystems this option allows
1075     the code to continue to build for unconverted subsystems.
1076
1077     Say Y here if you want the strict type checking enabled
1078
1079config SCHED_AUTOGROUP
1080    bool "Automatic process group scheduling"
1081    select EVENTFD
1082    select CGROUPS
1083    select CGROUP_SCHED
1084    select FAIR_GROUP_SCHED
1085    help
1086      This option optimizes the scheduler for common desktop workloads by
1087      automatically creating and populating task groups. This separation
1088      of workloads isolates aggressive CPU burners (like build jobs) from
1089      desktop applications. Task group autogeneration is currently based
1090      upon task session.
1091
1092config MM_OWNER
1093    bool
1094
1095config SYSFS_DEPRECATED
1096    bool "Enable deprecated sysfs features to support old userspace tools"
1097    depends on SYSFS
1098    default n
1099    help
1100      This option adds code that switches the layout of the "block" class
1101      devices, to not show up in /sys/class/block/, but only in
1102      /sys/block/.
1103
1104      This switch is only active when the sysfs.deprecated=1 boot option is
1105      passed or the SYSFS_DEPRECATED_V2 option is set.
1106
1107      This option allows new kernels to run on old distributions and tools,
1108      which might get confused by /sys/class/block/. Since 2007/2008 all
1109      major distributions and tools handle this just fine.
1110
1111      Recent distributions and userspace tools after 2009/2010 depend on
1112      the existence of /sys/class/block/, and will not work with this
1113      option enabled.
1114
1115      Only if you are using a new kernel on an old distribution, you might
1116      need to say Y here.
1117
1118config SYSFS_DEPRECATED_V2
1119    bool "Enable deprecated sysfs features by default"
1120    default n
1121    depends on SYSFS
1122    depends on SYSFS_DEPRECATED
1123    help
1124      Enable deprecated sysfs by default.
1125
1126      See the CONFIG_SYSFS_DEPRECATED option for more details about this
1127      option.
1128
1129      Only if you are using a new kernel on an old distribution, you might
1130      need to say Y here. Even then, odds are you would not need it
1131      enabled, you can always pass the boot option if absolutely necessary.
1132
1133config RELAY
1134    bool "Kernel->user space relay support (formerly relayfs)"
1135    help
1136      This option enables support for relay interface support in
1137      certain file systems (such as debugfs).
1138      It is designed to provide an efficient mechanism for tools and
1139      facilities to relay large amounts of data from kernel space to
1140      user space.
1141
1142      If unsure, say N.
1143
1144config BLK_DEV_INITRD
1145    bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
1146    depends on BROKEN || !FRV
1147    help
1148      The initial RAM filesystem is a ramfs which is loaded by the
1149      boot loader (loadlin or lilo) and that is mounted as root
1150      before the normal boot procedure. It is typically used to
1151      load modules needed to mount the "real" root file system,
1152      etc. See <file:Documentation/initrd.txt> for details.
1153
1154      If RAM disk support (BLK_DEV_RAM) is also included, this
1155      also enables initial RAM disk (initrd) support and adds
1156      15 Kbytes (more on some other architectures) to the kernel size.
1157
1158      If unsure say Y.
1159
1160if BLK_DEV_INITRD
1161
1162source "usr/Kconfig"
1163
1164endif
1165
1166config CC_OPTIMIZE_FOR_SIZE
1167    bool "Optimize for size"
1168    help
1169      Enabling this option will pass "-Os" instead of "-O2" to gcc
1170      resulting in a smaller kernel.
1171
1172      If unsure, say N.
1173
1174config SYSCTL
1175    bool
1176
1177config ANON_INODES
1178    bool
1179
1180menuconfig EXPERT
1181    bool "Configure standard kernel features (expert users)"
1182    # Unhide debug options, to make the on-by-default options visible
1183    select DEBUG_KERNEL
1184    help
1185      This option allows certain base kernel options and settings
1186          to be disabled or tweaked. This is for specialized
1187          environments which can tolerate a "non-standard" kernel.
1188          Only use this if you really know what you are doing.
1189
1190config HAVE_UID16
1191    bool
1192
1193config UID16
1194    bool "Enable 16-bit UID system calls" if EXPERT
1195    depends on HAVE_UID16
1196    default y
1197    help
1198      This enables the legacy 16-bit UID syscall wrappers.
1199
1200config SYSCTL_SYSCALL
1201    bool "Sysctl syscall support" if EXPERT
1202    depends on PROC_SYSCTL
1203    default n
1204    select SYSCTL
1205    ---help---
1206      sys_sysctl uses binary paths that have been found challenging
1207      to properly maintain and use. The interface in /proc/sys
1208      using paths with ascii names is now the primary path to this
1209      information.
1210
1211      Almost nothing using the binary sysctl interface so if you are
1212      trying to save some space it is probably safe to disable this,
1213      making your kernel marginally smaller.
1214
1215      If unsure say N here.
1216
1217config SYSCTL_EXCEPTION_TRACE
1218    bool
1219    help
1220      Enable support for /proc/sys/debug/exception-trace.
1221
1222config SYSCTL_ARCH_UNALIGN_NO_WARN
1223    bool
1224    help
1225      Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1226      Allows arch to define/use @no_unaligned_warning to possibly warn
1227      about unaligned access emulation going on under the hood.
1228
1229config SYSCTL_ARCH_UNALIGN_ALLOW
1230    bool
1231    help
1232      Enable support for /proc/sys/kernel/unaligned-trap
1233      Allows arches to define/use @unaligned_enabled to runtime toggle
1234      the unaligned access emulation.
1235      see arch/parisc/kernel/unaligned.c for reference
1236
1237config KALLSYMS
1238     bool "Load all symbols for debugging/ksymoops" if EXPERT
1239     default y
1240     help
1241       Say Y here to let the kernel print out symbolic crash information and
1242       symbolic stack backtraces. This increases the size of the kernel
1243       somewhat, as all symbols have to be loaded into the kernel image.
1244
1245config KALLSYMS_ALL
1246    bool "Include all symbols in kallsyms"
1247    depends on DEBUG_KERNEL && KALLSYMS
1248    help
1249       Normally kallsyms only contains the symbols of functions for nicer
1250       OOPS messages and backtraces (i.e., symbols from the text and inittext
1251       sections). This is sufficient for most cases. And only in very rare
1252       cases (e.g., when a debugger is used) all symbols are required (e.g.,
1253       names of variables from the data sections, etc).
1254
1255       This option makes sure that all symbols are loaded into the kernel
1256       image (i.e., symbols from all sections) in cost of increased kernel
1257       size (depending on the kernel configuration, it may be 300KiB or
1258       something like this).
1259
1260       Say N unless you really need all symbols.
1261
1262config HOTPLUG
1263    def_bool y
1264
1265config PRINTK
1266    default y
1267    bool "Enable support for printk" if EXPERT
1268    select IRQ_WORK
1269    help
1270      This option enables normal printk support. Removing it
1271      eliminates most of the message strings from the kernel image
1272      and makes the kernel more or less silent. As this makes it
1273      very difficult to diagnose system problems, saying N here is
1274      strongly discouraged.
1275
1276config BUG
1277    bool "BUG() support" if EXPERT
1278    default y
1279    help
1280          Disabling this option eliminates support for BUG and WARN, reducing
1281          the size of your kernel image and potentially quietly ignoring
1282          numerous fatal conditions. You should only consider disabling this
1283          option for embedded systems with no facilities for reporting errors.
1284          Just say Y.
1285
1286config ELF_CORE
1287    depends on COREDUMP
1288    default y
1289    bool "Enable ELF core dumps" if EXPERT
1290    help
1291      Enable support for generating core dumps. Disabling saves about 4k.
1292
1293
1294config PCSPKR_PLATFORM
1295    bool "Enable PC-Speaker support" if EXPERT
1296    depends on HAVE_PCSPKR_PLATFORM
1297    select I8253_LOCK
1298    default y
1299    help
1300          This option allows to disable the internal PC-Speaker
1301          support, saving some memory.
1302
1303config HAVE_PCSPKR_PLATFORM
1304    bool
1305
1306config BASE_FULL
1307    default y
1308    bool "Enable full-sized data structures for core" if EXPERT
1309    help
1310      Disabling this option reduces the size of miscellaneous core
1311      kernel data structures. This saves memory on small machines,
1312      but may reduce performance.
1313
1314config FUTEX
1315    bool "Enable futex support" if EXPERT
1316    default y
1317    select RT_MUTEXES
1318    help
1319      Disabling this option will cause the kernel to be built without
1320      support for "fast userspace mutexes". The resulting kernel may not
1321      run glibc-based applications correctly.
1322
1323config EPOLL
1324    bool "Enable eventpoll support" if EXPERT
1325    default y
1326    select ANON_INODES
1327    help
1328      Disabling this option will cause the kernel to be built without
1329      support for epoll family of system calls.
1330
1331config SIGNALFD
1332    bool "Enable signalfd() system call" if EXPERT
1333    select ANON_INODES
1334    default y
1335    help
1336      Enable the signalfd() system call that allows to receive signals
1337      on a file descriptor.
1338
1339      If unsure, say Y.
1340
1341config TIMERFD
1342    bool "Enable timerfd() system call" if EXPERT
1343    select ANON_INODES
1344    default y
1345    help
1346      Enable the timerfd() system call that allows to receive timer
1347      events on a file descriptor.
1348
1349      If unsure, say Y.
1350
1351config EVENTFD
1352    bool "Enable eventfd() system call" if EXPERT
1353    select ANON_INODES
1354    default y
1355    help
1356      Enable the eventfd() system call that allows to receive both
1357      kernel notification (ie. KAIO) or userspace notifications.
1358
1359      If unsure, say Y.
1360
1361config SHMEM
1362    bool "Use full shmem filesystem" if EXPERT
1363    default y
1364    depends on MMU
1365    help
1366      The shmem is an internal filesystem used to manage shared memory.
1367      It is backed by swap and manages resource limits. It is also exported
1368      to userspace as tmpfs if TMPFS is enabled. Disabling this
1369      option replaces shmem and tmpfs with the much simpler ramfs code,
1370      which may be appropriate on small systems without swap.
1371
1372config AIO
1373    bool "Enable AIO support" if EXPERT
1374    default y
1375    help
1376      This option enables POSIX asynchronous I/O which may by used
1377          by some high performance threaded applications. Disabling
1378          this option saves about 7k.
1379
1380config EMBEDDED
1381    bool "Embedded system"
1382    select EXPERT
1383    help
1384      This option should be enabled if compiling the kernel for
1385      an embedded system so certain expert options are available
1386      for configuration.
1387
1388config HAVE_PERF_EVENTS
1389    bool
1390    help
1391      See tools/perf/design.txt for details.
1392
1393config PERF_USE_VMALLOC
1394    bool
1395    help
1396      See tools/perf/design.txt for details
1397
1398menu "Kernel Performance Events And Counters"
1399
1400config PERF_EVENTS
1401    bool "Kernel performance events and counters"
1402    default y if PROFILING
1403    depends on HAVE_PERF_EVENTS
1404    select ANON_INODES
1405    select IRQ_WORK
1406    help
1407      Enable kernel support for various performance events provided
1408      by software and hardware.
1409
1410      Software events are supported either built-in or via the
1411      use of generic tracepoints.
1412
1413      Most modern CPUs support performance events via performance
1414      counter registers. These registers count the number of certain
1415      types of hw events: such as instructions executed, cachemisses
1416      suffered, or branches mis-predicted - without slowing down the
1417      kernel or applications. These registers can also trigger interrupts
1418      when a threshold number of events have passed - and can thus be
1419      used to profile the code that runs on that CPU.
1420
1421      The Linux Performance Event subsystem provides an abstraction of
1422      these software and hardware event capabilities, available via a
1423      system call and used by the "perf" utility in tools/perf/. It
1424      provides per task and per CPU counters, and it provides event
1425      capabilities on top of those.
1426
1427      Say Y if unsure.
1428
1429config DEBUG_PERF_USE_VMALLOC
1430    default n
1431    bool "Debug: use vmalloc to back perf mmap() buffers"
1432    depends on PERF_EVENTS && DEBUG_KERNEL
1433    select PERF_USE_VMALLOC
1434    help
1435     Use vmalloc memory to back perf mmap() buffers.
1436
1437     Mostly useful for debugging the vmalloc code on platforms
1438     that don't require it.
1439
1440     Say N if unsure.
1441
1442endmenu
1443
1444config VM_EVENT_COUNTERS
1445    default y
1446    bool "Enable VM event counters for /proc/vmstat" if EXPERT
1447    help
1448      VM event counters are needed for event counts to be shown.
1449      This option allows the disabling of the VM event counters
1450      on EXPERT systems. /proc/vmstat will only show page counts
1451      if VM event counters are disabled.
1452
1453config PCI_QUIRKS
1454    default y
1455    bool "Enable PCI quirk workarounds" if EXPERT
1456    depends on PCI
1457    help
1458      This enables workarounds for various PCI chipset
1459          bugs/quirks. Disable this only if your target machine is
1460          unaffected by PCI quirks.
1461
1462config SLUB_DEBUG
1463    default y
1464    bool "Enable SLUB debugging support" if EXPERT
1465    depends on SLUB && SYSFS
1466    help
1467      SLUB has extensive debug support features. Disabling these can
1468      result in significant savings in code size. This also disables
1469      SLUB sysfs support. /sys/slab will not exist and there will be
1470      no support for cache validation etc.
1471
1472config COMPAT_BRK
1473    bool "Disable heap randomization"
1474    default y
1475    help
1476      Randomizing heap placement makes heap exploits harder, but it
1477      also breaks ancient binaries (including anything libc5 based).
1478      This option changes the bootup default to heap randomization
1479      disabled, and can be overridden at runtime by setting
1480      /proc/sys/kernel/randomize_va_space to 2.
1481
1482      On non-ancient distros (post-2000 ones) N is usually a safe choice.
1483
1484choice
1485    prompt "Choose SLAB allocator"
1486    default SLUB
1487    help
1488       This option allows to select a slab allocator.
1489
1490config SLAB
1491    bool "SLAB"
1492    help
1493      The regular slab allocator that is established and known to work
1494      well in all environments. It organizes cache hot objects in
1495      per cpu and per node queues.
1496
1497config SLUB
1498    bool "SLUB (Unqueued Allocator)"
1499    help
1500       SLUB is a slab allocator that minimizes cache line usage
1501       instead of managing queues of cached objects (SLAB approach).
1502       Per cpu caching is realized using slabs of objects instead
1503       of queues of objects. SLUB can use memory efficiently
1504       and has enhanced diagnostics. SLUB is the default choice for
1505       a slab allocator.
1506
1507config SLOB
1508    depends on EXPERT
1509    bool "SLOB (Simple Allocator)"
1510    help
1511       SLOB replaces the stock allocator with a drastically simpler
1512       allocator. SLOB is generally more space efficient but
1513       does not perform as well on large systems.
1514
1515endchoice
1516
1517config MMAP_ALLOW_UNINITIALIZED
1518    bool "Allow mmapped anonymous memory to be uninitialized"
1519    depends on EXPERT && !MMU
1520    default n
1521    help
1522      Normally, and according to the Linux spec, anonymous memory obtained
1523      from mmap() has it's contents cleared before it is passed to
1524      userspace. Enabling this config option allows you to request that
1525      mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1526      providing a huge performance boost. If this option is not enabled,
1527      then the flag will be ignored.
1528
1529      This is taken advantage of by uClibc's malloc(), and also by
1530      ELF-FDPIC binfmt's brk and stack allocator.
1531
1532      Because of the obvious security issues, this option should only be
1533      enabled on embedded devices where you control what is run in
1534      userspace. Since that isn't generally a problem on no-MMU systems,
1535      it is normally safe to say Y here.
1536
1537      See Documentation/nommu-mmap.txt for more information.
1538
1539config PROFILING
1540    bool "Profiling support"
1541    help
1542      Say Y here to enable the extended profiling support mechanisms used
1543      by profilers such as OProfile.
1544
1545#
1546# Place an empty function call at each tracepoint site. Can be
1547# dynamically changed for a probe function.
1548#
1549config TRACEPOINTS
1550    bool
1551
1552source "arch/Kconfig"
1553
1554endmenu # General setup
1555
1556config HAVE_GENERIC_DMA_COHERENT
1557    bool
1558    default n
1559
1560config SLABINFO
1561    bool
1562    depends on PROC_FS
1563    depends on SLAB || SLUB_DEBUG
1564    default y
1565
1566config RT_MUTEXES
1567    boolean
1568
1569config BASE_SMALL
1570    int
1571    default 0 if BASE_FULL
1572    default 1 if !BASE_FULL
1573
1574menuconfig MODULES
1575    bool "Enable loadable module support"
1576    help
1577      Kernel modules are small pieces of compiled code which can
1578      be inserted in the running kernel, rather than being
1579      permanently built into the kernel. You use the "modprobe"
1580      tool to add (and sometimes remove) them. If you say Y here,
1581      many parts of the kernel can be built as modules (by
1582      answering M instead of Y where indicated): this is most
1583      useful for infrequently used options which are not required
1584      for booting. For more information, see the man pages for
1585      modprobe, lsmod, modinfo, insmod and rmmod.
1586
1587      If you say Y here, you will need to run "make
1588      modules_install" to put the modules under /lib/modules/
1589      where modprobe can find them (you may need to be root to do
1590      this).
1591
1592      If unsure, say Y.
1593
1594if MODULES
1595
1596config MODULE_FORCE_LOAD
1597    bool "Forced module loading"
1598    default n
1599    help
1600      Allow loading of modules without version information (ie. modprobe
1601      --force). Forced module loading sets the 'F' (forced) taint flag and
1602      is usually a really bad idea.
1603
1604config MODULE_UNLOAD
1605    bool "Module unloading"
1606    help
1607      Without this option you will not be able to unload any
1608      modules (note that some modules may not be unloadable
1609      anyway), which makes your kernel smaller, faster
1610      and simpler. If unsure, say Y.
1611
1612config MODULE_FORCE_UNLOAD
1613    bool "Forced module unloading"
1614    depends on MODULE_UNLOAD
1615    help
1616      This option allows you to force a module to unload, even if the
1617      kernel believes it is unsafe: the kernel will remove the module
1618      without waiting for anyone to stop using it (using the -f option to
1619      rmmod). This is mainly for kernel developers and desperate users.
1620      If unsure, say N.
1621
1622config MODVERSIONS
1623    bool "Module versioning support"
1624    help
1625      Usually, you have to use modules compiled with your kernel.
1626      Saying Y here makes it sometimes possible to use modules
1627      compiled for different kernels, by adding enough information
1628      to the modules to (hopefully) spot any changes which would
1629      make them incompatible with the kernel you are running. If
1630      unsure, say N.
1631
1632config MODULE_SRCVERSION_ALL
1633    bool "Source checksum for all modules"
1634    help
1635      Modules which contain a MODULE_VERSION get an extra "srcversion"
1636      field inserted into their modinfo section, which contains a
1637          sum of the source files which made it. This helps maintainers
1638      see exactly which source was used to build a module (since
1639      others sometimes change the module source without updating
1640      the version). With this option, such a "srcversion" field
1641      will be created for all modules. If unsure, say N.
1642
1643config MODULE_SIG
1644    bool "Module signature verification"
1645    depends on MODULES
1646    select KEYS
1647    select CRYPTO
1648    select ASYMMETRIC_KEY_TYPE
1649    select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
1650    select PUBLIC_KEY_ALGO_RSA
1651    select ASN1
1652    select OID_REGISTRY
1653    select X509_CERTIFICATE_PARSER
1654    help
1655      Check modules for valid signatures upon load: the signature
1656      is simply appended to the module. For more information see
1657      Documentation/module-signing.txt.
1658
1659      !!!WARNING!!! If you enable this option, you MUST make sure that the
1660      module DOES NOT get stripped after being signed. This includes the
1661      debuginfo strip done by some packagers (such as rpmbuild) and
1662      inclusion into an initramfs that wants the module size reduced.
1663
1664config MODULE_SIG_FORCE
1665    bool "Require modules to be validly signed"
1666    depends on MODULE_SIG
1667    help
1668      Reject unsigned modules or signed modules for which we don't have a
1669      key. Without this, such modules will simply taint the kernel.
1670
1671config MODULE_SIG_ALL
1672    bool "Automatically sign all modules"
1673    default y
1674    depends on MODULE_SIG
1675    help
1676      Sign all modules during make modules_install. Without this option,
1677      modules must be signed manually, using the scripts/sign-file tool.
1678
1679comment "Do not forget to sign required modules with scripts/sign-file"
1680    depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
1681
1682choice
1683    prompt "Which hash algorithm should modules be signed with?"
1684    depends on MODULE_SIG
1685    help
1686      This determines which sort of hashing algorithm will be used during
1687      signature generation. This algorithm _must_ be built into the kernel
1688      directly so that signature verification can take place. It is not
1689      possible to load a signed module containing the algorithm to check
1690      the signature on that module.
1691
1692config MODULE_SIG_SHA1
1693    bool "Sign modules with SHA-1"
1694    select CRYPTO_SHA1
1695
1696config MODULE_SIG_SHA224
1697    bool "Sign modules with SHA-224"
1698    select CRYPTO_SHA256
1699
1700config MODULE_SIG_SHA256
1701    bool "Sign modules with SHA-256"
1702    select CRYPTO_SHA256
1703
1704config MODULE_SIG_SHA384
1705    bool "Sign modules with SHA-384"
1706    select CRYPTO_SHA512
1707
1708config MODULE_SIG_SHA512
1709    bool "Sign modules with SHA-512"
1710    select CRYPTO_SHA512
1711
1712endchoice
1713
1714config MODULE_SIG_HASH
1715    string
1716    depends on MODULE_SIG
1717    default "sha1" if MODULE_SIG_SHA1
1718    default "sha224" if MODULE_SIG_SHA224
1719    default "sha256" if MODULE_SIG_SHA256
1720    default "sha384" if MODULE_SIG_SHA384
1721    default "sha512" if MODULE_SIG_SHA512
1722
1723endif # MODULES
1724
1725config INIT_ALL_POSSIBLE
1726    bool
1727    help
1728      Back when each arch used to define their own cpu_online_mask and
1729      cpu_possible_mask, some of them chose to initialize cpu_possible_mask
1730      with all 1s, and others with all 0s. When they were centralised,
1731      it was better to provide this option than to break all the archs
1732      and have several arch maintainers pursuing me down dark alleys.
1733
1734config STOP_MACHINE
1735    bool
1736    default y
1737    depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1738    help
1739      Need stop_machine() primitive.
1740
1741source "block/Kconfig"
1742
1743config PREEMPT_NOTIFIERS
1744    bool
1745
1746config PADATA
1747    depends on SMP
1748    bool
1749
1750# Can be selected by architectures with broken toolchains
1751# that get confused by correct const<->read_only section
1752# mappings
1753config BROKEN_RODATA
1754    bool
1755
1756config ASN1
1757    tristate
1758    help
1759      Build a simple ASN.1 grammar compiler that produces a bytecode output
1760      that can be interpreted by the ASN.1 stream decoder and used to
1761      inform it as to what tags are to be expected in a stream and what
1762      functions to call on what tags.
1763
1764source "kernel/Kconfig.locks"
1765

Archive Download this file



interactive