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