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.
 324
 325config AUDIT_WATCH
 326        def_bool y
 327        depends on AUDITSYSCALL
 328        select FSNOTIFY
 329
 330config AUDIT_TREE
 331        def_bool y
 332        depends on AUDITSYSCALL
 333        select FSNOTIFY
 334
 335menu "RCU Subsystem"
 336
 337choice
 338        prompt "RCU Implementation"
 339        default TREE_RCU
 340
 341config TREE_RCU
 342        bool "Tree-based hierarchical RCU"
 343        help
 344          This option selects the RCU implementation that is
 345          designed for very large SMP system with hundreds or
 346          thousands of CPUs.  It also scales down nicely to
 347          smaller systems.
 348
 349config TREE_PREEMPT_RCU
 350        bool "Preemptable tree-based hierarchical RCU"
 351        depends on PREEMPT
 352        help
 353          This option selects the RCU implementation that is
 354          designed for very large SMP systems with hundreds or
 355          thousands of CPUs, but for which real-time response
 356          is also required.  It also scales down nicely to
 357          smaller systems.
 358
 359config TINY_RCU
 360        bool "UP-only small-memory-footprint RCU"
 361        depends on !SMP
 362        help
 363          This option selects the RCU implementation that is
 364          designed for UP systems from which real-time response
 365          is not required.  This option greatly reduces the
 366          memory footprint of RCU.
 367
 368endchoice
 369
 370config RCU_TRACE
 371        bool "Enable tracing for RCU"
 372        depends on TREE_RCU || TREE_PREEMPT_RCU
 373        help
 374          This option provides tracing in RCU which presents stats
 375          in debugfs for debugging RCU implementation.
 376
 377          Say Y here if you want to enable RCU tracing
 378          Say N if you are unsure.
 379
 380config RCU_FANOUT
 381        int "Tree-based hierarchical RCU fanout value"
 382        range 2 64 if 64BIT
 383        range 2 32 if !64BIT
 384        depends on TREE_RCU || TREE_PREEMPT_RCU
 385        default 64 if 64BIT
 386        default 32 if !64BIT
 387        help
 388          This option controls the fanout of hierarchical implementations
 389          of RCU, allowing RCU to work efficiently on machines with
 390          large numbers of CPUs.  This value must be at least the cube
 391          root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit
 392          systems and up to 262,144 for 64-bit systems.
 393
 394          Select a specific number if testing RCU itself.
 395          Take the default if unsure.
 396
 397config RCU_FANOUT_EXACT
 398        bool "Disable tree-based hierarchical RCU auto-balancing"
 399        depends on TREE_RCU || TREE_PREEMPT_RCU
 400        default n
 401        help
 402          This option forces use of the exact RCU_FANOUT value specified,
 403          regardless of imbalances in the hierarchy.  This is useful for
 404          testing RCU itself, and might one day be useful on systems with
 405          strong NUMA behavior.
 406
 407          Without RCU_FANOUT_EXACT, the code will balance the hierarchy.
 408
 409          Say N if unsure.
 410
 411config RCU_FAST_NO_HZ
 412        bool "Accelerate last non-dyntick-idle CPU's grace periods"
 413        depends on TREE_RCU && NO_HZ && SMP
 414        default n
 415        help
 416          This option causes RCU to attempt to accelerate grace periods
 417          in order to allow the final CPU to enter dynticks-idle state
 418          more quickly.  On the other hand, this option increases the
 419          overhead of the dynticks-idle checking, particularly on systems
 420          with large numbers of CPUs.
 421
 422          Say Y if energy efficiency is critically important, particularly
 423                if you have relatively few CPUs.
 424
 425          Say N if you are unsure.
 426
 427config TREE_RCU_TRACE
 428        def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU )
 429        select DEBUG_FS
 430        help
 431          This option provides tracing for the TREE_RCU and
 432          TREE_PREEMPT_RCU implementations, permitting Makefile to
 433          trivially select kernel/rcutree_trace.c.
 434
 435endmenu # "RCU Subsystem"
 436
 437config IKCONFIG
 438        tristate "Kernel .config support"
 439        ---help---
 440          This option enables the complete Linux kernel ".config" file
 441          contents to be saved in the kernel. It provides documentation
 442          of which kernel options are used in a running kernel or in an
 443          on-disk kernel.  This information can be extracted from the kernel
 444          image file with the script scripts/extract-ikconfig and used as
 445          input to rebuild the current kernel or to build another kernel.
 446          It can also be extracted from a running kernel by reading
 447          /proc/config.gz if enabled (below).
 448
 449config IKCONFIG_PROC
 450        bool "Enable access to .config through /proc/config.gz"
 451        depends on IKCONFIG && PROC_FS
 452        ---help---
 453          This option enables access to the kernel configuration file
 454          through /proc/config.gz.
 455
 456config LOG_BUF_SHIFT
 457        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
 458        range 12 21
 459        default 17
 460        help
 461          Select kernel log buffer size as a power of 2.
 462          Examples:
 463                     17 => 128 KB
 464                     16 => 64 KB
 465                     15 => 32 KB
 466                     14 => 16 KB
 467                     13 =>  8 KB
 468                     12 =>  4 KB
 469
 470#
 471# Architectures with an unreliable sched_clock() should select this:
 472#
 473config HAVE_UNSTABLE_SCHED_CLOCK
 474        bool
 475
 476menuconfig CGROUPS
 477        boolean "Control Group support"
 478        depends on EVENTFD
 479        help
 480          This option adds support for grouping sets of processes together, for
 481          use with process control subsystems such as Cpusets, CFS, memory
 482          controls or device isolation.
 483          See
 484                - Documentation/scheduler/sched-design-CFS.txt  (CFS)
 485                - Documentation/cgroups/ (features for grouping, isolation
 486                                          and resource control)
 487
 488          Say N if unsure.
 489
 490if CGROUPS
 491
 492config CGROUP_DEBUG
 493        bool "Example debug cgroup subsystem"
 494        depends on CGROUPS
 495        default n
 496        help
 497          This option enables a simple cgroup subsystem that
 498          exports useful debugging information about the cgroups
 499          framework.
 500
 501          Say N if unsure.
 502
 503config CGROUP_NS
 504        bool "Namespace cgroup subsystem"
 505        depends on CGROUPS
 506        help
 507          Provides a simple namespace cgroup subsystem to
 508          provide hierarchical naming of sets of namespaces,
 509          for instance virtual servers and checkpoint/restart
 510          jobs.
 511
 512config CGROUP_FREEZER
 513        bool "Freezer cgroup subsystem"
 514        depends on CGROUPS
 515        help
 516          Provides a way to freeze and unfreeze all tasks in a
 517          cgroup.
 518
 519config CGROUP_DEVICE
 520        bool "Device controller for cgroups"
 521        depends on CGROUPS && EXPERIMENTAL
 522        help
 523          Provides a cgroup implementing whitelists for devices which
 524          a process in the cgroup can mknod or open.
 525
 526config CPUSETS
 527        bool "Cpuset support"
 528        depends on CGROUPS
 529        help
 530          This option will let you create and manage CPUSETs which
 531          allow dynamically partitioning a system into sets of CPUs and
 532          Memory Nodes and assigning tasks to run only within those sets.
 533          This is primarily useful on large SMP or NUMA systems.
 534
 535          Say N if unsure.
 536
 537config PROC_PID_CPUSET
 538        bool "Include legacy /proc/<pid>/cpuset file"
 539        depends on CPUSETS
 540        default y
 541
 542config CGROUP_CPUACCT
 543        bool "Simple CPU accounting cgroup subsystem"
 544        depends on CGROUPS
 545        help
 546          Provides a simple Resource Controller for monitoring the
 547          total CPU consumed by the tasks in a cgroup.
 548
 549config RESOURCE_COUNTERS
 550        bool "Resource counters"
 551        help
 552          This option enables controller independent resource accounting
 553          infrastructure that works with cgroups.
 554        depends on CGROUPS
 555
 556config CGROUP_MEM_RES_CTLR
 557        bool "Memory Resource Controller for Control Groups"
 558        depends on CGROUPS && RESOURCE_COUNTERS
 559        select MM_OWNER
 560        help
 561          Provides a memory resource controller that manages both anonymous
 562          memory and page cache. (See Documentation/cgroups/memory.txt)
 563
 564          Note that setting this option increases fixed memory overhead
 565          associated with each page of memory in the system. By this,
 566          20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
 567          usage tracking struct at boot. Total amount of this is printed out
 568          at boot.
 569
 570          Only enable when you're ok with these trade offs and really
 571          sure you need the memory resource controller. Even when you enable
 572          this, you can set "cgroup_disable=memory" at your boot option to
 573          disable memory resource controller and you can avoid overheads.
 574          (and lose benefits of memory resource controller)
 575
 576          This config option also selects MM_OWNER config option, which
 577          could in turn add some fork/exit overhead.
 578
 579config CGROUP_MEM_RES_CTLR_SWAP
 580        bool "Memory Resource Controller Swap Extension"
 581        depends on CGROUP_MEM_RES_CTLR && SWAP
 582        help
 583          Add swap management feature to memory resource controller. When you
 584          enable this, you can limit mem+swap usage per cgroup. In other words,
 585          when you disable this, memory resource controller has no cares to
 586          usage of swap...a process can exhaust all of the swap. This extension
 587          is useful when you want to avoid exhaustion swap but this itself
 588          adds more overheads and consumes memory for remembering information.
 589          Especially if you use 32bit system or small memory system, please
 590          be careful about enabling this. When memory resource controller
 591          is disabled by boot option, this will be automatically disabled and
 592          there will be no overhead from this. Even when you set this config=y,
 593          if boot option "noswapaccount" is set, swap will not be accounted.
 594          Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
 595          size is 4096bytes, 512k per 1Gbytes of swap.
 596
 597menuconfig CGROUP_SCHED
 598        bool "Group CPU scheduler"
 599        depends on EXPERIMENTAL && CGROUPS
 600        default n
 601        help
 602          This feature lets CPU scheduler recognize task groups and control CPU
 603          bandwidth allocation to such task groups. It uses cgroups to group
 604          tasks.
 605
 606if CGROUP_SCHED
 607config FAIR_GROUP_SCHED
 608        bool "Group scheduling for SCHED_OTHER"
 609        depends on CGROUP_SCHED
 610        default CGROUP_SCHED
 611
 612config RT_GROUP_SCHED
 613        bool "Group scheduling for SCHED_RR/FIFO"
 614        depends on EXPERIMENTAL
 615        depends on CGROUP_SCHED
 616        default n
 617        help
 618          This feature lets you explicitly allocate real CPU bandwidth
 619          to task groups. If enabled, it will also make it impossible to
 620          schedule realtime tasks for non-root users until you allocate
 621          realtime bandwidth for them.
 622          See Documentation/scheduler/sched-rt-group.txt for more information.
 623
 624endif #CGROUP_SCHED
 625
 626config BLK_CGROUP
 627        tristate "Block IO controller"
 628        depends on CGROUPS && BLOCK
 629        default n
 630        ---help---
 631        Generic block IO controller cgroup interface. This is the common
 632        cgroup interface which should be used by various IO controlling
 633        policies.
 634
 635        Currently, CFQ IO scheduler uses it to recognize task groups and
 636        control disk bandwidth allocation (proportional time slice allocation)
 637        to such task groups.
 638
 639        This option only enables generic Block IO controller infrastructure.
 640        One needs to also enable actual IO controlling logic in CFQ for it
 641        to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y).
 642
 643        See Documentation/cgroups/blkio-controller.txt for more information.
 644
 645config DEBUG_BLK_CGROUP
 646        bool "Enable Block IO controller debugging"
 647        depends on BLK_CGROUP
 648        default n
 649        ---help---
 650        Enable some debugging help. Currently it exports additional stat
 651        files in a cgroup which can be useful for debugging.
 652
 653endif # CGROUPS
 654
 655config MM_OWNER
 656        bool
 657
 658config SYSFS_DEPRECATED
 659        bool
 660
 661config SYSFS_DEPRECATED_V2
 662        bool "enable deprecated sysfs features to support old userspace tools"
 663        depends on SYSFS
 664        default n
 665        select SYSFS_DEPRECATED
 666        help
 667          This option switches the layout of sysfs to the deprecated
 668          version. Do not use it on recent distributions.
 669
 670          The current sysfs layout features a unified device tree at
 671          /sys/devices/, which is able to express a hierarchy between
 672          class devices. If the deprecated option is set to Y, the
 673          unified device tree is split into a bus device tree at
 674          /sys/devices/ and several individual class device trees at
 675          /sys/class/. The class and bus devices will be connected by
 676          "<subsystem>:<name>" and the "device" links. The "block"
 677          class devices, will not show up in /sys/class/block/. Some
 678          subsystems will suppress the creation of some devices which
 679          depend on the unified device tree.
 680
 681          This option is not a pure compatibility option that can
 682          be safely enabled on newer distributions. It will change the
 683          layout of sysfs to the non-extensible deprecated version,
 684          and disable some features, which can not be exported without
 685          confusing older userspace tools. Since 2007/2008 all major
 686          distributions do not enable this option, and ship no tools which
 687          depend on the deprecated layout or this option.
 688
 689          If you are using a new kernel on an older distribution, or use
 690          older userspace tools, you might need to say Y here. Do not say Y,
 691          if the original kernel, that came with your distribution, has
 692          this option set to N.
 693
 694config RELAY
 695        bool "Kernel->user space relay support (formerly relayfs)"
 696        help
 697          This option enables support for relay interface support in
 698          certain file systems (such as debugfs).
 699          It is designed to provide an efficient mechanism for tools and
 700          facilities to relay large amounts of data from kernel space to
 701          user space.
 702
 703          If unsure, say N.
 704
 705config NAMESPACES
 706        bool "Namespaces support" if EMBEDDED
 707        default !EMBEDDED
 708        help
 709          Provides the way to make tasks work with different objects using
 710          the same id. For example same IPC id may refer to different objects
 711          or same user id or pid may refer to different tasks when used in
 712          different namespaces.
 713
 714config UTS_NS
 715        bool "UTS namespace"
 716        depends on NAMESPACES
 717        help
 718          In this namespace tasks see different info provided with the
 719          uname() system call
 720
 721config IPC_NS
 722        bool "IPC namespace"
 723        depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE)
 724        help
 725          In this namespace tasks work with IPC ids which correspond to
 726          different IPC objects in different namespaces.
 727
 728config USER_NS
 729        bool "User namespace (EXPERIMENTAL)"
 730        depends on NAMESPACES && EXPERIMENTAL
 731        help
 732          This allows containers, i.e. vservers, to use user namespaces
 733          to provide different user info for different servers.
 734          If unsure, say N.
 735
 736config PID_NS
 737        bool "PID Namespaces (EXPERIMENTAL)"
 738        default n
 739        depends on NAMESPACES && EXPERIMENTAL
 740        help
 741          Support process id namespaces.  This allows having multiple
 742          processes with the same pid as long as they are in different
 743          pid namespaces.  This is a building block of containers.
 744
 745          Unless you want to work with an experimental feature
 746          say N here.
 747
 748config NET_NS
 749        bool "Network namespace"
 750        default n
 751        depends on NAMESPACES && EXPERIMENTAL && NET
 752        help
 753          Allow user space to create what appear to be multiple instances
 754          of the network stack.
 755
 756config BLK_DEV_INITRD
 757        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
 758        depends on BROKEN || !FRV
 759        help
 760          The initial RAM filesystem is a ramfs which is loaded by the
 761          boot loader (loadlin or lilo) and that is mounted as root
 762          before the normal boot procedure. It is typically used to
 763          load modules needed to mount the "real" root file system,
 764          etc. See <file:Documentation/initrd.txt> for details.
 765
 766          If RAM disk support (BLK_DEV_RAM) is also included, this
 767          also enables initial RAM disk (initrd) support and adds
 768          15 Kbytes (more on some other architectures) to the kernel size.
 769
 770          If unsure say Y.
 771
 772if BLK_DEV_INITRD
 773
 774source "usr/Kconfig"
 775
 776endif
 777
 778config CC_OPTIMIZE_FOR_SIZE
 779        bool "Optimize for size"
 780        default y
 781        help
 782          Enabling this option will pass "-Os" instead of "-O2" to gcc
 783          resulting in a smaller kernel.
 784
 785          If unsure, say Y.
 786
 787config SYSCTL
 788        bool
 789
 790config ANON_INODES
 791        bool
 792
 793menuconfig EMBEDDED
 794        bool "Configure standard kernel features (for small systems)"
 795        help
 796          This option allows certain base kernel options and settings
 797          to be disabled or tweaked. This is for specialized
 798          environments which can tolerate a "non-standard" kernel.
 799          Only use this if you really know what you are doing.
 800
 801config UID16
 802        bool "Enable 16-bit UID system calls" if EMBEDDED
 803        depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION)
 804        default y
 805        help
 806          This enables the legacy 16-bit UID syscall wrappers.
 807
 808config SYSCTL_SYSCALL
 809        bool "Sysctl syscall support" if EMBEDDED
 810        depends on PROC_SYSCTL
 811        default y
 812        select SYSCTL
 813        ---help---
 814          sys_sysctl uses binary paths that have been found challenging
 815          to properly maintain and use.  The interface in /proc/sys
 816          using paths with ascii names is now the primary path to this
 817          information.
 818
 819          Almost nothing using the binary sysctl interface so if you are
 820          trying to save some space it is probably safe to disable this,
 821          making your kernel marginally smaller.
 822
 823          If unsure say Y here.
 824
 825config KALLSYMS
 826         bool "Load all symbols for debugging/ksymoops" if EMBEDDED
 827         default y
 828         help
 829           Say Y here to let the kernel print out symbolic crash information and
 830           symbolic stack backtraces. This increases the size of the kernel
 831           somewhat, as all symbols have to be loaded into the kernel image.
 832
 833config KALLSYMS_ALL
 834        bool "Include all symbols in kallsyms"
 835        depends on DEBUG_KERNEL && KALLSYMS
 836        help
 837           Normally kallsyms only contains the symbols of functions, for nicer
 838           OOPS messages.  Some debuggers can use kallsyms for other
 839           symbols too: say Y here to include all symbols, if you need them 
 840           and you don't care about adding 300k to the size of your kernel.
 841
 842           Say N.
 843
 844config KALLSYMS_EXTRA_PASS
 845        bool "Do an extra kallsyms pass"
 846        depends on KALLSYMS
 847        help
 848           If kallsyms is not working correctly, the build will fail with
 849           inconsistent kallsyms data.  If that occurs, log a bug report and
 850           turn on KALLSYMS_EXTRA_PASS which should result in a stable build.
 851           Always say N here unless you find a bug in kallsyms, which must be
 852           reported.  KALLSYMS_EXTRA_PASS is only a temporary workaround while
 853           you wait for kallsyms to be fixed.
 854
 855
 856config HOTPLUG
 857        bool "Support for hot-pluggable devices" if EMBEDDED
 858        default y
 859        help
 860          This option is provided for the case where no hotplug or uevent
 861          capabilities is wanted by the kernel.  You should only consider
 862          disabling this option for embedded systems that do not use modules, a
 863          dynamic /dev tree, or dynamic device discovery.  Just say Y.
 864
 865config PRINTK
 866        default y
 867        bool "Enable support for printk" if EMBEDDED
 868        help
 869          This option enables normal printk support. Removing it
 870          eliminates most of the message strings from the kernel image
 871          and makes the kernel more or less silent. As this makes it
 872          very difficult to diagnose system problems, saying N here is
 873          strongly discouraged.
 874
 875config BUG
 876        bool "BUG() support" if EMBEDDED
 877        default y
 878        help
 879          Disabling this option eliminates support for BUG and WARN, reducing
 880          the size of your kernel image and potentially quietly ignoring
 881          numerous fatal conditions. You should only consider disabling this
 882          option for embedded systems with no facilities for reporting errors.
 883          Just say Y.
 884
 885config ELF_CORE
 886        default y
 887        bool "Enable ELF core dumps" if EMBEDDED
 888        help
 889          Enable support for generating core dumps. Disabling saves about 4k.
 890
 891config PCSPKR_PLATFORM
 892        bool "Enable PC-Speaker support" if EMBEDDED
 893        depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES
 894        default y
 895        help
 896          This option allows to disable the internal PC-Speaker
 897          support, saving some memory.
 898
 899config BASE_FULL
 900        default y
 901        bool "Enable full-sized data structures for core" if EMBEDDED
 902        help
 903          Disabling this option reduces the size of miscellaneous core
 904          kernel data structures. This saves memory on small machines,
 905          but may reduce performance.
 906
 907config FUTEX
 908        bool "Enable futex support" if EMBEDDED
 909        default y
 910        select RT_MUTEXES
 911        help
 912          Disabling this option will cause the kernel to be built without
 913          support for "fast userspace mutexes".  The resulting kernel may not
 914          run glibc-based applications correctly.
 915
 916config EPOLL
 917        bool "Enable eventpoll support" if EMBEDDED
 918        default y
 919        select ANON_INODES
 920        help
 921          Disabling this option will cause the kernel to be built without
 922          support for epoll family of system calls.
 923
 924config SIGNALFD
 925        bool "Enable signalfd() system call" if EMBEDDED
 926        select ANON_INODES
 927        default y
 928        help
 929          Enable the signalfd() system call that allows to receive signals
 930          on a file descriptor.
 931
 932          If unsure, say Y.
 933
 934config TIMERFD
 935        bool "Enable timerfd() system call" if EMBEDDED
 936        select ANON_INODES
 937        default y
 938        help
 939          Enable the timerfd() system call that allows to receive timer
 940          events on a file descriptor.
 941
 942          If unsure, say Y.
 943
 944config EVENTFD
 945        bool "Enable eventfd() system call" if EMBEDDED
 946        select ANON_INODES
 947        default y
 948        help
 949          Enable the eventfd() system call that allows to receive both
 950          kernel notification (ie. KAIO) or userspace notifications.
 951
 952          If unsure, say Y.
 953
 954config SHMEM
 955        bool "Use full shmem filesystem" if EMBEDDED
 956        default y
 957        depends on MMU
 958        help
 959          The shmem is an internal filesystem used to manage shared memory.
 960          It is backed by swap and manages resource limits. It is also exported
 961          to userspace as tmpfs if TMPFS is enabled. Disabling this
 962          option replaces shmem and tmpfs with the much simpler ramfs code,
 963          which may be appropriate on small systems without swap.
 964
 965config AIO
 966        bool "Enable AIO support" if EMBEDDED
 967        default y
 968        help
 969          This option enables POSIX asynchronous I/O which may by used
 970          by some high performance threaded applications. Disabling
 971          this option saves about 7k.
 972
 973config HAVE_PERF_EVENTS
 974        bool
 975        help
 976          See tools/perf/design.txt for details.
 977
 978config PERF_USE_VMALLOC
 979        bool
 980        help
 981          See tools/perf/design.txt for details
 982
 983menu "Kernel Performance Events And Counters"
 984
 985config PERF_EVENTS
 986        bool "Kernel performance events and counters"
 987        default y if (PROFILING || PERF_COUNTERS)
 988        depends on HAVE_PERF_EVENTS
 989        select ANON_INODES
 990        help
 991          Enable kernel support for various performance events provided
 992          by software and hardware.
 993
 994          Software events are supported either built-in or via the
 995          use of generic tracepoints.
 996
 997          Most modern CPUs support performance events via performance
 998          counter registers. These registers count the number of certain
 999          types of hw events: such as instructions executed, cachemisses
