linux/init/Kconfig
<<
>>
Prefs
   1config ARCH
   2        string
   3        option env="ARCH"
   4
   5config KERNELVERSION
   6        string
   7        option env="KERNELVERSION"
   8
   9config DEFCONFIG_LIST
  10        string
  11        depends on !UML
  12        option defconfig_list
  13        default "/lib/modules/$UNAME_RELEASE/.config"
  14        default "/etc/kernel-config"
  15        default "/boot/config-$UNAME_RELEASE"
  16        default "$ARCH_DEFCONFIG"
  17        default "arch/$ARCH/defconfig"
  18
  19config CONSTRUCTORS
  20        bool
  21        depends on !UML
  22        default y
  23
  24menu "General setup"
  25
  26config EXPERIMENTAL
  27        bool "Prompt for development and/or incomplete code/drivers"
  28        ---help---
  29          Some of the various things that Linux supports (such as network
  30          drivers, file systems, network protocols, etc.) can be in a state
  31          of development where the functionality, stability, or the level of
  32          testing is not yet high enough for general use. This is usually
  33          known as the "alpha-test" phase among developers. If a feature is
  34          currently in alpha-test, then the developers usually discourage
  35          uninformed widespread use of this feature by the general public to
  36          avoid "Why doesn't this work?" type mail messages. However, active
  37          testing and use of these systems is welcomed. Just be aware that it
  38          may not meet the normal level of reliability or it may fail to work
  39          in some special cases. Detailed bug reports from people familiar
  40          with the kernel internals are usually welcomed by the developers
  41          (before submitting bug reports, please read the documents
  42          <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>,
  43          <file:Documentation/BUG-HUNTING>, and
  44          <file:Documentation/oops-tracing.txt> in the kernel source).
  45
  46          This option will also make obsoleted drivers available. These are
  47          drivers that have been replaced by something else, and/or are
  48          scheduled to be removed in a future kernel release.
  49
  50          Unless you intend to help test and develop a feature or driver that
  51          falls into this category, or you have a situation that requires
  52          using these features, you should probably say N here, which will
  53          cause the configurator to present you with fewer choices. If
  54          you say Y here, you will be offered the choice of using features or
  55          drivers that are currently considered to be in the alpha-test phase.
  56
  57config BROKEN
  58        bool
  59
  60config BROKEN_ON_SMP
  61        bool
  62        depends on BROKEN || !SMP
  63        default y
  64
  65config LOCK_KERNEL
  66        bool
  67        depends on SMP || PREEMPT
  68        default y
  69
  70config INIT_ENV_ARG_LIMIT
  71        int
  72        default 32 if !UML
  73        default 128 if UML
  74        help
  75          Maximum of each of the number of arguments and environment
  76          variables passed to init from the kernel command line.
  77
  78
  79config CROSS_COMPILE
  80        string "Cross-compiler tool prefix"
  81        help
  82          Same as running 'make CROSS_COMPILE=prefix-' but stored for
  83          default make runs in this kernel build directory.  You don't
  84          need to set this unless you want the configured kernel build
  85          directory to select the cross-compiler automatically.
  86
  87config LOCALVERSION
  88        string "Local version - append to kernel release"
  89        help
  90          Append an extra string to the end of your kernel version.
  91          This will show up when you type uname, for example.
  92          The string you set here will be appended after the contents of
  93          any files with a filename matching localversion* in your
  94          object and source tree, in that order.  Your total string can
  95          be a maximum of 64 characters.
  96
  97config LOCALVERSION_AUTO
  98        bool "Automatically append version information to the version string"
  99        default y
 100        help
 101          This will try to automatically determine if the current tree is a
 102          release tree by looking for git tags that belong to the current
 103          top of tree revision.
 104
 105          A string of the format -gxxxxxxxx will be added to the localversion
 106          if a git-based tree is found.  The string generated by this will be
 107          appended after any matching localversion* files, and after the value
 108          set in CONFIG_LOCALVERSION.
 109
 110          (The actual string used here is the first eight characters produced
 111          by running the command:
 112
 113            $ git rev-parse --verify HEAD
 114
 115          which is done within the script "scripts/setlocalversion".)
 116
 117config HAVE_KERNEL_GZIP
 118        bool
 119
 120config HAVE_KERNEL_BZIP2
 121        bool
 122
 123config HAVE_KERNEL_LZMA
 124        bool
 125
 126config HAVE_KERNEL_LZO
 127        bool
 128
 129choice
 130        prompt "Kernel compression mode"
 131        default KERNEL_GZIP
 132        depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO
 133        help
 134          The linux kernel is a kind of self-extracting executable.
 135          Several compression algorithms are available, which differ
 136          in efficiency, compression and decompression speed.
 137          Compression speed is only relevant when building a kernel.
 138          Decompression speed is relevant at each boot.
 139
 140          If you have any problems with bzip2 or lzma compressed
 141          kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
 142          version of this functionality (bzip2 only), for 2.4, was
 143          supplied by Christian Ludwig)
 144
 145          High compression options are mostly useful for users, who
 146          are low on disk space (embedded systems), but for whom ram
 147          size matters less.
 148
 149          If in doubt, select 'gzip'
 150
 151config KERNEL_GZIP
 152        bool "Gzip"
 153        depends on HAVE_KERNEL_GZIP
 154        help
 155          The old and tried gzip compression. It provides a good balance
 156          between compression ratio and decompression speed.
 157
 158config KERNEL_BZIP2
 159        bool "Bzip2"
 160        depends on HAVE_KERNEL_BZIP2
 161        help
 162          Its compression ratio and speed is intermediate.
 163          Decompression speed is slowest among the three.  The kernel
 164          size is about 10% smaller with bzip2, in comparison to gzip.
 165          Bzip2 uses a large amount of memory. For modern kernels you
 166          will need at least 8MB RAM or more for booting.
 167
 168config KERNEL_LZMA
 169        bool "LZMA"
 170        depends on HAVE_KERNEL_LZMA
 171        help
 172          The most recent compression algorithm.
 173          Its ratio is best, decompression speed is between the other
 174          two. Compression is slowest.  The kernel size is about 33%
 175          smaller with LZMA in comparison to gzip.
 176
 177config KERNEL_LZO
 178        bool "LZO"
 179        depends on HAVE_KERNEL_LZO
 180        help
 181          Its compression ratio is the poorest among the 4. The kernel
 182          size is about about 10% bigger than gzip; however its speed
 183          (both compression and decompression) is the fastest.
 184
 185endchoice
 186
 187config SWAP
 188        bool "Support for paging of anonymous memory (swap)"
 189        depends on MMU && BLOCK
 190        default y
 191        help
 192          This option allows you to choose whether you want to have support
 193          for so called swap devices or swap files in your kernel that are
 194          used to provide more virtual memory than the actual RAM present
 195          in your computer.  If unsure say Y.
 196
 197config SYSVIPC
 198        bool "System V IPC"
 199        ---help---
 200          Inter Process Communication is a suite of library functions and
 201          system calls which let processes (running programs) synchronize and
 202          exchange information. It is generally considered to be a good thing,
 203          and some programs won't run unless you say Y here. In particular, if
 204          you want to run the DOS emulator dosemu under Linux (read the
 205          DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
 206          you'll need to say Y here.
 207
 208          You can find documentation about IPC with "info ipc" and also in
 209          section 6.4 of the Linux Programmer's Guide, available from
 210          <http://www.tldp.org/guides.html>.
 211
 212config SYSVIPC_SYSCTL
 213        bool
 214        depends on SYSVIPC
 215        depends on SYSCTL
 216        default y
 217
 218config POSIX_MQUEUE
 219        bool "POSIX Message Queues"
 220        depends on NET && EXPERIMENTAL
 221        ---help---
 222          POSIX variant of message queues is a part of IPC. In POSIX message
 223          queues every message has a priority which decides about succession
 224          of receiving it by a process. If you want to compile and run
 225          programs written e.g. for Solaris with use of its POSIX message
 226          queues (functions mq_*) say Y here.
 227
 228          POSIX message queues are visible as a filesystem called 'mqueue'
 229          and can be mounted somewhere if you want to do filesystem
 230          operations on message queues.
 231
 232          If unsure, say Y.
 233
 234config POSIX_MQUEUE_SYSCTL
 235        bool
 236        depends on POSIX_MQUEUE
 237        depends on SYSCTL
 238        default y
 239
 240config BSD_PROCESS_ACCT
 241        bool "BSD Process Accounting"
 242        help
 243          If you say Y here, a user level program will be able to instruct the
 244          kernel (via a special system call) to write process accounting
 245          information to a file: whenever a process exits, information about
 246          that process will be appended to the file by the kernel.  The
 247          information includes things such as creation time, owning user,
 248          command name, memory usage, controlling terminal etc. (the complete
 249          list is in the struct acct in <file:include/linux/acct.h>).  It is
 250          up to the user level program to do useful things with this
 251          information.  This is generally a good idea, so say Y.
 252
 253config BSD_PROCESS_ACCT_V3
 254        bool "BSD Process Accounting version 3 file format"
 255        depends on BSD_PROCESS_ACCT
 256        default n
 257        help
 258          If you say Y here, the process accounting information is written
 259          in a new file format that also logs the process IDs of each
 260          process and it's parent. Note that this file format is incompatible
 261          with previous v0/v1/v2 file formats, so you will need updated tools
 262          for processing it. A preliminary version of these tools is available
 263          at <http://www.gnu.org/software/acct/>.
 264
 265config TASKSTATS
 266        bool "Export task/process statistics through netlink (EXPERIMENTAL)"
 267        depends on NET
 268        default n
 269        help
 270          Export selected statistics for tasks/processes through the
 271          generic netlink interface. Unlike BSD process accounting, the
 272          statistics are available during the lifetime of tasks/processes as
 273          responses to commands. Like BSD accounting, they are sent to user
 274          space on task exit.
 275
 276          Say N if unsure.
 277
 278config TASK_DELAY_ACCT
 279        bool "Enable per-task delay accounting (EXPERIMENTAL)"
 280        depends on TASKSTATS
 281        help
 282          Collect information on time spent by a task waiting for system
 283          resources like cpu, synchronous block I/O completion and swapping
 284          in pages. Such statistics can help in setting a task's priorities
 285          relative to other tasks for cpu, io, rss limits etc.
 286
 287          Say N if unsure.
 288
 289config TASK_XACCT
 290        bool "Enable extended accounting over taskstats (EXPERIMENTAL)"
 291        depends on TASKSTATS
 292        help
 293          Collect extended task accounting data and send the data
 294          to userland for processing over the taskstats interface.
 295
 296          Say N if unsure.
 297
 298config TASK_IO_ACCOUNTING
 299        bool "Enable per-task storage I/O accounting (EXPERIMENTAL)"
 300        depends on TASK_XACCT
 301        help
 302          Collect information on the number of bytes of storage I/O which this
 303          task has caused.
 304
 305          Say N if unsure.
 306
 307config AUDIT
 308        bool "Auditing support"
 309        depends on NET
 310        help
 311          Enable auditing infrastructure that can be used with another
 312          kernel subsystem, such as SELinux (which requires this for
 313          logging of avc messages output).  Does not do system-call
 314          auditing without CONFIG_AUDITSYSCALL.
 315
 316config AUDITSYSCALL
 317        bool "Enable system-call auditing support"
 318        depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH)
 319        default y if SECURITY_SELINUX
 320        help
 321          Enable low-overhead system-call auditing infrastructure that
 322          can be used independently or with another kernel subsystem,
 323          such as SELinux.  To use audit's filesystem watch feature, please
 324          ensure that INOTIFY is configured.
 325
 326config AUDIT_TREE
 327        def_bool y
 328        depends on AUDITSYSCALL
 329        select INOTIFY
 330
 331menu "RCU Subsystem"
 332
 333choice
 334        prompt "RCU Implementation"
 335        default TREE_RCU
 336
 337config TREE_RCU
 338        bool "Tree-based hierarchical RCU"
 339        help
 340          This option selects the RCU implementation that is
 341          designed for very large SMP system with hundreds or
 342          thousands of CPUs.  It also scales down nicely to
 343          smaller systems.
 344
 345config TREE_PREEMPT_RCU
 346        bool "Preemptable tree-based hierarchical RCU"
 347        depends on PREEMPT
 348        help
 349          This option selects the RCU implementation that is
 350          designed for very large SMP systems with hundreds or
 351          thousands of CPUs, but for which real-time response
 352          is also required.  It also scales down nicely to
 353          smaller systems.
 354
 355config TINY_RCU
 356        bool "UP-only small-memory-footprint RCU"
 357        depends on !SMP
 358        help
 359          This option selects the RCU implementation that is
 360          designed for UP systems from which real-time response
 361          is not required.  This option greatly reduces the
 362          memory footprint of RCU.
 363
 364endchoice
 365
 366config RCU_TRACE
 367        bool "Enable tracing for RCU"
 368        depends on TREE_RCU || TREE_PREEMPT_RCU
 369        help
 370          This option provides tracing in RCU which presents stats
 371          in debugfs for debugging RCU implementation.
 372
 373          Say Y here if you want to enable RCU tracing
 374          Say N if you are unsure.
 375
 376config RCU_FANOUT
 377        int "Tree-based hierarchical RCU fanout value"
 378        range 2 64 if 64BIT
 379        range 2 32 if !64BIT
 380        depends on TREE_RCU || TREE_PREEMPT_RCU
 381        default 64 if 64BIT
 382        default 32 if !64BIT
 383        help
 384          This option controls the fanout of hierarchical implementations
 385          of RCU, allowing RCU to work efficiently on machines with
 386          large numbers of CPUs.  This value must be at least the cube
 387          root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
 388          systems and up to 262,144 for 64-bit systems.
 389
 390          Select a specific number if testing RCU itself.
 391          Take the default if unsure.
 392
 393config RCU_FANOUT_EXACT
 394        bool "Disable tree-based hierarchical RCU auto-balancing"
 395        depends on TREE_RCU || TREE_PREEMPT_RCU
 396        default n
 397        help
 398          This option forces use of the exact RCU_FANOUT value specified,
 399          regardless of imbalances in the hierarchy.  This is useful for
 400          testing RCU itself, and might one day be useful on systems with
 401          strong NUMA behavior.
 402
 403          Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
 404
 405          Say N if unsure.
 406
 407config RCU_FAST_NO_HZ
 408        bool "Accelerate last non-dyntick-idle CPU's grace periods"
 409        depends on TREE_RCU && NO_HZ && SMP
 410        default n
 411        help
 412          This option causes RCU to attempt to accelerate grace periods
 413          in order to allow the final CPU to enter dynticks-idle state
 414          more quickly.  On the other hand, this option increases the
 415          overhead of the dynticks-idle checking, particularly on systems
 416          with large numbers of CPUs.
 417
 418          Say Y if energy efficiency is critically important, particularly
 419                if you have relatively few CPUs.
 420
 421          Say N if you are unsure.
 422
 423config TREE_RCU_TRACE
 424        def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
 425        select DEBUG_FS
 426        help
 427          This option provides tracing for the TREE_RCU and
 428          TREE_PREEMPT_RCU implementations, permitting Makefile to
 429          trivially select kernel/rcutree_trace.c.
 430
 431endmenu # "RCU Subsystem"
 432
 433config IKCONFIG
 434        tristate "Kernel .config support"
 435        ---help---
 436          This option enables the complete Linux kernel ".config" file
 437          contents to be saved in the kernel. It provides documentation
 438          of which kernel options are used in a running kernel or in an
 439          on-disk kernel.  This information can be extracted from the kernel
 440          image file with the script scripts/extract-ikconfig and used as
 441          input to rebuild the current kernel or to build another kernel.
 442          It can also be extracted from a running kernel by reading
 443          /proc/config.gz if enabled (below).
 444
 445config IKCONFIG_PROC
 446        bool "Enable access to .config through /proc/config.gz"
 447        depends on IKCONFIG && PROC_FS
 448        ---help---
 449          This option enables access to the kernel configuration file
 450          through /proc/config.gz.
 451
 452config LOG_BUF_SHIFT
 453        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
 454        range 12 21
 455        default 17
 456        help
 457          Select kernel log buffer size as a power of 2.
 458          Examples:
 459                     17 => 128 KB
 460                     16 => 64 KB
 461                     15 => 32 KB
 462                     14 => 16 KB
 463                     13 =>  8 KB
 464                     12 =>  4 KB
 465
 466#
 467# Architectures with an unreliable sched_clock() should select this:
 468#
 469config HAVE_UNSTABLE_SCHED_CLOCK
 470        bool
 471
 472menuconfig CGROUPS
 473        boolean "Control Group support"
 474        depends on EVENTFD
 475        help
 476          This option adds support for grouping sets of processes together, for
 477          use with process control subsystems such as Cpusets, CFS, memory
 478          controls or device isolation.
 479          See
 480                - Documentation/scheduler/sched-design-CFS.txt  (CFS)
 481                - Documentation/cgroups/ (features for grouping, isolation
 482                                          and resource control)
 483
 484          Say N if unsure.
 485
 486if CGROUPS
 487
 488config CGROUP_DEBUG
 489        bool "Example debug cgroup subsystem"
 490        depends on CGROUPS
 491        default n
 492        help
 493          This option enables a simple cgroup subsystem that
 494          exports useful debugging information about the cgroups
 495          framework.
 496
 497          Say N if unsure.
 498
 499config CGROUP_NS
 500        bool "Namespace cgroup subsystem"
 501        depends on CGROUPS
 502        help
 503          Provides a simple namespace cgroup subsystem to
 504          provide hierarchical naming of sets of namespaces,
 505          for instance virtual servers and checkpoint/restart
 506          jobs.
 507
 508config CGROUP_FREEZER
 509        bool "Freezer cgroup subsystem"
 510        depends on CGROUPS
 511        help
 512          Provides a way to freeze and unfreeze all tasks in a
 513          cgroup.
 514
 515config CGROUP_DEVICE
 516        bool "Device controller for cgroups"
 517        depends on CGROUPS && EXPERIMENTAL
 518        help
 519          Provides a cgroup implementing whitelists for devices which
 520          a process in the cgroup can mknod or open.
 521
 522config CPUSETS
 523        bool "Cpuset support"
 524        depends on CGROUPS
 525        help
 526          This option will let you create and manage CPUSETs which
 527          allow dynamically partitioning a system into sets of CPUs and
 528          Memory Nodes and assigning tasks to run only within those sets.
 529          This is primarily useful on large SMP or NUMA systems.
 530
 531          Say N if unsure.
 532
 533config PROC_PID_CPUSET
 534        bool "Include legacy /proc/<pid>/cpuset file"
 535        depends on CPUSETS
 536        default y
 537
 538config CGROUP_CPUACCT
 539        bool "Simple CPU accounting cgroup subsystem"
 540        depends on CGROUPS
 541        help
 542          Provides a simple Resource Controller for monitoring the
 543          total CPU consumed by the tasks in a cgroup.
 544
 545config RESOURCE_COUNTERS
 546        bool "Resource counters"
 547        help
 548          This option enables controller independent resource accounting
 549          infrastructure that works with cgroups.
 550        depends on CGROUPS
 551
 552config CGROUP_MEM_RES_CTLR
 553        bool "Memory Resource Controller for Control Groups"
 554        depends on CGROUPS && RESOURCE_COUNTERS
 555        select MM_OWNER
 556        help
 557          Provides a memory resource controller that manages both anonymous
 558          memory and page cache. (See Documentation/cgroups/memory.txt)
 559
 560          Note that setting this option increases fixed memory overhead
 561          associated with each page of memory in the system. By this,
 562          20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
 563          usage tracking struct at boot. Total amount of this is printed out
 564          at boot.
 565
 566          Only enable when you're ok with these trade offs and really
 567          sure you need the memory resource controller. Even when you enable
 568          this, you can set "cgroup_disable=memory" at your boot option to
 569          disable memory resource controller and you can avoid overheads.
 570          (and lose benefits of memory resource controller)
 571
 572          This config option also selects MM_OWNER config option, which
 573          could in turn add some fork/exit overhead.
 574
 575config CGROUP_MEM_RES_CTLR_SWAP
 576        bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)"
 577        depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL
 578        help
 579          Add swap management feature to memory resource controller. When you
 580          enable this, you can limit mem+swap usage per cgroup. In other words,
 581          when you disable this, memory resource controller has no cares to
 582          usage of swap...a process can exhaust all of the swap. This extension
 583          is useful when you want to avoid exhaustion swap but this itself
 584          adds more overheads and consumes memory for remembering information.
 585          Especially if you use 32bit system or small memory system, please
 586          be careful about enabling this. When memory resource controller
 587          is disabled by boot option, this will be automatically disabled and
 588          there will be no overhead from this. Even when you set this config=y,
 589          if boot option "noswapaccount" is set, swap will not be accounted.
 590          Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
 591          size is 4096bytes, 512k per 1Gbytes of swap.
 592
 593menuconfig CGROUP_SCHED
 594        bool "Group CPU scheduler"
 595        depends on EXPERIMENTAL && CGROUPS
 596        default n
 597        help
 598          This feature lets CPU scheduler recognize task groups and control CPU
 599          bandwidth allocation to such task groups. It uses cgroups to group
 600          tasks.
 601
 602if CGROUP_SCHED
 603config FAIR_GROUP_SCHED
 604        bool "Group scheduling for SCHED_OTHER"
 605        depends on CGROUP_SCHED
 606        default CGROUP_SCHED
 607
 608config RT_GROUP_SCHED
 609        bool "Group scheduling for SCHED_RR/FIFO"
 610        depends on EXPERIMENTAL
 611        depends on CGROUP_SCHED
 612        default n
 613        help
 614          This feature lets you explicitly allocate real CPU bandwidth
 615          to task groups. If enabled, it will also make it impossible to
 616          schedule realtime tasks for non-root users until you allocate
 617          realtime bandwidth for them.
 618          See Documentation/scheduler/sched-rt-group.txt for more information.
 619
 620endif #CGROUP_SCHED
 621
 622config BLK_CGROUP
 623        tristate "Block IO controller"
 624        depends on CGROUPS && BLOCK
 625        default n
 626        ---help---
 627        Generic block IO controller cgroup interface. This is the common
 628        cgroup interface which should be used by various IO controlling
 629        policies.
 630
 631        Currently, CFQ IO scheduler uses it to recognize task groups and
 632        control disk bandwidth allocation (proportional time slice allocation)
 633        to such task groups.
 634
 635        This option only enables generic Block IO controller infrastructure.
 636        One needs to also enable actual IO controlling logic in CFQ for it
 637        to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y).
 638
 639        See Documentation/cgroups/blkio-controller.txt for more information.
 640
 641config DEBUG_BLK_CGROUP
 642        bool "Enable Block IO controller debugging"
 643        depends on BLK_CGROUP
 644        default n
 645        ---help---
 646        Enable some debugging help. Currently it exports additional stat
 647        files in a cgroup which can be useful for debugging.
 648
 649endif # CGROUPS
 650
 651config MM_OWNER
 652        bool
 653
 654config SYSFS_DEPRECATED
 655        bool
 656
 657config SYSFS_DEPRECATED_V2
 658        bool "enable deprecated sysfs features to support old userspace tools"
 659        depends on SYSFS
 660        default n
 661        select SYSFS_DEPRECATED
 662        help
 663          This option switches the layout of sysfs to the deprecated
 664          version. Do not use it on recent distributions.
 665
 666          The current sysfs layout features a unified device tree at
 667          /sys/devices/, which is able to express a hierarchy between
 668          class devices. If the deprecated option is set to Y, the
 669          unified device tree is split into a bus device tree at
 670          /sys/devices/ and several individual class device trees at
 671          /sys/class/. The class and bus devices will be connected by
 672          "<subsystem>:<name>" and the "device" links. The "block"
 673          class devices, will not show up in /sys/class/block/. Some
 674          subsystems will suppress the creation of some devices which
 675          depend on the unified device tree.
 676
 677          This option is not a pure compatibility option that can
 678          be safely enabled on newer distributions. It will change the
 679          layout of sysfs to the non-extensible deprecated version,
 680          and disable some features, which can not be exported without
 681          confusing older userspace tools. Since 2007/2008 all major
 682          distributions do not enable this option, and ship no tools which
 683          depend on the deprecated layout or this option.
 684
 685          If you are using a new kernel on an older distribution, or use
 686          older userspace tools, you might need to say Y here. Do not say Y,
 687          if the original kernel, that came with your distribution, has
 688          this option set to N.
 689
 690config RELAY
 691        bool "Kernel->user space relay support (formerly relayfs)"
 692        help
 693          This option enables support for relay interface support in
 694          certain file systems (such as debugfs).
 695          It is designed to provide an efficient mechanism for tools and
 696          facilities to relay large amounts of data from kernel space to
 697          user space.
 698
 699          If unsure, say N.
 700
 701config NAMESPACES
 702        bool "Namespaces support" if EMBEDDED
 703        default !EMBEDDED
 704        help
 705          Provides the way to make tasks work with different objects using
 706          the same id. For example same IPC id may refer to different objects
 707          or same user id or pid may refer to different tasks when used in
 708          different namespaces.
 709
 710config UTS_NS
 711        bool "UTS namespace"
 712        depends on NAMESPACES
 713        help
 714          In this namespace tasks see different info provided with the
 715          uname() system call
 716
 717config IPC_NS
 718        bool "IPC namespace"
 719        depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
 720        help
 721          In this namespace tasks work with IPC ids which correspond to
 722          different IPC objects in different namespaces.
 723
 724config USER_NS
 725        bool "User namespace (EXPERIMENTAL)"
 726        depends on NAMESPACES && EXPERIMENTAL
 727        help
 728          This allows containers, i.e. vservers, to use user namespaces
 729          to provide different user info for different servers.
 730          If unsure, say N.
 731
 732config PID_NS
 733        bool "PID Namespaces (EXPERIMENTAL)"
 734        default n
 735        depends on NAMESPACES && EXPERIMENTAL
 736        help
 737          Support process id namespaces.  This allows having multiple
 738          processes with the same pid as long as they are in different
 739          pid namespaces.  This is a building block of containers.
 740
 741          Unless you want to work with an experimental feature
 742          say N here.
 743
 744config NET_NS
 745        bool "Network namespace"
 746        default n
 747        depends on NAMESPACES && EXPERIMENTAL && NET
 748        help
 749          Allow user space to create what appear to be multiple instances
 750          of the network stack.
 751
 752config BLK_DEV_INITRD
 753        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
 754        depends on BROKEN || !FRV
 755        help
 756          The initial RAM filesystem is a ramfs which is loaded by the
 757          boot loader (loadlin or lilo) and that is mounted as root
 758          before the normal boot procedure. It is typically used to
 759          load modules needed to mount the "real" root file system,
 760          etc. See <file:Documentation/initrd.txt> for details.
 761
 762          If RAM disk support (BLK_DEV_RAM) is also included, this
 763          also enables initial RAM disk (initrd) support and adds
 764          15 Kbytes (more on some other architectures) to the kernel size.
 765
 766          If unsure say Y.
 767
 768if BLK_DEV_INITRD
 769
 770source "usr/Kconfig"
 771
 772endif
 773
 774config CC_OPTIMIZE_FOR_SIZE
 775        bool "Optimize for size"
 776        default y
 777        help
 778          Enabling this option will pass "-Os" instead of "-O2" to gcc
 779          resulting in a smaller kernel.
 780
 781          If unsure, say Y.
 782
 783config SYSCTL
 784        bool
 785
 786config ANON_INODES
 787        bool
 788
 789menuconfig EMBEDDED
 790        bool "Configure standard kernel features (for small systems)"
 791        help
 792          This option allows certain base kernel options and settings
 793          to be disabled or tweaked. This is for specialized
 794          environments which can tolerate a "non-standard" kernel.
 795          Only use this if you really know what you are doing.
 796
 797config UID16
 798        bool "Enable 16-bit UID system calls" if EMBEDDED
 799        depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
 800        default y
 801        help
 802          This enables the legacy 16-bit UID syscall wrappers.
 803
 804config SYSCTL_SYSCALL
 805        bool "Sysctl syscall support" if EMBEDDED
 806        depends on PROC_SYSCTL
 807        default y
 808        select SYSCTL
 809        ---help---
 810          sys_sysctl uses binary paths that have been found challenging
 811          to properly maintain and use.  The interface in /proc/sys
 812          using paths with ascii names is now the primary path to this
 813          information.
 814
 815          Almost nothing using the binary sysctl interface so if you are
 816          trying to save some space it is probably safe to disable this,
 817          making your kernel marginally smaller.
 818
 819          If unsure say Y here.
 820
 821config KALLSYMS
 822         bool "Load all symbols for debugging/ksymoops" if EMBEDDED
 823         default y
 824         help
 825           Say Y here to let the kernel print out symbolic crash information and
 826           symbolic stack backtraces. This increases the size of the kernel
 827           somewhat, as all symbols have to be loaded into the kernel image.
 828
 829config KALLSYMS_ALL
 830        bool "Include all symbols in kallsyms"
 831        depends on DEBUG_KERNEL && KALLSYMS
 832        help
 833           Normally kallsyms only contains the symbols of functions, for nicer
 834           OOPS messages.  Some debuggers can use kallsyms for other
 835           symbols too: say Y here to include all symbols, if you need them 
 836           and you don't care about adding 300k to the size of your kernel.
 837
 838           Say N.
 839
 840config KALLSYMS_EXTRA_PASS
 841        bool "Do an extra kallsyms pass"
 842        depends on KALLSYMS
 843        help
 844           If kallsyms is not working correctly, the build will fail with
 845           inconsistent kallsyms data.  If that occurs, log a bug report and
 846           turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
 847           Always say N here unless you find a bug in kallsyms, which must be
 848           reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
 849           you wait for kallsyms to be fixed.
 850
 851
 852config HOTPLUG
 853        bool "Support for hot-pluggable devices" if EMBEDDED
 854        default y
 855        help
 856          This option is provided for the case where no hotplug or uevent
 857          capabilities is wanted by the kernel.  You should only consider
 858          disabling this option for embedded systems that do not use modules, a
 859          dynamic /dev tree, or dynamic device discovery.  Just say Y.
 860
 861config PRINTK
 862        default y
 863        bool "Enable support for printk" if EMBEDDED
 864        help
 865          This option enables normal printk support. Removing it
 866          eliminates most of the message strings from the kernel image
 867          and makes the kernel more or less silent. As this makes it
 868          very difficult to diagnose system problems, saying N here is
 869          strongly discouraged.
 870
 871config BUG
 872        bool "BUG() support" if EMBEDDED
 873        default y
 874        help
 875          Disabling this option eliminates support for BUG and WARN, reducing
 876          the size of your kernel image and potentially quietly ignoring
 877          numerous fatal conditions. You should only consider disabling this
 878          option for embedded systems with no facilities for reporting errors.
 879          Just say Y.
 880
 881config ELF_CORE
 882        default y
 883        bool "Enable ELF core dumps" if EMBEDDED
 884        help
 885          Enable support for generating core dumps. Disabling saves about 4k.
 886
 887config PCSPKR_PLATFORM
 888        bool "Enable PC-Speaker support" if EMBEDDED
 889        depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
 890        default y
 891        help
 892          This option allows to disable the internal PC-Speaker
 893          support, saving some memory.
 894
 895config BASE_FULL
 896        default y
 897        bool "Enable full-sized data structures for core" if EMBEDDED
 898        help
 899          Disabling this option reduces the size of miscellaneous core
 900          kernel data structures. This saves memory on small machines,
 901          but may reduce performance.
 902
 903config FUTEX
 904        bool "Enable futex support" if EMBEDDED
 905        default y
 906        select RT_MUTEXES
 907        help
 908          Disabling this option will cause the kernel to be built without
 909          support for "fast userspace mutexes".  The resulting kernel may not
 910          run glibc-based applications correctly.
 911
 912config EPOLL
 913        bool "Enable eventpoll support" if EMBEDDED
 914        default y
 915        select ANON_INODES
 916        help
 917          Disabling this option will cause the kernel to be built without
 918          support for epoll family of system calls.
 919
 920config SIGNALFD
 921        bool "Enable signalfd() system call" if EMBEDDED
 922        select ANON_INODES
 923        default y
 924        help
 925          Enable the signalfd() system call that allows to receive signals
 926          on a file descriptor.
 927
 928          If unsure, say Y.
 929
 930config TIMERFD
 931        bool "Enable timerfd() system call" if EMBEDDED
 932        select ANON_INODES
 933        default y
 934        help
 935          Enable the timerfd() system call that allows to receive timer
 936          events on a file descriptor.
 937
 938          If unsure, say Y.
 939
 940config EVENTFD
 941        bool "Enable eventfd() system call" if EMBEDDED
 942        select ANON_INODES
 943        default y
 944        help
 945          Enable the eventfd() system call that allows to receive both
 946          kernel notification (ie. KAIO) or userspace notifications.
 947
 948          If unsure, say Y.
 949
 950config SHMEM
 951        bool "Use full shmem filesystem" if EMBEDDED
 952        default y
 953        depends on MMU
 954        help
 955          The shmem is an internal filesystem used to manage shared memory.
 956          It is backed by swap and manages resource limits. It is also exported
 957          to userspace as tmpfs if TMPFS is enabled. Disabling this
 958          option replaces shmem and tmpfs with the much simpler ramfs code,
 959          which may be appropriate on small systems without swap.
 960
 961config AIO
 962        bool "Enable AIO support" if EMBEDDED
 963        default y
 964        help
 965          This option enables POSIX asynchronous I/O which may by used
 966          by some high performance threaded applications. Disabling
 967          this option saves about 7k.
 968
 969config HAVE_PERF_EVENTS
 970        bool
 971        help
 972          See tools/perf/design.txt for details.
 973
 974config PERF_USE_VMALLOC
 975        bool
 976        help
 977          See tools/perf/design.txt for details
 978
 979menu "Kernel Performance Events And Counters"
 980
 981config PERF_EVENTS
 982        bool "Kernel performance events and counters"
 983        default y if (PROFILING || PERF_COUNTERS)
 984        depends on HAVE_PERF_EVENTS
 985        select ANON_INODES
 986        help
 987          Enable kernel support for various performance events provided
 988          by software and hardware.
 989
 990          Software events are supported either built-in or via the
 991          use of generic tracepoints.
 992
 993          Most modern CPUs support performance events via performance
 994          counter registers. These registers count the number of certain
 995          types of hw events: such as instructions executed, cachemisses
 996          suffered, or branches mis-predicted - without slowing down the
 997          kernel or applications. These registers can also trigger interrupts
 998          when a threshold number of events have passed - and can thus be
 999          used to profile the code that runs on that CPU.
