1config ARCH
   2        string
   3        option env="ARCH"
   6        string
   7        option env="KERNELVERSION"
  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"
  20        bool
  21        depends on !UML
  23config HAVE_IRQ_WORK
  24        bool
  26config IRQ_WORK
  27        bool
  28        depends on HAVE_IRQ_WORK
  30menu "General setup"
  33        bool "Prompt for development and/or incomplete code/drivers"
  34        ---help---
  35          Some of the various things that Linux supports (such as network
  36          drivers, file systems, network protocols, etc.) can be in a state
  37          of development where the functionality, stability, or the level of
  38          testing is not yet high enough for general use. This is usually
  39          known as the "alpha-test" phase among developers. If a feature is
  40          currently in alpha-test, then the developers usually discourage
  41          uninformed widespread use of this feature by the general public to
  42          avoid "Why doesn't this work?" type mail messages. However, active
  43          testing and use of these systems is welcomed. Just be aware that it
  44          may not meet the normal level of reliability or it may fail to work
  45          in some special cases. Detailed bug reports from people familiar
  46          with the kernel internals are usually welcomed by the developers
  47          (before submitting bug reports, please read the documents
  48          <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
  49          <file:Documentation/BUG-HUNTING>, and
  50          <file:Documentation/oops-tracing.txt> in the kernel source).
  52          This option will also make obsoleted drivers available. These are
  53          drivers that have been replaced by something else, and/or are
  54          scheduled to be removed in a future kernel release.
  56          Unless you intend to help test and develop a feature or driver that
  57          falls into this category, or you have a situation that requires
  58          using these features, you should probably say N here, which will
  59          cause the configurator to present you with fewer choices. If
  60          you say Y here, you will be offered the choice of using features or
  61          drivers that are currently considered to be in the alpha-test phase.
  63config BROKEN
  64        bool
  66config BROKEN_ON_SMP
  67        bool
  68        depends on BROKEN || !SMP
  69        default y
  72        int
  73        default 32 if !UML
  74        default 128 if UML
  75        help
  76          Maximum of each of the number of arguments and environment
  77          variables passed to init from the kernel command line.
  80config CROSS_COMPILE
  81        string "Cross-compiler tool prefix"
  82        help
  83          Same as running 'make CROSS_COMPILE=prefix-' but stored for
  84          default make runs in this kernel build directory.  You don't
  85          need to set this unless you want the configured kernel build
  86          directory to select the cross-compiler automatically.
  89        string "Local version - append to kernel release"
  90        help
  91          Append an extra string to the end of your kernel version.
  92          This will show up when you type uname, for example.
  93          The string you set here will be appended after the contents of
  94          any files with a filename matching localversion* in your
  95          object and source tree, in that order.  Your total string can
  96          be a maximum of 64 characters.
  99        bool "Automatically append version information to the version string"
 100        default y
 101        help
 102          This will try to automatically determine if the current tree is a
 103          release tree by looking for git tags that belong to the current
 104          top of tree revision.
 106          A string of the format -gxxxxxxxx will be added to the localversion
 107          if a git-based tree is found.  The string generated by this will be
 108          appended after any matching localversion* files, and after the value
 109          set in CONFIG_LOCALVERSION.
 111          (The actual string used here is the first eight characters produced
 112          by running the command:
 114            $ git rev-parse --verify HEAD
 116          which is done within the script "scripts/setlocalversion".)
 119        bool
 121config HAVE_KERNEL_BZIP2
 122        bool
 125        bool
 127config HAVE_KERNEL_XZ
 128        bool
 130config HAVE_KERNEL_LZO
 131        bool
 134        prompt "Kernel compression mode"
 135        default KERNEL_GZIP
 137        help
 138          The linux kernel is a kind of self-extracting executable.
 139          Several compression algorithms are available, which differ
 140          in efficiency, compression and decompression speed.
 141          Compression speed is only relevant when building a kernel.
 142          Decompression speed is relevant at each boot.
 144          If you have any problems with bzip2 or lzma compressed
 145          kernels, mail me (Alain Knaff) <>. (An older
 146          version of this functionality (bzip2 only), for 2.4, was
 147          supplied by Christian Ludwig)
 149          High compression options are mostly useful for users, who
 150          are low on disk space (embedded systems), but for whom ram
 151          size matters less.
 153          If in doubt, select 'gzip'
 155config KERNEL_GZIP
 156        bool "Gzip"
 157        depends on HAVE_KERNEL_GZIP
 158        help
 159          The old and tried gzip compression. It provides a good balance
 160          between compression ratio and decompression speed.
 162config KERNEL_BZIP2
 163        bool "Bzip2"
 164        depends on HAVE_KERNEL_BZIP2
 165        help
 166          Its compression ratio and speed is intermediate.
 167          Decompression speed is slowest among the three.  The kernel
 168          size is about 10% smaller with bzip2, in comparison to gzip.
 169          Bzip2 uses a large amount of memory. For modern kernels you
 170          will need at least 8MB RAM or more for booting.
 172config KERNEL_LZMA
 173        bool "LZMA"
 174        depends on HAVE_KERNEL_LZMA
 175        help
 176          The most recent compression algorithm.
 177          Its ratio is best, decompression speed is between the other
 178          two. Compression is slowest.  The kernel size is about 33%
 179          smaller with LZMA in comparison to gzip.
 181config KERNEL_XZ
 182        bool "XZ"
 183        depends on HAVE_KERNEL_XZ
 184        help
 185          XZ uses the LZMA2 algorithm and instruction set specific
 186          BCJ filters which can improve compression ratio of executable
 187          code. The size of the kernel is about 30% smaller with XZ in
 188          comparison to gzip. On architectures for which there is a BCJ
 189          filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
 190          will create a few percent smaller kernel than plain LZMA.
 192          The speed is about the same as with LZMA: The decompression
 193          speed of XZ is better than that of bzip2 but worse than gzip
 194          and LZO. Compression is slow.
 196config KERNEL_LZO
 197        bool "LZO"
 198        depends on HAVE_KERNEL_LZO
 199        help
 200          Its compression ratio is the poorest among the 4. The kernel
 201          size is about 10% bigger than gzip; however its speed
 202          (both compression and decompression) is the fastest.
 207        string "Default hostname"
 208        default "(none)"
 209        help
 210          This option determines the default system hostname before userspace
 211          calls sethostname(2). The kernel traditionally uses "(none)" here,
 212          but you may wish to use a different default here to make a minimal
 213          system more usable with less configuration.
 215config SWAP
 216        bool "Support for paging of anonymous memory (swap)"
 217        depends on MMU && BLOCK
 218        default y
 219        help
 220          This option allows you to choose whether you want to have support
 221          for so called swap devices or swap files in your kernel that are
 222          used to provide more virtual memory than the actual RAM present
 223          in your computer.  If unsure say Y.
 225config SYSVIPC
 226        bool "System V IPC"
 227        ---help---
 228          Inter Process Communication is a suite of library functions and
 229          system calls which let processes (running programs) synchronize and
 230          exchange information. It is generally considered to be a good thing,
 231          and some programs won't run unless you say Y here. In particular, if
 232          you want to run the DOS emulator dosemu under Linux (read the
 233          DOSEMU-HOWTO, available from <>),
 234          you'll need to say Y here.
 236          You can find documentation about IPC with "info ipc" and also in
 237          section 6.4 of the Linux Programmer's Guide, available from
 238          <>.
 241        bool
 242        depends on SYSVIPC
 243        depends on SYSCTL
 244        default y
 246config POSIX_MQUEUE
 247        bool "POSIX Message Queues"
 248        depends on NET && EXPERIMENTAL
 249        ---help---
 250          POSIX variant of message queues is a part of IPC. In POSIX message
 251          queues every message has a priority which decides about succession
 252          of receiving it by a process. If you want to compile and run
 253          programs written e.g. for Solaris with use of its POSIX message
 254          queues (functions mq_*) say Y here.
 256          POSIX message queues are visible as a filesystem called 'mqueue'
 257          and can be mounted somewhere if you want to do filesystem
 258          operations on message queues.
 260          If unsure, say Y.
 263        bool
 264        depends on POSIX_MQUEUE
 265        depends on SYSCTL
 266        default y
 269        bool "BSD Process Accounting"
 270        help
 271          If you say Y here, a user level program will be able to instruct the
 272          kernel (via a special system call) to write process accounting
 273          information to a file: whenever a process exits, information about
 274          that process will be appended to the file by the kernel.  The
 275          information includes things such as creation time, owning user,
 276          command name, memory usage, controlling terminal etc. (the complete
 277          list is in the struct acct in <file:include/linux/acct.h>).  It is
 278          up to the user level program to do useful things with this
 279          information.  This is generally a good idea, so say Y.
 281config BSD_PROCESS_ACCT_V3
 282        bool "BSD Process Accounting version 3 file format"
 283        depends on BSD_PROCESS_ACCT
 284        default n
 285        help
 286          If you say Y here, the process accounting information is written
 287          in a new file format that also logs the process IDs of each
 288          process and it's parent. Note that this file format is incompatible
 289          with previous v0/v1/v2 file formats, so you will need updated tools
 290          for processing it. A preliminary version of these tools is available
 291          at <>.
 293config FHANDLE
 294        bool "open by fhandle syscalls"
 295        select EXPORTFS
 296        help
 297          If you say Y here, a user level program will be able to map
 298          file names to handle and then later use the handle for
 299          different file system operations. This is useful in implementing
 300          userspace file servers, which now track files using handles instead
 301          of names. The handle would remain the same even if file names
 302          get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
 303          syscalls.
 305config TASKSTATS
 306        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
 307        depends on NET
 308        default n
 309        help
 310          Export selected statistics for tasks/processes through the
 311          generic netlink interface. Unlike BSD process accounting, the
 312          statistics are available during the lifetime of tasks/processes as
 313          responses to commands. Like BSD accounting, they are sent to user
 314          space on task exit.
 316          Say N if unsure.
 318config TASK_DELAY_ACCT
 319        bool "Enable per-task delay accounting (EXPERIMENTAL)"
 320        depends on TASKSTATS
 321        help
 322          Collect information on time spent by a task waiting for system
 323          resources like cpu, synchronous block I/O completion and swapping
 324          in pages. Such statistics can help in setting a task's priorities
 325          relative to other tasks for cpu, io, rss limits etc.
 327          Say N if unsure.
 329config TASK_XACCT
 330        bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
 331        depends on TASKSTATS
 332        help
 333          Collect extended task accounting data and send the data
 334          to userland for processing over the taskstats interface.
 336          Say N if unsure.
 339        bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
 340        depends on TASK_XACCT
 341        help
 342          Collect information on the number of bytes of storage I/O which this
 343          task has caused.
 345          Say N if unsure.
 347config AUDIT
 348        bool "Auditing support"
 349        depends on NET
 350        help
 351          Enable auditing infrastructure that can be used with another
 352          kernel subsystem, such as SELinux (which requires this for
 353          logging of avc messages output).  Does not do system-call
 354          auditing without CONFIG_AUDITSYSCALL.
 357        bool "Enable system-call auditing support"
 358        depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH)
 359        default y if SECURITY_SELINUX
 360        help
 361          Enable low-overhead system-call auditing infrastructure that
 362          can be used independently or with another kernel subsystem,
 363          such as SELinux.
 365config AUDIT_WATCH
 366        def_bool y
 367        depends on AUDITSYSCALL
 368        select FSNOTIFY
 370config AUDIT_TREE
 371        def_bool y
 372        depends on AUDITSYSCALL
 373        select FSNOTIFY
 375source "kernel/irq/Kconfig"
 377menu "RCU Subsystem"
 380        prompt "RCU Implementation"
 381        default TREE_RCU
 383config TREE_RCU
 384        bool "Tree-based hierarchical RCU"
 385        depends on !PREEMPT && SMP
 386        help
 387          This option selects the RCU implementation that is
 388          designed for very large SMP system with hundreds or
 389          thousands of CPUs.  It also scales down nicely to
 390          smaller systems.
 393        bool "Preemptible tree-based hierarchical RCU"
 394        depends on PREEMPT
 395        help
 396          This option selects the RCU implementation that is
 397          designed for very large SMP systems with hundreds or
 398          thousands of CPUs, but for which real-time response
 399          is also required.  It also scales down nicely to
 400          smaller systems.
 402config TINY_RCU
 403        bool "UP-only small-memory-footprint RCU"
 404        depends on !SMP
 405        help
 406          This option selects the RCU implementation that is
 407          designed for UP systems from which real-time response
 408          is not required.  This option greatly reduces the
 409          memory footprint of RCU.
 412        bool "Preemptible UP-only small-memory-footprint RCU"
 413        depends on !SMP && PREEMPT
 414        help
 415          This option selects the RCU implementation that is designed
 416          for real-time UP systems.  This option greatly reduces the
 417          memory footprint of RCU.
 421config PREEMPT_RCU
 422        def_bool ( TREE_PREEMPT_RCU || TINY_PREEMPT_RCU )
 423        help
 424          This option enables preemptible-RCU code that is common between
 425          the TREE_PREEMPT_RCU and TINY_PREEMPT_RCU implementations.
 427config RCU_TRACE
 428        bool "Enable tracing for RCU"
 429        help
 430          This option provides tracing in RCU which presents stats
 431          in debugfs for debugging RCU implementation.
 433          Say Y here if you want to enable RCU tracing
 434          Say N if you are unsure.
 436config RCU_FANOUT
 437        int "Tree-based hierarchical RCU fanout value"
 438        range 2 64 if 64BIT
 439        range 2 32 if !64BIT
 440        depends on TREE_RCU || TREE_PREEMPT_RCU
 441        default 64 if 64BIT
 442        default 32 if !64BIT
 443        help
 444          This option controls the fanout of hierarchical implementations
 445          of RCU, allowing RCU to work efficiently on machines with
 446          large numbers of CPUs.  This value must be at least the fourth
 447          root of NR_CPUS, which allows NR_CPUS to be insanely large.
 448          The default value of RCU_FANOUT should be used for production
 449          systems, but if you are stress-testing the RCU implementation
 450          itself, small RCU_FANOUT values allow you to test large-system
 451          code paths on small(er) systems.
 453          Select a specific number if testing RCU itself.
 454          Take the default if unsure.
 457        bool "Disable tree-based hierarchical RCU auto-balancing"
 458        depends on TREE_RCU || TREE_PREEMPT_RCU
 459        default n
 460        help
 461          This option forces use of the exact RCU_FANOUT value specified,
 462          regardless of imbalances in the hierarchy.  This is useful for
 463          testing RCU itself, and might one day be useful on systems with
 464          strong NUMA behavior.
 466          Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
 468          Say N if unsure.
 470config RCU_FAST_NO_HZ
 471        bool "Accelerate last non-dyntick-idle CPU's grace periods"
 472        depends on TREE_RCU && NO_HZ && SMP
 473        default n
 474        help
 475          This option causes RCU to attempt to accelerate grace periods
 476          in order to allow the final CPU to enter dynticks-idle state
 477          more quickly.  On the other hand, this option increases the
 478          overhead of the dynticks-idle checking, particularly on systems
 479          with large numbers of CPUs.
 481          Say Y if energy efficiency is critically important, particularly
 482                if you have relatively few CPUs.
 484          Say N if you are unsure.
 486config TREE_RCU_TRACE
 487        def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
 488        select DEBUG_FS
 489        help
 490          This option provides tracing for the TREE_RCU and
 491          TREE_PREEMPT_RCU implementations, permitting Makefile to
 492          trivially select kernel/rcutree_trace.c.
 494config RCU_BOOST
 495        bool "Enable RCU priority boosting"
 496        depends on RT_MUTEXES && PREEMPT_RCU
 497        default n
 498        help
 499          This option boosts the priority of preempted RCU readers that
 500          block the current preemptible RCU grace period for too long.
 501          This option also prevents heavy loads from blocking RCU
 502          callback invocation for all flavors of RCU.
 504          Say Y here if you are working with real-time apps or heavy loads
 505          Say N here if you are unsure.
 507config RCU_BOOST_PRIO
 508        int "Real-time priority to boost RCU readers to"
 509        range 1 99
 510        depends on RCU_BOOST
 511        default 1
 512        help
 513          This option specifies the real-time priority to which preempted
 514          RCU readers are to be boosted.  If you are working with CPU-bound
 515          real-time applications, you should specify a priority higher then
 516          the highest-priority CPU-bound application.
 518          Specify the real-time priority, or take the default if unsure.
 520config RCU_BOOST_DELAY
 521        int "Milliseconds to delay boosting after RCU grace-period start"
 522        range 0 3000
 523        depends on RCU_BOOST
 524        default 500
 525        help
 526          This option specifies the time to wait after the beginning of
 527          a given grace period before priority-boosting preempted RCU
 528          readers blocking that grace period.  Note that any RCU reader
 529          blocking an expedited RCU grace period is boosted immediately.
 531          Accept the default if unsure.
 533endmenu # "RCU Subsystem"
 535config IKCONFIG
 536        tristate "Kernel .config support"
 537        ---help---
 538          This option enables the complete Linux kernel ".config" file
 539          contents to be saved in the kernel. It provides documentation
 540          of which kernel options are used in a running kernel or in an
 541          on-disk kernel.  This information can be extracted from the kernel
 542          image file with the script scripts/extract-ikconfig and used as
 543          input to rebuild the current kernel or to build another kernel.
 544          It can also be extracted from a running kernel by reading
 545          /proc/config.gz if enabled (below).
 547config IKCONFIG_PROC
 548        bool "Enable access to .config through /proc/config.gz"
 549        depends on IKCONFIG && PROC_FS
 550        ---help---
 551          This option enables access to the kernel configuration file
 552          through /proc/config.gz.
 554config LOG_BUF_SHIFT
 555        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
 556        range 12 21
 557        default 17
 558        help
 559          Select kernel log buffer size as a power of 2.
 560          Examples:
 561                     17 => 128 KB
 562                     16 => 64 KB
 563                     15 => 32 KB
 564                     14 => 16 KB
 565                     13 =>  8 KB
 566                     12 =>  4 KB
 569# Architectures with an unreliable sched_clock() should select this:
 572        bool
 574menuconfig CGROUPS
 575        boolean "Control Group support"
 576        depends on EVENTFD
 577        help
 578          This option adds support for grouping sets of processes together, for
 579          use with process control subsystems such as Cpusets, CFS, memory
 580          controls or device isolation.
 581          See
 582                - Documentation/scheduler/sched-design-CFS.txt  (CFS)
 583                - Documentation/cgroups/ (features for grouping, isolation
 584                                          and resource control)
 586          Say N if unsure.
 588if CGROUPS
 590config CGROUP_DEBUG
 591        bool "Example debug cgroup subsystem"
 592        default n
 593        help
 594          This option enables a simple cgroup subsystem that
 595          exports useful debugging information about the cgroups
 596          framework.
 598          Say N if unsure.
 601        bool "Freezer cgroup subsystem"
 602        help
 603          Provides a way to freeze and unfreeze all tasks in a
 604          cgroup.
 606config CGROUP_DEVICE
 607        bool "Device controller for cgroups"
 608        help
 609          Provides a cgroup implementing whitelists for devices which
 610          a process in the cgroup can mknod or open.
 612config CPUSETS
 613        bool "Cpuset support"
 614        help
 615          This option will let you create and manage CPUSETs which
 616          allow dynamically partitioning a system into sets of CPUs and
 617          Memory Nodes and assigning tasks to run only within those sets.
 618          This is primarily useful on large SMP or NUMA systems.
 620          Say N if unsure.
 622config PROC_PID_CPUSET
 623        bool "Include legacy /proc/<pid>/cpuset file"
 624        depends on CPUSETS
 625        default y
 628        bool "Simple CPU accounting cgroup subsystem"
 629        help
 630          Provides a simple Resource Controller for monitoring the
 631          total CPU consumed by the tasks in a cgroup.
 634        bool "Resource counters"
 635        help
 636          This option enables controller independent resource accounting
 637          infrastructure that works with cgroups.
 640        bool "Memory Resource Controller for Control Groups"
 641        depends on RESOURCE_COUNTERS
 642        select MM_OWNER
 643        help
 644          Provides a memory resource controller that manages both anonymous
 645          memory and page cache. (See Documentation/cgroups/memory.txt)
 647          Note that setting this option increases fixed memory overhead
 648          associated with each page of memory in the system. By this,
 649          20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
 650          usage tracking struct at boot. Total amount of this is printed out
 651          at boot.
 653          Only enable when you're ok with these trade offs and really
 654          sure you need the memory resource controller. Even when you enable
 655          this, you can set "cgroup_disable=memory" at your boot option to
 656          disable memory resource controller and you can avoid overheads.
 657          (and lose benefits of memory resource controller)
 659          This config option also selects MM_OWNER config option, which
 660          could in turn add some fork/exit overhead.
 663        bool "Memory Resource Controller Swap Extension"
 664        depends on CGROUP_MEM_RES_CTLR && SWAP
 665        help
 666          Add swap management feature to memory resource controller. When you
 667          enable this, you can limit mem+swap usage per cgroup. In other words,
 668          when you disable this, memory resource controller has no cares to
 669          usage of swap...a process can exhaust all of the swap. This extension
 670          is useful when you want to avoid exhaustion swap but this itself
 671          adds more overheads and consumes memory for remembering information.
 672          Especially if you use 32bit system or small memory system, please
 673          be careful about enabling this. When memory resource controller
 674          is disabled by boot option, this will be automatically disabled and
 675          there will be no overhead from this. Even when you set this config=y,
 676          if boot option "swapaccount=0" is set, swap will not be accounted.
 677          Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
 678          size is 4096bytes, 512k per 1Gbytes of swap.
 680        bool "Memory Resource Controller Swap Extension enabled by default"
 681        depends on CGROUP_MEM_RES_CTLR_SWAP
 682        default y
 683        help
 684          Memory Resource Controller Swap Extension comes with its price in
 685          a bigger memory consumption. General purpose distribution kernels
 686          which want to enable the feature but keep it disabled by default
 687          and let the user enable it by swapaccount boot command line
 688          parameter should have this option unselected.
 689          For those who want to have the feature enabled by default should
 690          select this option (if, for some reason, they need to disable it
 691          then swapaccount=0 does the trick).
 693config CGROUP_PERF
 694        bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
 695        depends on PERF_EVENTS && CGROUPS
 696        help
 697          This option extends the per-cpu mode to restrict monitoring to
 698          threads which belong to the cgroup specified and run on the
 699          designated cpu.
 701          Say N if unsure.
 703menuconfig CGROUP_SCHED
 704        bool "Group CPU scheduler"
 705        depends on EXPERIMENTAL
 706        default n
 707        help
 708          This feature lets CPU scheduler recognize task groups and control CPU
 709          bandwidth allocation to such task groups. It uses cgroups to group
 710          tasks.
 714        bool "Group scheduling for SCHED_OTHER"
 715        depends on CGROUP_SCHED
 716        default CGROUP_SCHED
 718config RT_GROUP_SCHED
 719        bool "Group scheduling for SCHED_RR/FIFO"
 720        depends on EXPERIMENTAL
 721        depends on CGROUP_SCHED
 722        default n
 723        help
 724          This feature lets you explicitly allocate real CPU bandwidth
 725          to task groups. If enabled, it will also make it impossible to
 726          schedule realtime tasks for non-root users until you allocate
 727          realtime bandwidth for them.
 728          See Documentation/scheduler/sched-rt-group.txt for more information.
 730endif #CGROUP_SCHED
 732config BLK_CGROUP
 733        tristate "Block IO controller"
 734        depends on BLOCK
 735        default n
 736        ---help---
 737        Generic block IO controller cgroup interface. This is the common
 738        cgroup interface which should be used by various IO controlling
 739        policies.
 741        Currently, CFQ IO scheduler uses it to recognize task groups and
 742        control disk bandwidth allocation (proportional time slice allocation)
 743        to such task groups. It is also used by bio throttling logic in
 744        block layer to implement upper limit in IO rates on a device.
 746        This option only enables generic Block IO controller infrastructure.
 747        One needs to also enable actual IO controlling logic/policy. For
 748        enabling proportional weight division of disk bandwidth in CFQ, set
 749        CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
 752        See Documentation/cgroups/blkio-controller.txt for more information.
 755        bool "Enable Block IO controller debugging"
 756        depends on BLK_CGROUP
 757        default n
 758        ---help---
 759        Enable some debugging help. Currently it exports additional stat
 760        files in a cgroup which can be useful for debugging.
 762endif # CGROUPS
 764menuconfig NAMESPACES
 765        bool "Namespaces support" if EXPERT
 766        default !EXPERT
 767        help
 768          Provides the way to make tasks work with different objects using
 769          the same id. For example same IPC id may refer to different objects
 770          or same user id or pid may refer to different tasks when used in
 771          different namespaces.
 775config UTS_NS
 776        bool "UTS namespace"
 777        default y
 778        help
 779          In this namespace tasks see different info provided with the
 780          uname() system call
 782config IPC_NS
 783        bool "IPC namespace"
 784        depends on (SYSVIPC || POSIX_MQUEUE)
 785        default y
 786        help
 787          In this namespace tasks work with IPC ids which correspond to
 788          different IPC objects in different namespaces.
 790config USER_NS
 791        bool "User namespace (EXPERIMENTAL)"
 792        depends on EXPERIMENTAL
 793        default y
 794        help
 795          This allows containers, i.e. vservers, to use user namespaces
 796          to provide different user info for different servers.
 797          If unsure, say N.
 799config PID_NS
 800        bool "PID Namespaces"
 801        default y
 802        help
 803          Support process id namespaces.  This allows having multiple
 804          processes with the same pid as long as they are in different
 805          pid namespaces.  This is a building block of containers.
 807config NET_NS
 808        bool "Network namespace"
 809        depends on NET
 810        default y
 811        help
 812          Allow user space to create what appear to be multiple instances
 813          of the network stack.
 815endif # NAMESPACES
 818        bool "Automatic process group scheduling"
 819        select EVENTFD
 820        select CGROUPS
 821        select CGROUP_SCHED
 822        select FAIR_GROUP_SCHED
 823        help
 824          This option optimizes the scheduler for common desktop workloads by
 825          automatically creating and populating task groups.  This separation
 826          of workloads isolates aggressive CPU burners (like build jobs) from
 827          desktop applications.  Task group autogeneration is currently based
 828          upon task session.
 830config MM_OWNER
 831        bool
 834        bool "Enable deprecated sysfs features to support old userspace tools"
 835        depends on SYSFS
 836        default n
 837        help
 838          This option adds code that switches the layout of the "block" class
 839          devices, to not show up in /sys/class/block/, but only in
 840          /sys/block/.
 842          This switch is only active when the sysfs.deprecated=1 boot option is
 843          passed or the SYSFS_DEPRECATED_V2 option is set.
 845          This option allows new kernels to run on old distributions and tools,
 846          which might get confused by /sys/class/block/. Since 2007/2008 all
 847          major distributions and tools handle this just fine.
 849          Recent distributions and userspace tools after 2009/2010 depend on
 850          the existence of /sys/class/block/, and will not work with this
 851          option enabled.
 853          Only if you are using a new kernel on an old distribution, you might
 854          need to say Y here.
 857        bool "Enable deprecated sysfs features by default"
 858        default n
 859        depends on SYSFS
 860        depends on SYSFS_DEPRECATED
 861        help
 862          Enable deprecated sysfs by default.
 864          See the CONFIG_SYSFS_DEPRECATED option for more details about this
 865          option.
 867          Only if you are using a new kernel on an old distribution, you might
 868          need to say Y here. Even then, odds are you would not need it
 869          enabled, you can always pass the boot option if absolutely necessary.
 871config RELAY
 872        bool "Kernel->user space relay support (formerly relayfs)"
 873        help
 874          This option enables support for relay interface support in
 875          certain file systems (such as debugfs).
 876          It is designed to provide an efficient mechanism for tools and
 877          facilities to relay large amounts of data from kernel space to
 878          user space.
 880          If unsure, say N.
 882config BLK_DEV_INITRD
 883        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
 884        depends on BROKEN || !FRV
 885        help
 886          The initial RAM filesystem is a ramfs which is loaded by the
 887          boot loader (loadlin or lilo) and that is mounted as root
 888          before the normal boot procedure. It is typically used to
 889          load modules needed to mount the "real" root file system,
 890          etc. See <file:Documentation/initrd.txt> for details.
 892          If RAM disk support (BLK_DEV_RAM) is also included, this
 893          also enables initial RAM disk (initrd) support and adds
 894          15 Kbytes (more on some other architectures) to the kernel size.
 896          If unsure say Y.
 900source "usr/Kconfig"
 905        bool "Optimize for size"
 906        help
 907          Enabling this option will pass "-Os" instead of "-O2" to gcc
 908          resulting in a smaller kernel.
 910          If unsure, say Y.
 912config SYSCTL
 913        bool
 915config ANON_INODES
 916        bool
 918menuconfig EXPERT
 919        bool "Configure standard kernel features (expert users)"
 920        # Unhide debug options, to make the on-by-default options visible
 921        select DEBUG_KERNEL
 922        help
 923          This option allows certain base kernel options and settings
 924          to be disabled or tweaked. This is for specialized
 925          environments which can tolerate a "non-standard" kernel.
 926          Only use this if you really know what you are doing.
 928config UID16
 929        bool "Enable 16-bit UID system calls" if EXPERT
 930        depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
 931        default y
 932        help
 933          This enables the legacy 16-bit UID syscall wrappers.
 936        bool "Sysctl syscall support" if EXPERT
 937        depends on PROC_SYSCTL
 938        default y
 939        select SYSCTL
 940        ---help---
 941          sys_sysctl uses binary paths that have been found challenging
 942          to properly maintain and use.  The interface in /proc/sys
 943          using paths with ascii names is now the primary path to this
 944          information.
 946          Almost nothing using the binary sysctl interface so if you are
 947          trying to save some space it is probably safe to disable this,
 948          making your kernel marginally smaller.
 950          If unsure say Y here.
 952config KALLSYMS
 953         bool "Load all symbols for debugging/ksymoops" if EXPERT
 954         default y
 955         help
 956           Say Y here to let the kernel print out symbolic crash information and
 957           symbolic stack backtraces. This increases the size of the kernel
 958           somewhat, as all symbols have to be loaded into the kernel image.
 960config KALLSYMS_ALL
 961        bool "Include all symbols in kallsyms"
 962        depends on DEBUG_KERNEL && KALLSYMS
 963        help
 964           Normally kallsyms only contains the symbols of functions for nicer
 965           OOPS messages and backtraces (i.e., symbols from the text and inittext
 966           sections). This is sufficient for most cases. And only in very rare
 967           cases (e.g., when a debugger is used) all symbols are required (e.g.,
 968           names of variables from the data sections, etc).
 970           This option makes sure that all symbols are loaded into the kernel
 971           image (i.e., symbols from all sections) in cost of increased kernel
 972           size (depending on the kernel configuration, it may be 300KiB or
 973           something like this).
 975           Say N unless you really need all symbols.
 977config HOTPLUG
 978        bool "Support for hot-pluggable devices" if EXPERT
 979        default y
 980        help
 981          This option is provided for the case where no hotplug or uevent
 982          capabilities is wanted by the kernel.  You should only consider
 983          disabling this option for embedded systems that do not use modules, a
 984          dynamic /dev tree, or dynamic device discovery.  Just say Y.
 986config PRINTK
 987        default y
 988        bool "Enable support for printk" if EXPERT
 989        help
 990          This option enables normal printk support. Removing it
 991          eliminates most of the message strings from the kernel image
 992          and makes the kernel more or less silent. As this makes it
 993          very difficult to diagnose system problems, saying N here is
 994          strongly discouraged.
 996config BUG
 997        bool "BUG() support" if EXPERT
 998        default y
 999        help
