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