1000
1001          The Linux Performance Event subsystem provides an abstraction of
1002          these software and hardware event capabilities, available via a
1003          system call and used by the "perf" utility in tools/perf/. It
1004          provides per task and per CPU counters, and it provides event
1005          capabilities on top of those.
1006
1007          Say Y if unsure.
1008
1009config PERF_COUNTERS
1010        bool "Kernel performance counters (old config option)"
1011        depends on HAVE_PERF_EVENTS
1012        help
1013          This config has been obsoleted by the PERF_EVENTS
1014          config option - please see that one for details.
1015
1016          It has no effect on the kernel whether you enable
1017          it or not, it is a compatibility placeholder.
1018
1019          Say N if unsure.
1020
1021config DEBUG_PERF_USE_VMALLOC
1022        default n
1023        bool "Debug: use vmalloc to back perf mmap() buffers"
1024        depends on PERF_EVENTS && DEBUG_KERNEL
1025        select PERF_USE_VMALLOC
1026        help
1027         Use vmalloc memory to back perf mmap() buffers.
1028
1029         Mostly useful for debugging the vmalloc code on platforms
1030         that don't require it.
1031
1032         Say N if unsure.
1033
1034endmenu
1035
1036config VM_EVENT_COUNTERS
1037        default y
1038        bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
1039        help
1040          VM event counters are needed for event counts to be shown.
1041          This option allows the disabling of the VM event counters
1042          on EMBEDDED systems.  /proc/vmstat will only show page counts
1043          if VM event counters are disabled.
1044
1045config PCI_QUIRKS
1046        default y
1047        bool "Enable PCI quirk workarounds" if EMBEDDED
1048        depends on PCI
1049        help
1050          This enables workarounds for various PCI chipset
1051          bugs/quirks. Disable this only if your target machine is
1052          unaffected by PCI quirks.
1053
1054config SLUB_DEBUG
1055        default y
1056        bool "Enable SLUB debugging support" if EMBEDDED
1057        depends on SLUB && SYSFS
1058        help
1059          SLUB has extensive debug support features. Disabling these can
1060          result in significant savings in code size. This also disables
1061          SLUB sysfs support. /sys/slab will not exist and there will be
1062          no support for cache validation etc.
1063
1064config COMPAT_BRK
1065        bool "Disable heap randomization"
1066        default y
1067        help
1068          Randomizing heap placement makes heap exploits harder, but it
1069          also breaks ancient binaries (including anything libc5 based).
1070          This option changes the bootup default to heap randomization
1071          disabled, and can be overridden at runtime by setting
1072          /proc/sys/kernel/randomize_va_space to 2.
1073
1074          On non-ancient distros (post-2000 ones) N is usually a safe choice.
1075
1076choice
1077        prompt "Choose SLAB allocator"
1078        default SLUB
1079        help
1080           This option allows to select a slab allocator.
1081
1082config SLAB
1083        bool "SLAB"
1084        help
1085          The regular slab allocator that is established and known to work
1086          well in all environments. It organizes cache hot objects in
1087          per cpu and per node queues.
1088
1089config SLUB
1090        bool "SLUB (Unqueued Allocator)"
1091        help
1092           SLUB is a slab allocator that minimizes cache line usage
1093           instead of managing queues of cached objects (SLAB approach).
1094           Per cpu caching is realized using slabs of objects instead
1095           of queues of objects. SLUB can use memory efficiently
1096           and has enhanced diagnostics. SLUB is the default choice for
1097           a slab allocator.
1098
1099config SLOB
1100        depends on EMBEDDED
1101        bool "SLOB (Simple Allocator)"
1102        help
1103           SLOB replaces the stock allocator with a drastically simpler
1104           allocator. SLOB is generally more space efficient but
1105           does not perform as well on large systems.
1106
1107endchoice
1108
1109config MMAP_ALLOW_UNINITIALIZED
1110        bool "Allow mmapped anonymous memory to be uninitialized"
1111        depends on EMBEDDED && !MMU
1112        default n
1113        help
1114          Normally, and according to the Linux spec, anonymous memory obtained
1115          from mmap() has it's contents cleared before it is passed to
1116          userspace.  Enabling this config option allows you to request that
1117          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1118          providing a huge performance boost.  If this option is not enabled,
1119          then the flag will be ignored.
1120
1121          This is taken advantage of by uClibc's malloc(), and also by
1122          ELF-FDPIC binfmt's brk and stack allocator.
1123
1124          Because of the obvious security issues, this option should only be
1125          enabled on embedded devices where you control what is run in
1126          userspace.  Since that isn't generally a problem on no-MMU systems,
1127          it is normally safe to say Y here.
1128
1129          See Documentation/nommu-mmap.txt for more information.
1130
1131config PROFILING
1132        bool "Profiling support"
1133        help
1134          Say Y here to enable the extended profiling support mechanisms used
1135          by profilers such as OProfile.
1136
1137#
1138# Place an empty function call at each tracepoint site. Can be
1139# dynamically changed for a probe function.
1140#
1141config TRACEPOINTS
1142        bool
1143
1144source "arch/Kconfig"
1145
1146config SLOW_WORK
1147        default n
1148        bool
1149        help
1150          The slow work thread pool provides a number of dynamically allocated
1151          threads that can be used by the kernel to perform operations that
1152          take a relatively long time.
1153
1154          An example of this would be CacheFiles doing a path lookup followed
1155          by a series of mkdirs and a create call, all of which have to touch
1156          disk.
1157
1158          See Documentation/slow-work.txt.
1159
1160config SLOW_WORK_DEBUG
1161        bool "Slow work debugging through debugfs"
1162        default n
1163        depends on SLOW_WORK && DEBUG_FS
1164        help
1165          Display the contents of the slow work run queue through debugfs,
1166          including items currently executing.
1167
1168          See Documentation/slow-work.txt.
1169
1170endmenu         # General setup
1171
1172config HAVE_GENERIC_DMA_COHERENT
1173        bool
1174        default n
1175
1176config SLABINFO
1177        bool
1178        depends on PROC_FS
1179        depends on SLAB || SLUB_DEBUG
1180        default y
1181
1182config RT_MUTEXES
1183        boolean
1184
1185config BASE_SMALL
1186        int
1187        default 0 if BASE_FULL
1188        default 1 if !BASE_FULL
1189
1190menuconfig MODULES
1191        bool "Enable loadable module support"
1192        help
1193          Kernel modules are small pieces of compiled code which can
1194          be inserted in the running kernel, rather than being
1195          permanently built into the kernel.  You use the "modprobe"
1196          tool to add (and sometimes remove) them.  If you say Y here,
1197          many parts of the kernel can be built as modules (by
1198          answering M instead of Y where indicated): this is most
1199          useful for infrequently used options which are not required
1200          for booting.  For more information, see the man pages for
1201          modprobe, lsmod, modinfo, insmod and rmmod.
1202
1203          If you say Y here, you will need to run "make
1204          modules_install" to put the modules under /lib/modules/
1205          where modprobe can find them (you may need to be root to do
1206          this).
1207
1208          If unsure, say Y.
1209
1210if MODULES
1211
1212config MODULE_FORCE_LOAD
1213        bool "Forced module loading"
1214        default n
1215        help
1216          Allow loading of modules without version information (ie. modprobe
1217          --force).  Forced module loading sets the 'F' (forced) taint flag and
1218          is usually a really bad idea.
1219
1220config MODULE_UNLOAD
1221        bool "Module unloading"
1222        help
1223          Without this option you will not be able to unload any
1224          modules (note that some modules may not be unloadable
1225          anyway), which makes your kernel smaller, faster
1226          and simpler.  If unsure, say Y.
1227
1228config MODULE_FORCE_UNLOAD
1229        bool "Forced module unloading"
1230        depends on MODULE_UNLOAD && EXPERIMENTAL
1231        help
1232          This option allows you to force a module to unload, even if the
1233          kernel believes it is unsafe: the kernel will remove the module
1234          without waiting for anyone to stop using it (using the -f option to
1235          rmmod).  This is mainly for kernel developers and desperate users.
1236          If unsure, say N.
1237
1238config MODVERSIONS
1239        bool "Module versioning support"
1240        help
1241          Usually, you have to use modules compiled with your kernel.
1242          Saying Y here makes it sometimes possible to use modules
1243          compiled for different kernels, by adding enough information
1244          to the modules to (hopefully) spot any changes which would
1245          make them incompatible with the kernel you are running.  If
1246          unsure, say N.
1247
1248config MODULE_SRCVERSION_ALL
1249        bool "Source checksum for all modules"
1250        help
1251          Modules which contain a MODULE_VERSION get an extra "srcversion"
1252          field inserted into their modinfo section, which contains a
1253          sum of the source files which made it.  This helps maintainers
1254          see exactly which source was used to build a module (since
1255          others sometimes change the module source without updating
1256          the version).  With this option, such a "srcversion" field
1257          will be created for all modules.  If unsure, say N.
1258
1259endif # MODULES
1260
1261config INIT_ALL_POSSIBLE
1262        bool
1263        help
1264          Back when each arch used to define their own cpu_online_map and
1265          cpu_possible_map, some of them chose to initialize cpu_possible_map
1266          with all 1s, and others with all 0s.  When they were centralised,
1267          it was better to provide this option than to break all the archs
1268          and have several arch maintainers pursuing me down dark alleys.
1269
1270config STOP_MACHINE
1271        bool
1272        default y
1273        depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1274        help
1275          Need stop_machine() primitive.
1276
1277source "block/Kconfig"
1278
1279config PREEMPT_NOTIFIERS
1280        bool
1281
1282config PADATA
1283        depends on SMP
1284        bool
1285
1286source "kernel/Kconfig.locks"
1287
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.