1000          Disabling this option eliminates support for BUG and WARN, reducing
1001          the size of your kernel image and potentially quietly ignoring
1002          numerous fatal conditions. You should only consider disabling this
1003          option for embedded systems with no facilities for reporting errors.
1004          Just say Y.
1006config ELF_CORE
1007        default y
1008        bool "Enable ELF core dumps" if EXPERT
1009        help
1010          Enable support for generating core dumps. Disabling saves about 4k.
1014        bool "Enable PC-Speaker support" if EXPERT
1015        depends on HAVE_PCSPKR_PLATFORM
1016        select I8253_LOCK
1017        default y
1018        help
1019          This option allows to disable the internal PC-Speaker
1020          support, saving some memory.
1023        bool
1025config BASE_FULL
1026        default y
1027        bool "Enable full-sized data structures for core" if EXPERT
1028        help
1029          Disabling this option reduces the size of miscellaneous core
1030          kernel data structures. This saves memory on small machines,
1031          but may reduce performance.
1033config FUTEX
1034        bool "Enable futex support" if EXPERT
1035        default y
1036        select RT_MUTEXES
1037        help
1038          Disabling this option will cause the kernel to be built without
1039          support for "fast userspace mutexes".  The resulting kernel may not
1040          run glibc-based applications correctly.
1042config EPOLL
1043        bool "Enable eventpoll support" if EXPERT
1044        default y
1045        select ANON_INODES
1046        help
1047          Disabling this option will cause the kernel to be built without
1048          support for epoll family of system calls.
1050config SIGNALFD
1051        bool "Enable signalfd() system call" if EXPERT
1052        select ANON_INODES
1053        default y
1054        help
1055          Enable the signalfd() system call that allows to receive signals
1056          on a file descriptor.
1058          If unsure, say Y.
1060config TIMERFD
1061        bool "Enable timerfd() system call" if EXPERT
1062        select ANON_INODES
1063        default y
1064        help
1065          Enable the timerfd() system call that allows to receive timer
1066          events on a file descriptor.
1068          If unsure, say Y.
1070config EVENTFD
1071        bool "Enable eventfd() system call" if EXPERT
1072        select ANON_INODES
1073        default y
1074        help
1075          Enable the eventfd() system call that allows to receive both
1076          kernel notification (ie. KAIO) or userspace notifications.
1078          If unsure, say Y.
1080config SHMEM
1081        bool "Use full shmem filesystem" if EXPERT
1082        default y
1083        depends on MMU
1084        help
1085          The shmem is an internal filesystem used to manage shared memory.
1086          It is backed by swap and manages resource limits. It is also exported
1087          to userspace as tmpfs if TMPFS is enabled. Disabling this
1088          option replaces shmem and tmpfs with the much simpler ramfs code,
1089          which may be appropriate on small systems without swap.
1091config AIO
1092        bool "Enable AIO support" if EXPERT
1093        default y
1094        help
1095          This option enables POSIX asynchronous I/O which may by used
1096          by some high performance threaded applications. Disabling
1097          this option saves about 7k.
1099config EMBEDDED
1100        bool "Embedded system"
1101        select EXPERT
1102        help
1103          This option should be enabled if compiling the kernel for
1104          an embedded system so certain expert options are available
1105          for configuration.
1108        bool
1109        help
1110          See tools/perf/design.txt for details.
1113        bool
1114        help
1115          See tools/perf/design.txt for details
1117menu "Kernel Performance Events And Counters"
1119config PERF_EVENTS
1120        bool "Kernel performance events and counters"
1121        default y if (PROFILING || PERF_COUNTERS)
1122        depends on HAVE_PERF_EVENTS
1123        select ANON_INODES
1124        select IRQ_WORK
1125        help
1126          Enable kernel support for various performance events provided
1127          by software and hardware.
1129          Software events are supported either built-in or via the
1130          use of generic tracepoints.
1132          Most modern CPUs support performance events via performance
1133          counter registers. These registers count the number of certain
1134          types of hw events: such as instructions executed, cachemisses
1135          suffered, or branches mis-predicted - without slowing down the
1136          kernel or applications. These registers can also trigger interrupts
1137          when a threshold number of events have passed - and can thus be
1138          used to profile the code that runs on that CPU.
1140          The Linux Performance Event subsystem provides an abstraction of
1141          these software and hardware event capabilities, available via a
1142          system call and used by the "perf" utility in tools/perf/. It
1143          provides per task and per CPU counters, and it provides event
1144          capabilities on top of those.
1146          Say Y if unsure.
1148config PERF_COUNTERS
1149        bool "Kernel performance counters (old config option)"
1150        depends on HAVE_PERF_EVENTS
1151        help
1152          This config has been obsoleted by the PERF_EVENTS
1153          config option - please see that one for details.
1155          It has no effect on the kernel whether you enable
1156          it or not, it is a compatibility placeholder.
1158          Say N if unsure.
1161        default n
1162        bool "Debug: use vmalloc to back perf mmap() buffers"
1163        depends on PERF_EVENTS && DEBUG_KERNEL
1164        select PERF_USE_VMALLOC
1165        help
1166         Use vmalloc memory to back perf mmap() buffers.
1168         Mostly useful for debugging the vmalloc code on platforms
1169         that don't require it.
1171         Say N if unsure.
1176        default y
1177        bool "Enable VM event counters for /proc/vmstat" if EXPERT
1178        help
1179          VM event counters are needed for event counts to be shown.
1180          This option allows the disabling of the VM event counters
1181          on EXPERT systems.  /proc/vmstat will only show page counts
1182          if VM event counters are disabled.
1184config PCI_QUIRKS
1185        default y
1186        bool "Enable PCI quirk workarounds" if EXPERT
1187        depends on PCI
1188        help
1189          This enables workarounds for various PCI chipset
1190          bugs/quirks. Disable this only if your target machine is
1191          unaffected by PCI quirks.
1193config SLUB_DEBUG
1194        default y
1195        bool "Enable SLUB debugging support" if EXPERT
1196        depends on SLUB && SYSFS
1197        help
1198          SLUB has extensive debug support features. Disabling these can
1199          result in significant savings in code size. This also disables
1200          SLUB sysfs support. /sys/slab will not exist and there will be
1201          no support for cache validation etc.
1203config COMPAT_BRK
1204        bool "Disable heap randomization"
1205        default y
1206        help
1207          Randomizing heap placement makes heap exploits harder, but it
1208          also breaks ancient binaries (including anything libc5 based).
1209          This option changes the bootup default to heap randomization
1210          disabled, and can be overridden at runtime by setting
1211          /proc/sys/kernel/randomize_va_space to 2.
1213          On non-ancient distros (post-2000 ones) N is usually a safe choice.
1216        prompt "Choose SLAB allocator"
1217        default SLUB
1218        help
1219           This option allows to select a slab allocator.
1221config SLAB
1222        bool "SLAB"
1223        help
1224          The regular slab allocator that is established and known to work
1225          well in all environments. It organizes cache hot objects in
1226          per cpu and per node queues.
1228config SLUB
1229        bool "SLUB (Unqueued Allocator)"
1230        help
1231           SLUB is a slab allocator that minimizes cache line usage
1232           instead of managing queues of cached objects (SLAB approach).
1233           Per cpu caching is realized using slabs of objects instead
1234           of queues of objects. SLUB can use memory efficiently
1235           and has enhanced diagnostics. SLUB is the default choice for
1236           a slab allocator.
1238config SLOB
1239        depends on EXPERT
1240        bool "SLOB (Simple Allocator)"
1241        help
1242           SLOB replaces the stock allocator with a drastically simpler
1243           allocator. SLOB is generally more space efficient but
1244           does not perform as well on large systems.
1249        bool "Allow mmapped anonymous memory to be uninitialized"
1250        depends on EXPERT && !MMU
1251        default n
1252        help
1253          Normally, and according to the Linux spec, anonymous memory obtained
1254          from mmap() has it's contents cleared before it is passed to
1255          userspace.  Enabling this config option allows you to request that
1256          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1257          providing a huge performance boost.  If this option is not enabled,
1258          then the flag will be ignored.
1260          This is taken advantage of by uClibc's malloc(), and also by
1261          ELF-FDPIC binfmt's brk and stack allocator.
1263          Because of the obvious security issues, this option should only be
1264          enabled on embedded devices where you control what is run in
1265          userspace.  Since that isn't generally a problem on no-MMU systems,
1266          it is normally safe to say Y here.
1268          See Documentation/nommu-mmap.txt for more information.
1270config PROFILING
1271        bool "Profiling support"
1272        help
1273          Say Y here to enable the extended profiling support mechanisms used
1274          by profilers such as OProfile.
1277# Place an empty function call at each tracepoint site. Can be
1278# dynamically changed for a probe function.
1280config TRACEPOINTS
1281        bool
1283source "arch/Kconfig"
1285endmenu         # General setup
1288        bool
1289        default n
1291config SLABINFO
1292        bool
1293        depends on PROC_FS
1294        depends on SLAB || SLUB_DEBUG
1295        default y
1297config RT_MUTEXES
1298        boolean
1300config BASE_SMALL
1301        int
1302        default 0 if BASE_FULL
1303        default 1 if !BASE_FULL
1305menuconfig MODULES
1306        bool "Enable loadable module support"
1307        help
1308          Kernel modules are small pieces of compiled code which can
1309          be inserted in the running kernel, rather than being
1310          permanently built into the kernel.  You use the "modprobe"
1311          tool to add (and sometimes remove) them.  If you say Y here,
1312          many parts of the kernel can be built as modules (by
1313          answering M instead of Y where indicated): this is most
1314          useful for infrequently used options which are not required
1315          for booting.  For more information, see the man pages for
1316          modprobe, lsmod, modinfo, insmod and rmmod.
1318          If you say Y here, you will need to run "make
1319          modules_install" to put the modules under /lib/modules/
1320          where modprobe can find them (you may need to be root to do
1321          this).
1323          If unsure, say Y.
1325if MODULES
1328        bool "Forced module loading"
1329        default n
1330        help
1331          Allow loading of modules without version information (ie. modprobe
1332          --force).  Forced module loading sets the 'F' (forced) taint flag and
1333          is usually a really bad idea.
1335config MODULE_UNLOAD
1336        bool "Module unloading"
1337        help
1338          Without this option you will not be able to unload any
1339          modules (note that some modules may not be unloadable
1340          anyway), which makes your kernel smaller, faster
1341          and simpler.  If unsure, say Y.
1344        bool "Forced module unloading"
1345        depends on MODULE_UNLOAD && EXPERIMENTAL
1346        help
1347          This option allows you to force a module to unload, even if the
1348          kernel believes it is unsafe: the kernel will remove the module
1349          without waiting for anyone to stop using it (using the -f option to
1350          rmmod).  This is mainly for kernel developers and desperate users.
1351          If unsure, say N.
1353config MODVERSIONS
1354        bool "Module versioning support"
1355        help
1356          Usually, you have to use modules compiled with your kernel.
1357          Saying Y here makes it sometimes possible to use modules
1358          compiled for different kernels, by adding enough information
1359          to the modules to (hopefully) spot any changes which would
1360          make them incompatible with the kernel you are running.  If
1361          unsure, say N.
1364        bool "Source checksum for all modules"
1365        help
1366          Modules which contain a MODULE_VERSION get an extra "srcversion"
1367          field inserted into their modinfo section, which contains a
1368          sum of the source files which made it.  This helps maintainers
1369          see exactly which source was used to build a module (since
1370          others sometimes change the module source without updating
1371          the version).  With this option, such a "srcversion" field
1372          will be created for all modules.  If unsure, say N.
1374endif # MODULES
1377        bool
1378        help
1379          Back when each arch used to define their own cpu_online_map and
1380          cpu_possible_map, some of them chose to initialize cpu_possible_map
1381          with all 1s, and others with all 0s.  When they were centralised,
1382          it was better to provide this option than to break all the archs
1383          and have several arch maintainers pursuing me down dark alleys.
1385config STOP_MACHINE
1386        bool
1387        default y
1388        depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1389        help
1390          Need stop_machine() primitive.
1392source "block/Kconfig"
1395        bool
1397config PADATA
1398        depends on SMP
1399        bool
1401source "kernel/Kconfig.locks"
1402 kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.