1000          suffered, or branches mis-predicted - without slowing down the
1001          kernel or applications. These registers can also trigger interrupts
1002          when a threshold number of events have passed - and can thus be
1003          used to profile the code that runs on that CPU.
1004
1005          The Linux Performance Event subsystem provides an abstraction of
1006          these software and hardware event capabilities, available via a
1007          system call and used by the "perf" utility in tools/perf/. It
1008          provides per task and per CPU counters, and it provides event
1009          capabilities on top of those.
1010
1011          Say Y if unsure.
1012
1013config PERF_COUNTERS
1014        bool "Kernel performance counters (old config option)"
1015        depends on HAVE_PERF_EVENTS
1016        help
1017          This config has been obsoleted by the PERF_EVENTS
1018          config option - please see that one for details.
1019
1020          It has no effect on the kernel whether you enable
1021          it or not, it is a compatibility placeholder.
1022
1023          Say N if unsure.
1024
1025config DEBUG_PERF_USE_VMALLOC
1026        default n
1027        bool "Debug: use vmalloc to back perf mmap() buffers"
1028        depends on PERF_EVENTS && DEBUG_KERNEL
1029        select PERF_USE_VMALLOC
1030        help
1031         Use vmalloc memory to back perf mmap() buffers.
1032
1033         Mostly useful for debugging the vmalloc code on platforms
1034         that don't require it.
1035
1036         Say N if unsure.
1037
1038endmenu
1039
1040config VM_EVENT_COUNTERS
1041        default y
1042        bool "Enable VM event counters for /proc/vmstat" if EMBEDDED
1043        help
1044          VM event counters are needed for event counts to be shown.
1045          This option allows the disabling of the VM event counters
1046          on EMBEDDED systems.  /proc/vmstat will only show page counts
1047          if VM event counters are disabled.
1048
1049config PCI_QUIRKS
1050        default y
1051        bool "Enable PCI quirk workarounds" if EMBEDDED
1052        depends on PCI
1053        help
1054          This enables workarounds for various PCI chipset
1055          bugs/quirks. Disable this only if your target machine is
1056          unaffected by PCI quirks.
1057
1058config SLUB_DEBUG
1059        default y
1060        bool "Enable SLUB debugging support" if EMBEDDED
1061        depends on SLUB && SYSFS
1062        help
1063          SLUB has extensive debug support features. Disabling these can
1064          result in significant savings in code size. This also disables
1065          SLUB sysfs support. /sys/slab will not exist and there will be
1066          no support for cache validation etc.
1067
1068config COMPAT_BRK
1069        bool "Disable heap randomization"
1070        default y
1071        help
1072          Randomizing heap placement makes heap exploits harder, but it
1073          also breaks ancient binaries (including anything libc5 based).
1074          This option changes the bootup default to heap randomization
1075          disabled, and can be overridden at runtime by setting
1076          /proc/sys/kernel/randomize_va_space to 2.
1077
1078          On non-ancient distros (post-2000 ones) N is usually a safe choice.
1079
1080choice
1081        prompt "Choose SLAB allocator"
1082        default SLUB
1083        help
1084           This option allows to select a slab allocator.
1085
1086config SLAB
1087        bool "SLAB"
1088        help
1089          The regular slab allocator that is established and known to work
1090          well in all environments. It organizes cache hot objects in
1091          per cpu and per node queues.
1092
1093config SLUB
1094        bool "SLUB (Unqueued Allocator)"
1095        help
1096           SLUB is a slab allocator that minimizes cache line usage
1097           instead of managing queues of cached objects (SLAB approach).
1098           Per cpu caching is realized using slabs of objects instead
1099           of queues of objects. SLUB can use memory efficiently
1100           and has enhanced diagnostics. SLUB is the default choice for
1101           a slab allocator.
1102
1103config SLOB
1104        depends on EMBEDDED
1105        bool "SLOB (Simple Allocator)"
1106        help
1107           SLOB replaces the stock allocator with a drastically simpler
1108           allocator. SLOB is generally more space efficient but
1109           does not perform as well on large systems.
1110
1111endchoice
1112
1113config MMAP_ALLOW_UNINITIALIZED
1114        bool "Allow mmapped anonymous memory to be uninitialized"
1115        depends on EMBEDDED && !MMU
1116        default n
1117        help
1118          Normally, and according to the Linux spec, anonymous memory obtained
1119          from mmap() has it's contents cleared before it is passed to
1120          userspace.  Enabling this config option allows you to request that
1121          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1122          providing a huge performance boost.  If this option is not enabled,
1123          then the flag will be ignored.
1124
1125          This is taken advantage of by uClibc's malloc(), and also by
1126          ELF-FDPIC binfmt's brk and stack allocator.
1127
1128          Because of the obvious security issues, this option should only be
1129          enabled on embedded devices where you control what is run in
1130          userspace.  Since that isn't generally a problem on no-MMU systems,
1131          it is normally safe to say Y here.
1132
1133          See Documentation/nommu-mmap.txt for more information.
1134
1135config PROFILING
1136        bool "Profiling support"
1137        help
1138          Say Y here to enable the extended profiling support mechanisms used
1139          by profilers such as OProfile.
1140
1141#
1142# Place an empty function call at each tracepoint site. Can be
1143# dynamically changed for a probe function.
1144#
1145config TRACEPOINTS
1146        bool
1147
1148source "arch/Kconfig"
1149
1150endmenu         # General setup
1151
1152config HAVE_GENERIC_DMA_COHERENT
1153        bool
1154        default n
1155
1156config SLABINFO
1157        bool
1158        depends on PROC_FS
1159        depends on SLAB || SLUB_DEBUG
1160        default y
1161
1162config RT_MUTEXES
1163        boolean
1164
1165config BASE_SMALL
1166        int
1167        default 0 if BASE_FULL
1168        default 1 if !BASE_FULL
1169
1170menuconfig MODULES
1171        bool "Enable loadable module support"
1172        help
1173          Kernel modules are small pieces of compiled code which can
1174          be inserted in the running kernel, rather than being
1175          permanently built into the kernel.  You use the "modprobe"
1176          tool to add (and sometimes remove) them.  If you say Y here,
1177          many parts of the kernel can be built as modules (by
1178          answering M instead of Y where indicated): this is most
1179          useful for infrequently used options which are not required
1180          for booting.  For more information, see the man pages for
1181          modprobe, lsmod, modinfo, insmod and rmmod.
1182
1183          If you say Y here, you will need to run "make
1184          modules_install" to put the modules under /lib/modules/
1185          where modprobe can find them (you may need to be root to do
1186          this).
1187
1188          If unsure, say Y.
1189
1190if MODULES
1191
1192config MODULE_FORCE_LOAD
1193        bool "Forced module loading"
1194        default n
1195        help
1196          Allow loading of modules without version information (ie. modprobe
1197          --force).  Forced module loading sets the 'F' (forced) taint flag and
1198          is usually a really bad idea.
1199
1200config MODULE_UNLOAD
1201        bool "Module unloading"
1202        help
1203          Without this option you will not be able to unload any
1204          modules (note that some modules may not be unloadable
1205          anyway), which makes your kernel smaller, faster
1206          and simpler.  If unsure, say Y.
1207
1208config MODULE_FORCE_UNLOAD
1209        bool "Forced module unloading"
1210        depends on MODULE_UNLOAD && EXPERIMENTAL
1211        help
1212          This option allows you to force a module to unload, even if the
1213          kernel believes it is unsafe: the kernel will remove the module
1214          without waiting for anyone to stop using it (using the -f option to
1215          rmmod).  This is mainly for kernel developers and desperate users.
1216          If unsure, say N.
1217
1218config MODVERSIONS
1219        bool "Module versioning support"
1220        help
1221          Usually, you have to use modules compiled with your kernel.
1222          Saying Y here makes it sometimes possible to use modules
1223          compiled for different kernels, by adding enough information
1224          to the modules to (hopefully) spot any changes which would
1225          make them incompatible with the kernel you are running.  If
1226          unsure, say N.
1227
1228config MODULE_SRCVERSION_ALL
1229        bool "Source checksum for all modules"
1230        help
1231          Modules which contain a MODULE_VERSION get an extra "srcversion"
1232          field inserted into their modinfo section, which contains a
1233          sum of the source files which made it.  This helps maintainers
1234          see exactly which source was used to build a module (since
1235          others sometimes change the module source without updating
1236          the version).  With this option, such a "srcversion" field
1237          will be created for all modules.  If unsure, say N.
1238
1239endif # MODULES
1240
1241config INIT_ALL_POSSIBLE
1242        bool
1243        help
1244          Back when each arch used to define their own cpu_online_map and
1245          cpu_possible_map, some of them chose to initialize cpu_possible_map
1246          with all 1s, and others with all 0s.  When they were centralised,
1247          it was better to provide this option than to break all the archs
1248          and have several arch maintainers pursuing me down dark alleys.
1249
1250config STOP_MACHINE
1251        bool
1252        default y
1253        depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU
1254        help
1255          Need stop_machine() primitive.
1256
1257source "block/Kconfig"
1258
1259config PREEMPT_NOTIFIERS
1260        bool
1261
1262config PADATA
1263        depends on SMP
1264        bool
1265
1266source "kernel/Kconfig.locks"
1267
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.