1config ARCH
   2        string
   3        option env="ARCH"
   6        string
   7        option env="KERNELVERSION"
  10        string
  11        depends on !UML
  12        option defconfig_list
  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
 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
 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
 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"
 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 && SMP
 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 !PREEMPT && !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 PREEMPT && !SMP
 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
 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,
 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
 668          when you disable this, memory resource controller has no cares to
 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
 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 CFS_BANDWIDTH
 719        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
 720        depends on EXPERIMENTAL
 721        depends on FAIR_GROUP_SCHED
 722        default n
 723        help
 724          This option allows users to define CPU bandwidth rates (limits) for
 725          tasks running within the fair group scheduler.  Groups with no limit
 726          set are considered to be unconstrained and will run with no
 727          restriction.
 728          See tip/Documentation/scheduler/sched-bwc.txt for more information.
 730config RT_GROUP_SCHED
 731        bool "Group scheduling for SCHED_RR/FIFO"
 732        depends on EXPERIMENTAL
 733        depends on CGROUP_SCHED
 734        default n
 735        help
 736          This feature lets you explicitly allocate real CPU bandwidth
 737          to task groups. If enabled, it will also make it impossible to
 738          schedule realtime tasks for non-root users until you allocate
 739          realtime bandwidth for them.
 740          See Documentation/scheduler/sched-rt-group.txt for more information.
 742endif #CGROUP_SCHED
 744config BLK_CGROUP
 745        tristate "Block IO controller"
 746        depends on BLOCK
 747        default n
 748        ---help---
 749        Generic block IO controller cgroup interface. This is the common
 750        cgroup interface which should be used by various IO controlling
 751        policies.
 753        Currently, CFQ IO scheduler uses it to recognize task groups and
 754        control disk bandwidth allocation (proportional time slice allocation)
 755        to such task groups. It is also used by bio throttling logic in
 756        block layer to implement upper limit in IO rates on a device.
 758        This option only enables generic Block IO controller infrastructure.
 759        One needs to also enable actual IO controlling logic/policy. For
 760        enabling proportional weight division of disk bandwidth in CFQ, set
 761        CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
 764        See Documentation/cgroups/blkio-controller.txt for more information.
 767        bool "Enable Block IO controller debugging"
 768        depends on BLK_CGROUP
 769        default n
 770        ---help---
 771        Enable some debugging help. Currently it exports additional stat
 772        files in a cgroup which can be useful for debugging.
 774endif # CGROUPS
 776menuconfig NAMESPACES
 777        bool "Namespaces support" if EXPERT
 778        default !EXPERT
 779        help
 780          Provides the way to make tasks work with different objects using
 781          the same id. For example same IPC id may refer to different objects
 782          or same user id or pid may refer to different tasks when used in
 783          different namespaces.
 787config UTS_NS
 788        bool "UTS namespace"
 789        default y
 790        help
 791          In this namespace tasks see different info provided with the
 792          uname() system call
 794config IPC_NS
 795        bool "IPC namespace"
 796        depends on (SYSVIPC || POSIX_MQUEUE)
 797        default y
 798        help
 799          In this namespace tasks work with IPC ids which correspond to
 800          different IPC objects in different namespaces.
 802config USER_NS
 803        bool "User namespace (EXPERIMENTAL)"
 804        depends on EXPERIMENTAL
 805        default y
 806        help
 807          This allows containers, i.e. vservers, to use user namespaces
 808          to provide different user info for different servers.
 809          If unsure, say N.
 811config PID_NS
 812        bool "PID Namespaces"
 813        default y
 814        help
 815          Support process id namespaces.  This allows having multiple
 816          processes with the same pid as long as they are in different
 817          pid namespaces.  This is a building block of containers.
 819config NET_NS
 820        bool "Network namespace"
 821        depends on NET
 822        default y
 823        help
 824          Allow user space to create what appear to be multiple instances
 825          of the network stack.
 827endif # NAMESPACES
 830        bool "Automatic process group scheduling"
 831        select EVENTFD
 832        select CGROUPS
 833        select CGROUP_SCHED
 834        select FAIR_GROUP_SCHED
 835        help
 836          This option optimizes the scheduler for common desktop workloads by
 837          automatically creating and populating task groups.  This separation
 838          of workloads isolates aggressive CPU burners (like build jobs) from
 839          desktop applications.  Task group autogeneration is currently based
 840          upon task session.
 842config MM_OWNER
 843        bool
 846        bool "Enable deprecated sysfs features to support old userspace tools"
 847        depends on SYSFS
 848        default n
 849        help
 850          This option adds code that switches the layout of the "block" class
 852          /sys/block/.
 854          This switch is only active when the sysfs.deprecated=1 boot option is
 855          passed or the SYSFS_DEPRECATED_V2 option is set.
 857          This option allows new kernels to run on old distributions and tools,
 859          major distributions and tools handle this just fine.
 861          Recent distributions and userspace tools after 2009/2010 depend on
 863          option enabled.
 865          Only if you are using a new kernel on an old distribution, you might
 866          need to say Y here.
 869        bool "Enable deprecated sysfs features by default"
 870        default n
 871        depends on SYSFS
 872        depends on SYSFS_DEPRECATED
 873        help
 874          Enable deprecated sysfs by default.
 876          See the CONFIG_SYSFS_DEPRECATED option for more details about this
 877          option.
 879          Only if you are using a new kernel on an old distribution, you might
 880          need to say Y here. Even then, odds are you would not need it
 881          enabled, you can always pass the boot option if absolutely necessary.
 883config RELAY
 884        bool "Kernel->user space relay support (formerly relayfs)"
 885        help
 886          This option enables support for relay interface support in
 887          certain file systems (such as debugfs).
 888          It is designed to provide an efficient mechanism for tools and
 889          facilities to relay large amounts of data from kernel space to
 890          user space.
 892          If unsure, say N.
 894config BLK_DEV_INITRD
 895        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
 896        depends on BROKEN || !FRV
 897        help
 898          The initial RAM filesystem is a ramfs which is loaded by the
 899          boot loader (loadlin or lilo) and that is mounted as root
 900          before the normal boot procedure. It is typically used to
 901          load modules needed to mount the "real" root file system,
 902          etc. See <file:Documentation/initrd.txt> for details.
 904          If RAM disk support (BLK_DEV_RAM) is also included, this
 905          also enables initial RAM disk (initrd) support and adds
 906          15 Kbytes (more on some other architectures) to the kernel size.
 908          If unsure say Y.
 912source "usr/Kconfig"
 917        bool "Optimize for size"
 918        help
 920          resulting in a smaller kernel.
 922          If unsure, say Y.
 924config SYSCTL
 925        bool
 927config ANON_INODES
 928        bool
 930menuconfig EXPERT
 931        bool "Configure standard kernel features (expert users)"
 932        # Unhide debug options, to make the on-by-default options visible
 933        select DEBUG_KERNEL
 934        help
 935          This option allows certain base kernel options and settings
 936          to be disabled or tweaked. This is for specialized
 937          environments which can tolerate a "non-standard" kernel.
 938          Only use this if you really know what you are doing.
 940config UID16
 941        bool "Enable 16-bit UID system calls" if EXPERT
 943        default y
 944        help
 945          This enables the legacy 16-bit UID syscall wrappers.
 948        bool "Sysctl syscall support" if EXPERT
 949        depends on PROC_SYSCTL
 950        default n
 951        select SYSCTL
 952        ---help---
 953          sys_sysctl uses binary paths that have been found challenging
 954          to properly maintain and use.  The interface in /proc/sys
 955          using paths with ascii names is now the primary path to this
 956          information.
 958          Almost nothing using the binary sysctl interface so if you are
 959          trying to save some space it is probably safe to disable this,
 960          making your kernel marginally smaller.
 962          If unsure say N here.
 964config KALLSYMS
 965         bool "Load all symbols for debugging/ksymoops" if EXPERT
 966         default y
 967         help
 968           Say Y here to let the kernel print out symbolic crash information and
 969           symbolic stack backtraces. This increases the size of the kernel
 970           somewhat, as all symbols have to be loaded into the kernel image.
 972config KALLSYMS_ALL
 973        bool "Include all symbols in kallsyms"
 974        depends on DEBUG_KERNEL && KALLSYMS
 975        help
 976           Normally kallsyms only contains the symbols of functions for nicer
 977           OOPS messages and backtraces (i.e., symbols from the text and inittext
 978           sections). This is sufficient for most cases. And only in very rare
 980           names of variables from the data sections, etc).
 982           This option makes sure that all symbols are loaded into the kernel
 983           image (i.e., symbols from all sections) in cost of increased kernel
 984           size (depending on the kernel configuration, it may be 300KiB or
 985           something like this).
 987           Say N unless you really need all symbols.
 989config HOTPLUG
 990        bool "Support for hot-pluggable devices" if EXPERT
 991        default y
 992        help
 993          This option is provided for the case where no hotplug or uevent
 994          capabilities is wanted by the kernel.  You should only consider
 995          disabling this option for embedded systems that do not use modules, a
 996          dynamic /dev tree, or dynamic device discovery.  Just say Y.
 998config PRINTK
 999        default y
1000        bool "Enable support for printk" if EXPERT
1001        help
1002          This option enables normal printk support. Removing it
1003          eliminates most of the message strings from the kernel image
1004          and makes the kernel more or less silent. As this makes it
1005          very difficult to diagnose system problems, saying N here is
1006          strongly discouraged.
1008config BUG
1009        bool "BUG() support" if EXPERT
1010        default y
1011        help
1012          Disabling this option eliminates support for BUG and WARN, reducing
1013          the size of your kernel image and potentially quietly ignoring
1014          numerous fatal conditions. You should only consider disabling this
1015          option for embedded systems with no facilities for reporting errors.
1016          Just say Y.
1018config ELF_CORE
1019        default y
1020        bool "Enable ELF core dumps" if EXPERT
1021        help
1022          Enable support for generating core dumps. Disabling saves about 4k.
1026        bool "Enable PC-Speaker support" if EXPERT
1027        depends on HAVE_PCSPKR_PLATFORM
1028        select I8253_LOCK
1029        default y
1030        help
1031          This option allows to disable the internal PC-Speaker
1032          support, saving some memory.
1035        bool
1037config BASE_FULL
1038        default y
1039        bool "Enable full-sized data structures for core" if EXPERT
1040        help
1041          Disabling this option reduces the size of miscellaneous core
1042          kernel data structures. This saves memory on small machines,
1043          but may reduce performance.
1045config FUTEX
1046        bool "Enable futex support" if EXPERT
1047        default y
1048        select RT_MUTEXES
1049        help
1050          Disabling this option will cause the kernel to be built without
1051          support for "fast userspace mutexes".  The resulting kernel may not
1052          run glibc-based applications correctly.
1054config EPOLL
1055        bool "Enable eventpoll support" if EXPERT
1056        default y
1057        select ANON_INODES
1058        help
1059          Disabling this option will cause the kernel to be built without
1060          support for epoll family of system calls.
1062config SIGNALFD
1063        bool "Enable signalfd() system call" if EXPERT
1064        select ANON_INODES
1065        default y
1066        help
1067          Enable the signalfd() system call that allows to receive signals
1068          on a file descriptor.
1070          If unsure, say Y.
1072config TIMERFD
1073        bool "Enable timerfd() system call" if EXPERT
1074        select ANON_INODES
1075        default y
1076        help
1077          Enable the timerfd() system call that allows to receive timer
1078          events on a file descriptor.
1080          If unsure, say Y.
1082config EVENTFD
1083        bool "Enable eventfd() system call" if EXPERT
1084        select ANON_INODES
1085        default y
1086        help
1087          Enable the eventfd() system call that allows to receive both
1088          kernel notification (ie. KAIO) or userspace notifications.
1090          If unsure, say Y.
1092config SHMEM
1093        bool "Use full shmem filesystem" if EXPERT
1094        default y
1095        depends on MMU
1096        help
1097          The shmem is an internal filesystem used to manage shared memory.
1098          It is backed by swap and manages resource limits. It is also exported
1099          to userspace as tmpfs if TMPFS is enabled. Disabling this
1100          option replaces shmem and tmpfs with the much simpler ramfs code,
1101          which may be appropriate on small systems without swap.
1103config AIO
1104        bool "Enable AIO support" if EXPERT
1105        default y
1106        help
1107          This option enables POSIX asynchronous I/O which may by used
1108          by some high performance threaded applications. Disabling
1109          this option saves about 7k.
1111config EMBEDDED
1112        bool "Embedded system"
1113        select EXPERT
1114        help
1115          This option should be enabled if compiling the kernel for
1116          an embedded system so certain expert options are available
1117          for configuration.
1120        bool
1121        help
1122          See tools/perf/design.txt for details.
1125        bool
1126        help
1127          See tools/perf/design.txt for details
1129menu "Kernel Performance Events And Counters"
1131config PERF_EVENTS
1132        bool "Kernel performance events and counters"
1133        default y if (PROFILING || PERF_COUNTERS)
1134        depends on HAVE_PERF_EVENTS
1135        select ANON_INODES
1136        select IRQ_WORK
1137        help
1138          Enable kernel support for various performance events provided
1139          by software and hardware.
1141          Software events are supported either built-in or via the
1142          use of generic tracepoints.
1144          Most modern CPUs support performance events via performance
1145          counter registers. These registers count the number of certain
1146          types of hw events: such as instructions executed, cachemisses
1147          suffered, or branches mis-predicted - without slowing down the
1148          kernel or applications. These registers can also trigger interrupts
1149          when a threshold number of events have passed - and can thus be
1150          used to profile the code that runs on that CPU.
1152          The Linux Performance Event subsystem provides an abstraction of
1153          these software and hardware event capabilities, available via a
1155          provides per task and per CPU counters, and it provides event
1156          capabilities on top of those.
1158          Say Y if unsure.
1160config PERF_COUNTERS
1161        bool "Kernel performance counters (old config option)"
1162        depends on HAVE_PERF_EVENTS
1163        help
1164          This config has been obsoleted by the PERF_EVENTS
1165          config option - please see that one for details.
1167          It has no effect on the kernel whether you enable
1168          it or not, it is a compatibility placeholder.
1170          Say N if unsure.
1173        default n
1174        bool "Debug: use vmalloc to back perf mmap() buffers"
1175        depends on PERF_EVENTS && DEBUG_KERNEL
1176        select PERF_USE_VMALLOC
1177        help
1178         Use vmalloc memory to back perf mmap() buffers.
1180         Mostly useful for debugging the vmalloc code on platforms
1181         that don't require it.
1183         Say N if unsure.
1188        default y
1189        bool "Enable VM event counters for /proc/vmstat" if EXPERT
1190        help
1191          VM event counters are needed for event counts to be shown.
1192          This option allows the disabling of the VM event counters
1193          on EXPERT systems.  /proc/vmstat will only show page counts
1194          if VM event counters are disabled.
1196config PCI_QUIRKS
1197        default y
1198        bool "Enable PCI quirk workarounds" if EXPERT
1199        depends on PCI
1200        help
1201          This enables workarounds for various PCI chipset
1202          bugs/quirks. Disable this only if your target machine is
1203          unaffected by PCI quirks.
1205config SLUB_DEBUG
1206        default y
1207        bool "Enable SLUB debugging support" if EXPERT
1208        depends on SLUB && SYSFS
1209        help
1210          SLUB has extensive debug support features. Disabling these can
1211          result in significant savings in code size. This also disables
1212          SLUB sysfs support. /sys/slab will not exist and there will be
1213          no support for cache validation etc.
1215config COMPAT_BRK
1216        bool "Disable heap randomization"
1217        default y
1218        help
1219          Randomizing heap placement makes heap exploits harder, but it
1220          also breaks ancient binaries (including anything libc5 based).
1221          This option changes the bootup default to heap randomization
1222          disabled, and can be overridden at runtime by setting
1223          /proc/sys/kernel/randomize_va_space to 2.
1228        prompt "Choose SLAB allocator"
1229        default SLUB
1230        help
1231           This option allows to select a slab allocator.
1233config SLAB
1234        bool "SLAB"
1235        help
1236          The regular slab allocator that is established and known to work
1237          well in all environments. It organizes cache hot objects in
1238          per cpu and per node queues.
1240config SLUB
1241        bool "SLUB (Unqueued Allocator)"
1242        help
1243           SLUB is a slab allocator that minimizes cache line usage
1244           instead of managing queues of cached objects (SLAB approach).
1245           Per cpu caching is realized using slabs of objects instead
1246           of queues of objects. SLUB can use memory efficiently
1247           and has enhanced diagnostics. SLUB is the default choice for
1248           a slab allocator.
1250config SLOB
1251        depends on EXPERT
1252        bool "SLOB (Simple Allocator)"
1253        help
1254           SLOB replaces the stock allocator with a drastically simpler
1255           allocator. SLOB is generally more space efficient but
1256           does not perform as well on large systems.
1261        bool "Allow mmapped anonymous memory to be uninitialized"
1262        depends on EXPERT && !MMU
1263        default n
1264        help
1265          Normally, and according to the Linux spec, anonymous memory obtained
1266          from mmap() has it's contents cleared before it is passed to
1267          userspace.  Enabling this config option allows you to request that
1268          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1269          providing a huge performance boost.  If this option is not enabled,
1270          then the flag will be ignored.
1272          This is taken advantage of by uClibc's malloc(), and also by
1273          ELF-FDPIC binfmt's brk and stack allocator.
1275          Because of the obvious security issues, this option should only be
1276          enabled on embedded devices where you control what is run in
1277          userspace.  Since that isn't generally a problem on no-MMU systems,
1278          it is normally safe to say Y here.
1280          See Documentation/nommu-mmap.txt for more information.
1282config PROFILING
1283        bool "Profiling support"
1284        help
1285          Say Y here to enable the extended profiling support mechanisms used
1286          by profilers such as OProfile.
1289# Place an empty function call at each tracepoint site. Can be
1290# dynamically changed for a probe function.
1292config TRACEPOINTS
1293        bool
1295source "arch/Kconfig"
1297endmenu         # General setup
1300        bool
1301        default n
1303config SLABINFO
1304        bool
1305        depends on PROC_FS
1306        depends on SLAB || SLUB_DEBUG
1307        default y
1309config RT_MUTEXES
1310        boolean
1312config BASE_SMALL
1313        int
1314        default 0 if BASE_FULL
1315        default 1 if !BASE_FULL
1317menuconfig MODULES
1318        bool "Enable loadable module support"
1319        help
1320          Kernel modules are small pieces of compiled code which can
1321          be inserted in the running kernel, rather than being
1322          permanently built into the kernel.  You use the "modprobe"
1323          tool to add (and sometimes remove) them.  If you say Y here,
1324          many parts of the kernel can be built as modules (by
1325          answering M instead of Y where indicated): this is most
1326          useful for infrequently used options which are not required
1327          for booting.  For more information, see the man pages for
1328          modprobe, lsmod, modinfo, insmod and rmmod.
1330          If you say Y here, you will need to run "make
1331          modules_install" to put the modules under /lib/modules/
1332          where modprobe can find them (you may need to be root to do
1333          this).
1335          If unsure, say Y.
1337if MODULES
1340        bool "Forced module loading"
1341        default n
1342        help
1343          Allow loading of modules without version information (ie. modprobe
1345          is usually a really bad idea.
1347config MODULE_UNLOAD
1348        bool "Module unloading"
1349        help
1350          Without this option you will not be able to unload any
1351          modules (note that some modules may not be unloadable
1352          anyway), which makes your kernel smaller, faster
1353          and simpler.  If unsure, say Y.
1356        bool "Forced module unloading"
1357        depends on MODULE_UNLOAD && EXPERIMENTAL
1358        help
1359          This option allows you to force a module to unload, even if the
1360          kernel believes it is unsafe: the kernel will remove the module
1361          without waiting for anyone to stop using it (using the -f option to
1362          rmmod).  This is mainly for kernel developers and desperate users.
1363          If unsure, say N.
1365config MODVERSIONS
1366        bool "Module versioning support"
1367        help
1368          Usually, you have to use modules compiled with your kernel.
1369          Saying Y here makes it sometimes possible to use modules
1370          compiled for different kernels, by adding enough information
1371          to the modules to (hopefully) spot any changes which would
1372          make them incompatible with the kernel you are running.  If
1373          unsure, say N.
1376        bool "Source checksum for all modules"
1377        help
1378          Modules which contain a MODULE_VERSION get an extra "srcversion"
1379          field inserted into their modinfo section, which contains a
1380          sum of the source files which made it.  This helps maintainers
1381          see exactly which source was used to build a module (since
1382          others sometimes change the module source without updating
1383          the version).  With this option, such a "srcversion" field
1384          will be created for all modules.  If unsure, say N.
1386endif # MODULES
1389        bool
1390        help
1391          Back when each arch used to define their own cpu_online_map and
1392          cpu_possible_map, some of them chose to initialize cpu_possible_map
1393          with all 1s, and others with all 0s.  When they were centralised,
1394          it was better to provide this option than to break all the archs
1395          and have several arch maintainers pursuing me down dark alleys.
1397config STOP_MACHINE
1398        bool
1399        default y
1400        depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1401        help
1402          Need stop_machine() primitive.
1404source "block/Kconfig"
1407        bool
1409config PADATA
1410        depends on SMP
1411        bool
1413source "kernel/Kconfig.locks"