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
  23config IRQ_WORK
  24        bool
  25
  26config BUILDTIME_EXTABLE_SORT
  27        bool
  28
  29config THREAD_INFO_IN_TASK
  30        bool
  31        help
  32          Select this to move thread_info off the stack into task_struct.  To
  33          make this work, an arch will need to remove all thread_info fields
  34          except flags and fix any runtime bugs.
  35
  36          One subtle change that will be needed is to use try_get_task_stack()
  37          and put_task_stack() in save_thread_stack_tsk() and get_wchan().
  38
  39menu "General setup"
  40
  41config BROKEN
  42        bool
  43
  44config BROKEN_ON_SMP
  45        bool
  46        depends on BROKEN || !SMP
  47        default y
  48
  49config INIT_ENV_ARG_LIMIT
  50        int
  51        default 32 if !UML
  52        default 128 if UML
  53        help
  54          Maximum of each of the number of arguments and environment
  55          variables passed to init from the kernel command line.
  56
  57
  58config CROSS_COMPILE
  59        string "Cross-compiler tool prefix"
  60        help
  61          Same as running 'make CROSS_COMPILE=prefix-' but stored for
  62          default make runs in this kernel build directory.  You don't
  63          need to set this unless you want the configured kernel build
  64          directory to select the cross-compiler automatically.
  65
  66config COMPILE_TEST
  67        bool "Compile also drivers which will not load"
  68        depends on !UML
  69        default n
  70        help
  71          Some drivers can be compiled on a different platform than they are
  72          intended to be run on. Despite they cannot be loaded there (or even
  73          when they load they cannot be used due to missing HW support),
  74          developers still, opposing to distributors, might want to build such
  75          drivers to compile-test them.
  76
  77          If you are a developer and want to build everything available, say Y
  78          here. If you are a user/distributor, say N here to exclude useless
  79          drivers to be distributed.
  80
  81config LOCALVERSION
  82        string "Local version - append to kernel release"
  83        help
  84          Append an extra string to the end of your kernel version.
  85          This will show up when you type uname, for example.
  86          The string you set here will be appended after the contents of
  87          any files with a filename matching localversion* in your
  88          object and source tree, in that order.  Your total string can
  89          be a maximum of 64 characters.
  90
  91config LOCALVERSION_AUTO
  92        bool "Automatically append version information to the version string"
  93        default y
  94        depends on !COMPILE_TEST
  95        help
  96          This will try to automatically determine if the current tree is a
  97          release tree by looking for git tags that belong to the current
  98          top of tree revision.
  99
 100          A string of the format -gxxxxxxxx will be added to the localversion
 101          if a git-based tree is found.  The string generated by this will be
 102          appended after any matching localversion* files, and after the value
 103          set in CONFIG_LOCALVERSION.
 104
 105          (The actual string used here is the first eight characters produced
 106          by running the command:
 107
 108            $ git rev-parse --verify HEAD
 109
 110          which is done within the script "scripts/setlocalversion".)
 111
 112config HAVE_KERNEL_GZIP
 113        bool
 114
 115config HAVE_KERNEL_BZIP2
 116        bool
 117
 118config HAVE_KERNEL_LZMA
 119        bool
 120
 121config HAVE_KERNEL_XZ
 122        bool
 123
 124config HAVE_KERNEL_LZO
 125        bool
 126
 127config HAVE_KERNEL_LZ4
 128        bool
 129
 130choice
 131        prompt "Kernel compression mode"
 132        default KERNEL_GZIP
 133        depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4
 134        help
 135          The linux kernel is a kind of self-extracting executable.
 136          Several compression algorithms are available, which differ
 137          in efficiency, compression and decompression speed.
 138          Compression speed is only relevant when building a kernel.
 139          Decompression speed is relevant at each boot.
 140
 141          If you have any problems with bzip2 or lzma compressed
 142          kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older
 143          version of this functionality (bzip2 only), for 2.4, was
 144          supplied by Christian Ludwig)
 145
 146          High compression options are mostly useful for users, who
 147          are low on disk space (embedded systems), but for whom ram
 148          size matters less.
 149
 150          If in doubt, select 'gzip'
 151
 152config KERNEL_GZIP
 153        bool "Gzip"
 154        depends on HAVE_KERNEL_GZIP
 155        help
 156          The old and tried gzip compression. It provides a good balance
 157          between compression ratio and decompression speed.
 158
 159config KERNEL_BZIP2
 160        bool "Bzip2"
 161        depends on HAVE_KERNEL_BZIP2
 162        help
 163          Its compression ratio and speed is intermediate.
 164          Decompression speed is slowest among the choices.  The kernel
 165          size is about 10% smaller with bzip2, in comparison to gzip.
 166          Bzip2 uses a large amount of memory. For modern kernels you
 167          will need at least 8MB RAM or more for booting.
 168
 169config KERNEL_LZMA
 170        bool "LZMA"
 171        depends on HAVE_KERNEL_LZMA
 172        help
 173          This compression algorithm's ratio is best.  Decompression speed
 174          is between gzip and bzip2.  Compression is slowest.
 175          The kernel size is about 33% smaller with LZMA in comparison to gzip.
 176
 177config KERNEL_XZ
 178        bool "XZ"
 179        depends on HAVE_KERNEL_XZ
 180        help
 181          XZ uses the LZMA2 algorithm and instruction set specific
 182          BCJ filters which can improve compression ratio of executable
 183          code. The size of the kernel is about 30% smaller with XZ in
 184          comparison to gzip. On architectures for which there is a BCJ
 185          filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ
 186          will create a few percent smaller kernel than plain LZMA.
 187
 188          The speed is about the same as with LZMA: The decompression
 189          speed of XZ is better than that of bzip2 but worse than gzip
 190          and LZO. Compression is slow.
 191
 192config KERNEL_LZO
 193        bool "LZO"
 194        depends on HAVE_KERNEL_LZO
 195        help
 196          Its compression ratio is the poorest among the choices. The kernel
 197          size is about 10% bigger than gzip; however its speed
 198          (both compression and decompression) is the fastest.
 199
 200config KERNEL_LZ4
 201        bool "LZ4"
 202        depends on HAVE_KERNEL_LZ4
 203        help
 204          LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding.
 205          A preliminary version of LZ4 de/compression tool is available at
 206          <https://code.google.com/p/lz4/>.
 207
 208          Its compression ratio is worse than LZO. The size of the kernel
 209          is about 8% bigger than LZO. But the decompression speed is
 210          faster than LZO.
 211
 212endchoice
 213
 214config DEFAULT_HOSTNAME
 215        string "Default hostname"
 216        default "(none)"
 217        help
 218          This option determines the default system hostname before userspace
 219          calls sethostname(2). The kernel traditionally uses "(none)" here,
 220          but you may wish to use a different default here to make a minimal
 221          system more usable with less configuration.
 222
 223config SWAP
 224        bool "Support for paging of anonymous memory (swap)"
 225        depends on MMU && BLOCK
 226        default y
 227        help
 228          This option allows you to choose whether you want to have support
 229          for so called swap devices or swap files in your kernel that are
 230          used to provide more virtual memory than the actual RAM present
 231          in your computer.  If unsure say Y.
 232
 233config SYSVIPC
 234        bool "System V IPC"
 235        ---help---
 236          Inter Process Communication is a suite of library functions and
 237          system calls which let processes (running programs) synchronize and
 238          exchange information. It is generally considered to be a good thing,
 239          and some programs won't run unless you say Y here. In particular, if
 240          you want to run the DOS emulator dosemu under Linux (read the
 241          DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>),
 242          you'll need to say Y here.
 243
 244          You can find documentation about IPC with "info ipc" and also in
 245          section 6.4 of the Linux Programmer's Guide, available from
 246          <http://www.tldp.org/guides.html>.
 247
 248config SYSVIPC_SYSCTL
 249        bool
 250        depends on SYSVIPC
 251        depends on SYSCTL
 252        default y
 253
 254config POSIX_MQUEUE
 255        bool "POSIX Message Queues"
 256        depends on NET
 257        ---help---
 258          POSIX variant of message queues is a part of IPC. In POSIX message
 259          queues every message has a priority which decides about succession
 260          of receiving it by a process. If you want to compile and run
 261          programs written e.g. for Solaris with use of its POSIX message
 262          queues (functions mq_*) say Y here.
 263
 264          POSIX message queues are visible as a filesystem called 'mqueue'
 265          and can be mounted somewhere if you want to do filesystem
 266          operations on message queues.
 267
 268          If unsure, say Y.
 269
 270config POSIX_MQUEUE_SYSCTL
 271        bool
 272        depends on POSIX_MQUEUE
 273        depends on SYSCTL
 274        default y
 275
 276config CROSS_MEMORY_ATTACH
 277        bool "Enable process_vm_readv/writev syscalls"
 278        depends on MMU
 279        default y
 280        help
 281          Enabling this option adds the system calls process_vm_readv and
 282          process_vm_writev which allow a process with the correct privileges
 283          to directly read from or write to another process' address space.
 284          See the man page for more details.
 285
 286config FHANDLE
 287        bool "open by fhandle syscalls" if EXPERT
 288        select EXPORTFS
 289        default y
 290        help
 291          If you say Y here, a user level program will be able to map
 292          file names to handle and then later use the handle for
 293          different file system operations. This is useful in implementing
 294          userspace file servers, which now track files using handles instead
 295          of names. The handle would remain the same even if file names
 296          get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2)
 297          syscalls.
 298
 299config USELIB
 300        bool "uselib syscall"
 301        def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION
 302        help
 303          This option enables the uselib syscall, a system call used in the
 304          dynamic linker from libc5 and earlier.  glibc does not use this
 305          system call.  If you intend to run programs built on libc5 or
 306          earlier, you may need to enable this syscall.  Current systems
 307          running glibc can safely disable this.
 308
 309config AUDIT
 310        bool "Auditing support"
 311        depends on NET
 312        help
 313          Enable auditing infrastructure that can be used with another
 314          kernel subsystem, such as SELinux (which requires this for
 315          logging of avc messages output).  System call auditing is included
 316          on architectures which support it.
 317
 318config HAVE_ARCH_AUDITSYSCALL
 319        bool
 320
 321config AUDITSYSCALL
 322        def_bool y
 323        depends on AUDIT && HAVE_ARCH_AUDITSYSCALL
 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
 335source "kernel/irq/Kconfig"
 336source "kernel/time/Kconfig"
 337
 338menu "CPU/Task time and stats accounting"
 339
 340config VIRT_CPU_ACCOUNTING
 341        bool
 342
 343choice
 344        prompt "Cputime accounting"
 345        default TICK_CPU_ACCOUNTING if !PPC64
 346        default VIRT_CPU_ACCOUNTING_NATIVE if PPC64
 347
 348# Kind of a stub config for the pure tick based cputime accounting
 349config TICK_CPU_ACCOUNTING
 350        bool "Simple tick based cputime accounting"
 351        depends on !S390 && !NO_HZ_FULL
 352        help
 353          This is the basic tick based cputime accounting that maintains
 354          statistics about user, system and idle time spent on per jiffies
 355          granularity.
 356
 357          If unsure, say Y.
 358
 359config VIRT_CPU_ACCOUNTING_NATIVE
 360        bool "Deterministic task and CPU time accounting"
 361        depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL
 362        select VIRT_CPU_ACCOUNTING
 363        help
 364          Select this option to enable more accurate task and CPU time
 365          accounting.  This is done by reading a CPU counter on each
 366          kernel entry and exit and on transitions within the kernel
 367          between system, softirq and hardirq state, so there is a
 368          small performance impact.  In the case of s390 or IBM POWER > 5,
 369          this also enables accounting of stolen time on logically-partitioned
 370          systems.
 371
 372config VIRT_CPU_ACCOUNTING_GEN
 373        bool "Full dynticks CPU time accounting"
 374        depends on HAVE_CONTEXT_TRACKING
 375        depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
 376        select VIRT_CPU_ACCOUNTING
 377        select CONTEXT_TRACKING
 378        help
 379          Select this option to enable task and CPU time accounting on full
 380          dynticks systems. This accounting is implemented by watching every
 381          kernel-user boundaries using the context tracking subsystem.
 382          The accounting is thus performed at the expense of some significant
 383          overhead.
 384
 385          For now this is only useful if you are working on the full
 386          dynticks subsystem development.
 387
 388          If unsure, say N.
 389
 390endchoice
 391
 392config IRQ_TIME_ACCOUNTING
 393        bool "Fine granularity task level IRQ time accounting"
 394        depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE
 395        help
 396          Select this option to enable fine granularity task irq time
 397          accounting. This is done by reading a timestamp on each
 398          transitions between softirq and hardirq state, so there can be a
 399          small performance impact.
 400
 401          If in doubt, say N here.
 402
 403config BSD_PROCESS_ACCT
 404        bool "BSD Process Accounting"
 405        depends on MULTIUSER
 406        help
 407          If you say Y here, a user level program will be able to instruct the
 408          kernel (via a special system call) to write process accounting
 409          information to a file: whenever a process exits, information about
 410          that process will be appended to the file by the kernel.  The
 411          information includes things such as creation time, owning user,
 412          command name, memory usage, controlling terminal etc. (the complete
 413          list is in the struct acct in <file:include/linux/acct.h>).  It is
 414          up to the user level program to do useful things with this
 415          information.  This is generally a good idea, so say Y.
 416
 417config BSD_PROCESS_ACCT_V3
 418        bool "BSD Process Accounting version 3 file format"
 419        depends on BSD_PROCESS_ACCT
 420        default n
 421        help
 422          If you say Y here, the process accounting information is written
 423          in a new file format that also logs the process IDs of each
 424          process and it's parent. Note that this file format is incompatible
 425          with previous v0/v1/v2 file formats, so you will need updated tools
 426          for processing it. A preliminary version of these tools is available
 427          at <http://www.gnu.org/software/acct/>.
 428
 429config TASKSTATS
 430        bool "Export task/process statistics through netlink"
 431        depends on NET
 432        depends on MULTIUSER
 433        default n
 434        help
 435          Export selected statistics for tasks/processes through the
 436          generic netlink interface. Unlike BSD process accounting, the
 437          statistics are available during the lifetime of tasks/processes as
 438          responses to commands. Like BSD accounting, they are sent to user
 439          space on task exit.
 440
 441          Say N if unsure.
 442
 443config TASK_DELAY_ACCT
 444        bool "Enable per-task delay accounting"
 445        depends on TASKSTATS
 446        select SCHED_INFO
 447        help
 448          Collect information on time spent by a task waiting for system
 449          resources like cpu, synchronous block I/O completion and swapping
 450          in pages. Such statistics can help in setting a task's priorities
 451          relative to other tasks for cpu, io, rss limits etc.
 452
 453          Say N if unsure.
 454
 455config TASK_XACCT
 456        bool "Enable extended accounting over taskstats"
 457        depends on TASKSTATS
 458        help
 459          Collect extended task accounting data and send the data
 460          to userland for processing over the taskstats interface.
 461
 462          Say N if unsure.
 463
 464config TASK_IO_ACCOUNTING
 465        bool "Enable per-task storage I/O accounting"
 466        depends on TASK_XACCT
 467        help
 468          Collect information on the number of bytes of storage I/O which this
 469          task has caused.
 470
 471          Say N if unsure.
 472
 473endmenu # "CPU/Task time and stats accounting"
 474
 475source "kernel/rcu/Kconfig"
 476
 477config BUILD_BIN2C
 478        bool
 479        default n
 480
 481config IKCONFIG
 482        tristate "Kernel .config support"
 483        select BUILD_BIN2C
 484        ---help---
 485          This option enables the complete Linux kernel ".config" file
 486          contents to be saved in the kernel. It provides documentation
 487          of which kernel options are used in a running kernel or in an
 488          on-disk kernel.  This information can be extracted from the kernel
 489          image file with the script scripts/extract-ikconfig and used as
 490          input to rebuild the current kernel or to build another kernel.
 491          It can also be extracted from a running kernel by reading
 492          /proc/config.gz if enabled (below).
 493
 494config IKCONFIG_PROC
 495        bool "Enable access to .config through /proc/config.gz"
 496        depends on IKCONFIG && PROC_FS
 497        ---help---
 498          This option enables access to the kernel configuration file
 499          through /proc/config.gz.
 500
 501config LOG_BUF_SHIFT
 502        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
 503        range 12 25
 504        default 17
 505        depends on PRINTK
 506        help
 507          Select the minimal kernel log buffer size as a power of 2.
 508          The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
 509          parameter, see below. Any higher size also might be forced
 510          by "log_buf_len" boot parameter.
 511
 512          Examples:
 513                     17 => 128 KB
 514                     16 => 64 KB
 515                     15 => 32 KB
 516                     14 => 16 KB
 517                     13 =>  8 KB
 518                     12 =>  4 KB
 519
 520config LOG_CPU_MAX_BUF_SHIFT
 521        int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
 522        depends on SMP
 523        range 0 21
 524        default 12 if !BASE_SMALL
 525        default 0 if BASE_SMALL
 526        depends on PRINTK
 527        help
 528          This option allows to increase the default ring buffer size
 529          according to the number of CPUs. The value defines the contribution
 530          of each CPU as a power of 2. The used space is typically only few
 531          lines however it might be much more when problems are reported,
 532          e.g. backtraces.
 533
 534          The increased size means that a new buffer has to be allocated and
 535          the original static one is unused. It makes sense only on systems
 536          with more CPUs. Therefore this value is used only when the sum of
 537          contributions is greater than the half of the default kernel ring
 538          buffer as defined by LOG_BUF_SHIFT. The default values are set
 539          so that more than 64 CPUs are needed to trigger the allocation.
 540
 541          Also this option is ignored when "log_buf_len" kernel parameter is
 542          used as it forces an exact (power of two) size of the ring buffer.
 543
 544          The number of possible CPUs is used for this computation ignoring
 545          hotplugging making the computation optimal for the worst case
 546          scenario while allowing a simple algorithm to be used from bootup.
 547
 548          Examples shift values and their meaning:
 549                     17 => 128 KB for each CPU
 550                     16 =>  64 KB for each CPU
 551                     15 =>  32 KB for each CPU
 552                     14 =>  16 KB for each CPU
 553                     13 =>   8 KB for each CPU
 554                     12 =>   4 KB for each CPU
 555
 556config PRINTK_SAFE_LOG_BUF_SHIFT
 557        int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)"
 558        range 10 21
 559        default 13
 560        depends on PRINTK
 561        help
 562          Select the size of an alternate printk per-CPU buffer where messages
 563          printed from usafe contexts are temporary stored. One example would
 564          be NMI messages, another one - printk recursion. The messages are
 565          copied to the main log buffer in a safe context to avoid a deadlock.
 566          The value defines the size as a power of 2.
 567
 568          Those messages are rare and limited. The largest one is when
 569          a backtrace is printed. It usually fits into 4KB. Select
 570          8KB if you want to be on the safe side.
 571
 572          Examples:
 573                     17 => 128 KB for each CPU
 574                     16 =>  64 KB for each CPU
 575                     15 =>  32 KB for each CPU
 576                     14 =>  16 KB for each CPU
 577                     13 =>   8 KB for each CPU
 578                     12 =>   4 KB for each CPU
 579
 580#
 581# Architectures with an unreliable sched_clock() should select this:
 582#
 583config HAVE_UNSTABLE_SCHED_CLOCK
 584        bool
 585
 586config GENERIC_SCHED_CLOCK
 587        bool
 588
 589#
 590# For architectures that want to enable the support for NUMA-affine scheduler
 591# balancing logic:
 592#
 593config ARCH_SUPPORTS_NUMA_BALANCING
 594        bool
 595
 596#
 597# For architectures that prefer to flush all TLBs after a number of pages
 598# are unmapped instead of sending one IPI per page to flush. The architecture
 599# must provide guarantees on what happens if a clean TLB cache entry is
 600# written after the unmap. Details are in mm/rmap.c near the check for
 601# should_defer_flush. The architecture should also consider if the full flush
 602# and the refill costs are offset by the savings of sending fewer IPIs.
 603config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
 604        bool
 605
 606#
 607# For architectures that know their GCC __int128 support is sound
 608#
 609config ARCH_SUPPORTS_INT128
 610        bool
 611
 612# For architectures that (ab)use NUMA to represent different memory regions
 613# all cpu-local but of different latencies, such as SuperH.
 614#
 615config ARCH_WANT_NUMA_VARIABLE_LOCALITY
 616        bool
 617
 618config NUMA_BALANCING
 619        bool "Memory placement aware NUMA scheduler"
 620        depends on ARCH_SUPPORTS_NUMA_BALANCING
 621        depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
 622        depends on SMP && NUMA && MIGRATION
 623        help
 624          This option adds support for automatic NUMA aware memory/task placement.
 625          The mechanism is quite primitive and is based on migrating memory when
 626          it has references to the node the task is running on.
 627
 628          This system will be inactive on UMA systems.
 629
 630config NUMA_BALANCING_DEFAULT_ENABLED
 631        bool "Automatically enable NUMA aware memory/task placement"
 632        default y
 633        depends on NUMA_BALANCING
 634        help
 635          If set, automatic NUMA balancing will be enabled if running on a NUMA
 636          machine.
 637
 638menuconfig CGROUPS
 639        bool "Control Group support"
 640        select KERNFS
 641        help
 642          This option adds support for grouping sets of processes together, for
 643          use with process control subsystems such as Cpusets, CFS, memory
 644          controls or device isolation.
 645          See
 646                - Documentation/scheduler/sched-design-CFS.txt  (CFS)
 647                - Documentation/cgroup-v1/ (features for grouping, isolation
 648                                          and resource control)
 649
 650          Say N if unsure.
 651
 652if CGROUPS
 653
 654config PAGE_COUNTER
 655       bool
 656
 657config MEMCG
 658        bool "Memory controller"
 659        select PAGE_COUNTER
 660        select EVENTFD
 661        help
 662          Provides control over the memory footprint of tasks in a cgroup.
 663
 664config MEMCG_SWAP
 665        bool "Swap controller"
 666        depends on MEMCG && SWAP
 667        help
 668          Provides control over the swap space consumed by tasks in a cgroup.
 669
 670config MEMCG_SWAP_ENABLED
 671        bool "Swap controller enabled by default"
 672        depends on MEMCG_SWAP
 673        default y
 674        help
 675          Memory Resource Controller Swap Extension comes with its price in
 676          a bigger memory consumption. General purpose distribution kernels
 677          which want to enable the feature but keep it disabled by default
 678          and let the user enable it by swapaccount=1 boot command line
 679          parameter should have this option unselected.
 680          For those who want to have the feature enabled by default should
 681          select this option (if, for some reason, they need to disable it
 682          then swapaccount=0 does the trick).
 683
 684config BLK_CGROUP
 685        bool "IO controller"
 686        depends on BLOCK
 687        default n
 688        ---help---
 689        Generic block IO controller cgroup interface. This is the common
 690        cgroup interface which should be used by various IO controlling
 691        policies.
 692
 693        Currently, CFQ IO scheduler uses it to recognize task groups and
 694        control disk bandwidth allocation (proportional time slice allocation)
 695        to such task groups. It is also used by bio throttling logic in
 696        block layer to implement upper limit in IO rates on a device.
 697
 698        This option only enables generic Block IO controller infrastructure.
 699        One needs to also enable actual IO controlling logic/policy. For
 700        enabling proportional weight division of disk bandwidth in CFQ, set
 701        CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
 702        CONFIG_BLK_DEV_THROTTLING=y.
 703
 704        See Documentation/cgroup-v1/blkio-controller.txt for more information.
 705
 706config DEBUG_BLK_CGROUP
 707        bool "IO controller debugging"
 708        depends on BLK_CGROUP
 709        default n
 710        ---help---
 711        Enable some debugging help. Currently it exports additional stat
 712        files in a cgroup which can be useful for debugging.
 713
 714config CGROUP_WRITEBACK
 715        bool
 716        depends on MEMCG && BLK_CGROUP
 717        default y
 718
 719menuconfig CGROUP_SCHED
 720        bool "CPU controller"
 721        default n
 722        help
 723          This feature lets CPU scheduler recognize task groups and control CPU
 724          bandwidth allocation to such task groups. It uses cgroups to group
 725          tasks.
 726
 727if CGROUP_SCHED
 728config FAIR_GROUP_SCHED
 729        bool "Group scheduling for SCHED_OTHER"
 730        depends on CGROUP_SCHED
 731        default CGROUP_SCHED
 732
 733config CFS_BANDWIDTH
 734        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
 735        depends on FAIR_GROUP_SCHED
 736        default n
 737        help
 738          This option allows users to define CPU bandwidth rates (limits) for
 739          tasks running within the fair group scheduler.  Groups with no limit
 740          set are considered to be unconstrained and will run with no
 741          restriction.
 742          See tip/Documentation/scheduler/sched-bwc.txt for more information.
 743
 744config RT_GROUP_SCHED
 745        bool "Group scheduling for SCHED_RR/FIFO"
 746        depends on CGROUP_SCHED
 747        default n
 748        help
 749          This feature lets you explicitly allocate real CPU bandwidth
 750          to task groups. If enabled, it will also make it impossible to
 751          schedule realtime tasks for non-root users until you allocate
 752          realtime bandwidth for them.
 753          See Documentation/scheduler/sched-rt-group.txt for more information.
 754
 755endif #CGROUP_SCHED
 756
 757config CGROUP_PIDS
 758        bool "PIDs controller"
 759        help
 760          Provides enforcement of process number limits in the scope of a
 761          cgroup. Any attempt to fork more processes than is allowed in the
 762          cgroup will fail. PIDs are fundamentally a global resource because it
 763          is fairly trivial to reach PID exhaustion before you reach even a
 764          conservative kmemcg limit. As a result, it is possible to grind a
 765          system to halt without being limited by other cgroup policies. The
 766          PIDs controller is designed to stop this from happening.
 767
 768          It should be noted that organisational operations (such as attaching
 769          to a cgroup hierarchy will *not* be blocked by the PIDs controller),
 770          since the PIDs limit only affects a process's ability to fork, not to
 771          attach to a cgroup.
 772
 773config CGROUP_RDMA
 774        bool "RDMA controller"
 775        help
 776          Provides enforcement of RDMA resources defined by IB stack.
 777          It is fairly easy for consumers to exhaust RDMA resources, which
 778          can result into resource unavailability to other consumers.
 779          RDMA controller is designed to stop this from happening.
 780          Attaching processes with active RDMA resources to the cgroup
 781          hierarchy is allowed even if can cross the hierarchy's limit.
 782
 783config CGROUP_FREEZER
 784        bool "Freezer controller"
 785        help
 786          Provides a way to freeze and unfreeze all tasks in a
 787          cgroup.
 788
 789          This option affects the ORIGINAL cgroup interface. The cgroup2 memory
 790          controller includes important in-kernel memory consumers per default.
 791
 792          If you're using cgroup2, say N.
 793
 794config CGROUP_HUGETLB
 795        bool "HugeTLB controller"
 796        depends on HUGETLB_PAGE
 797        select PAGE_COUNTER
 798        default n
 799        help
 800          Provides a cgroup controller for HugeTLB pages.
 801          When you enable this, you can put a per cgroup limit on HugeTLB usage.
 802          The limit is enforced during page fault. Since HugeTLB doesn't
 803          support page reclaim, enforcing the limit at page fault time implies
 804          that, the application will get SIGBUS signal if it tries to access
 805          HugeTLB pages beyond its limit. This requires the application to know
 806          beforehand how much HugeTLB pages it would require for its use. The
 807          control group is tracked in the third page lru pointer. This means
 808          that we cannot use the controller with huge page less than 3 pages.
 809
 810config CPUSETS
 811        bool "Cpuset controller"
 812        depends on SMP
 813        help
 814          This option will let you create and manage CPUSETs which
 815          allow dynamically partitioning a system into sets of CPUs and
 816          Memory Nodes and assigning tasks to run only within those sets.
 817          This is primarily useful on large SMP or NUMA systems.
 818
 819          Say N if unsure.
 820
 821config PROC_PID_CPUSET
 822        bool "Include legacy /proc/<pid>/cpuset file"
 823        depends on CPUSETS
 824        default y
 825
 826config CGROUP_DEVICE
 827        bool "Device controller"
 828        help
 829          Provides a cgroup controller implementing whitelists for
 830          devices which a process in the cgroup can mknod or open.
 831
 832config CGROUP_CPUACCT
 833        bool "Simple CPU accounting controller"
 834        help
 835          Provides a simple controller for monitoring the
 836          total CPU consumed by the tasks in a cgroup.
 837
 838config CGROUP_PERF
 839        bool "Perf controller"
 840        depends on PERF_EVENTS
 841        help
 842          This option extends the perf per-cpu mode to restrict monitoring
 843          to threads which belong to the cgroup specified and run on the
 844          designated cpu.
 845
 846          Say N if unsure.
 847
 848config CGROUP_BPF
 849        bool "Support for eBPF programs attached to cgroups"
 850        depends on BPF_SYSCALL
 851        select SOCK_CGROUP_DATA
 852        help
 853          Allow attaching eBPF programs to a cgroup using the bpf(2)
 854          syscall command BPF_PROG_ATTACH.
 855
 856          In which context these programs are accessed depends on the type
 857          of attachment. For instance, programs that are attached using
 858          BPF_CGROUP_INET_INGRESS will be executed on the ingress path of
 859          inet sockets.
 860
 861config CGROUP_DEBUG
 862        bool "Debug controller"
 863        default n
 864        depends on DEBUG_KERNEL
 865        help
 866          This option enables a simple controller that exports
 867          debugging information about the cgroups framework. This
 868          controller is for control cgroup debugging only. Its
 869          interfaces are not stable.
 870
 871          Say N.
 872
 873config SOCK_CGROUP_DATA
 874        bool
 875        default n
 876
 877endif # CGROUPS
 878
 879config CHECKPOINT_RESTORE
 880        bool "Checkpoint/restore support" if EXPERT
 881        select PROC_CHILDREN
 882        default n
 883        help
 884          Enables additional kernel features in a sake of checkpoint/restore.
 885          In particular it adds auxiliary prctl codes to setup process text,
 886          data and heap segment sizes, and a few additional /proc filesystem
 887          entries.
 888
 889          If unsure, say N here.
 890
 891menuconfig NAMESPACES
 892        bool "Namespaces support" if EXPERT
 893        depends on MULTIUSER
 894        default !EXPERT
 895        help
 896          Provides the way to make tasks work with different objects using
 897          the same id. For example same IPC id may refer to different objects
 898          or same user id or pid may refer to different tasks when used in
 899          different namespaces.
 900
 901if NAMESPACES
 902
 903config UTS_NS
 904        bool "UTS namespace"
 905        default y
 906        help
 907          In this namespace tasks see different info provided with the
 908          uname() system call
 909
 910config IPC_NS
 911        bool "IPC namespace"
 912        depends on (SYSVIPC || POSIX_MQUEUE)
 913        default y
 914        help
 915          In this namespace tasks work with IPC ids which correspond to
 916          different IPC objects in different namespaces.
 917
 918config USER_NS
 919        bool "User namespace"
 920        default n
 921        help
 922          This allows containers, i.e. vservers, to use user namespaces
 923          to provide different user info for different servers.
 924
 925          When user namespaces are enabled in the kernel it is
 926          recommended that the MEMCG option also be enabled and that
 927          user-space use the memory control groups to limit the amount
 928          of memory a memory unprivileged users can use.
 929
 930          If unsure, say N.
 931
 932config PID_NS
 933        bool "PID Namespaces"
 934        default y
 935        help
 936          Support process id namespaces.  This allows having multiple
 937          processes with the same pid as long as they are in different
 938          pid namespaces.  This is a building block of containers.
 939
 940config NET_NS
 941        bool "Network namespace"
 942        depends on NET
 943        default y
 944        help
 945          Allow user space to create what appear to be multiple instances
 946          of the network stack.
 947
 948endif # NAMESPACES
 949
 950config SCHED_AUTOGROUP
 951        bool "Automatic process group scheduling"
 952        select CGROUPS
 953        select CGROUP_SCHED
 954        select FAIR_GROUP_SCHED
 955        help
 956          This option optimizes the scheduler for common desktop workloads by
 957          automatically creating and populating task groups.  This separation
 958          of workloads isolates aggressive CPU burners (like build jobs) from
 959          desktop applications.  Task group autogeneration is currently based
 960          upon task session.
 961
 962config SYSFS_DEPRECATED
 963        bool "Enable deprecated sysfs features to support old userspace tools"
 964        depends on SYSFS
 965        default n
 966        help
 967          This option adds code that switches the layout of the "block" class
 968          devices, to not show up in /sys/class/block/, but only in
 969          /sys/block/.
 970
 971          This switch is only active when the sysfs.deprecated=1 boot option is
 972          passed or the SYSFS_DEPRECATED_V2 option is set.
 973
 974          This option allows new kernels to run on old distributions and tools,
 975          which might get confused by /sys/class/block/. Since 2007/2008 all
 976          major distributions and tools handle this just fine.
 977
 978          Recent distributions and userspace tools after 2009/2010 depend on
 979          the existence of /sys/class/block/, and will not work with this
 980          option enabled.
 981
 982          Only if you are using a new kernel on an old distribution, you might
 983          need to say Y here.
 984
 985config SYSFS_DEPRECATED_V2
 986        bool "Enable deprecated sysfs features by default"
 987        default n
 988        depends on SYSFS
 989        depends on SYSFS_DEPRECATED
 990        help
 991          Enable deprecated sysfs by default.
 992
 993          See the CONFIG_SYSFS_DEPRECATED option for more details about this
 994          option.
 995
 996          Only if you are using a new kernel on an old distribution, you might
 997          need to say Y here. Even then, odds are you would not need it
 998          enabled, you can always pass the boot option if absolutely necessary.
 999
1000config RELAY
1001        bool "Kernel->user space relay support (formerly relayfs)"
1002        select IRQ_WORK
1003        help
1004          This option enables support for relay interface support in
1005          certain file systems (such as debugfs).
1006          It is designed to provide an efficient mechanism for tools and
1007          facilities to relay large amounts of data from kernel space to
1008          user space.
1009
1010          If unsure, say N.
1011
1012config BLK_DEV_INITRD
1013        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
1014        depends on BROKEN || !FRV
1015        help
1016          The initial RAM filesystem is a ramfs which is loaded by the
1017          boot loader (loadlin or lilo) and that is mounted as root
1018          before the normal boot procedure. It is typically used to
1019          load modules needed to mount the "real" root file system,
1020          etc. See <file:Documentation/admin-guide/initrd.rst> for details.
1021
1022          If RAM disk support (BLK_DEV_RAM) is also included, this
1023          also enables initial RAM disk (initrd) support and adds
1024          15 Kbytes (more on some other architectures) to the kernel size.
1025
1026          If unsure say Y.
1027
1028if BLK_DEV_INITRD
1029
1030source "usr/Kconfig"
1031
1032endif
1033
1034choice
1035        prompt "Compiler optimization level"
1036        default CC_OPTIMIZE_FOR_PERFORMANCE
1037
1038config CC_OPTIMIZE_FOR_PERFORMANCE
1039        bool "Optimize for performance"
1040        help
1041          This is the default optimization level for the kernel, building
1042          with the "-O2" compiler flag for best performance and most
1043          helpful compile-time warnings.
1044
1045config CC_OPTIMIZE_FOR_SIZE
1046        bool "Optimize for size"
1047        help
1048          Enabling this option will pass "-Os" instead of "-O2" to
1049          your compiler resulting in a smaller kernel.
1050
1051          If unsure, say N.
1052
1053endchoice
1054
1055config SYSCTL
1056        bool
1057
1058config ANON_INODES
1059        bool
1060
1061config HAVE_UID16
1062        bool
1063
1064config SYSCTL_EXCEPTION_TRACE
1065        bool
1066        help
1067          Enable support for /proc/sys/debug/exception-trace.
1068
1069config SYSCTL_ARCH_UNALIGN_NO_WARN
1070        bool
1071        help
1072          Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1073          Allows arch to define/use @no_unaligned_warning to possibly warn
1074          about unaligned access emulation going on under the hood.
1075
1076config SYSCTL_ARCH_UNALIGN_ALLOW
1077        bool
1078        help
1079          Enable support for /proc/sys/kernel/unaligned-trap
1080          Allows arches to define/use @unaligned_enabled to runtime toggle
1081          the unaligned access emulation.
1082          see arch/parisc/kernel/unaligned.c for reference
1083
1084config HAVE_PCSPKR_PLATFORM
1085        bool
1086
1087# interpreter that classic socket filters depend on
1088config BPF
1089        bool
1090
1091menuconfig EXPERT
1092        bool "Configure standard kernel features (expert users)"
1093        # Unhide debug options, to make the on-by-default options visible
1094        select DEBUG_KERNEL
1095        help
1096          This option allows certain base kernel options and settings
1097          to be disabled or tweaked. This is for specialized
1098          environments which can tolerate a "non-standard" kernel.
1099          Only use this if you really know what you are doing.
1100
1101config UID16
1102        bool "Enable 16-bit UID system calls" if EXPERT
1103        depends on HAVE_UID16 && MULTIUSER
1104        default y
1105        help
1106          This enables the legacy 16-bit UID syscall wrappers.
1107
1108config MULTIUSER
1109        bool "Multiple users, groups and capabilities support" if EXPERT
1110        default y
1111        help
1112          This option enables support for non-root users, groups and
1113          capabilities.
1114
1115          If you say N here, all processes will run with UID 0, GID 0, and all
1116          possible capabilities.  Saying N here also compiles out support for
1117          system calls related to UIDs, GIDs, and capabilities, such as setuid,
1118          setgid, and capset.
1119
1120          If unsure, say Y here.
1121
1122config SGETMASK_SYSCALL
1123        bool "sgetmask/ssetmask syscalls support" if EXPERT
1124        def_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH
1125        ---help---
1126          sys_sgetmask and sys_ssetmask are obsolete system calls
1127          no longer supported in libc but still enabled by default in some
1128          architectures.
1129
1130          If unsure, leave the default option here.
1131
1132config SYSFS_SYSCALL
1133        bool "Sysfs syscall support" if EXPERT
1134        default y
1135        ---help---
1136          sys_sysfs is an obsolete system call no longer supported in libc.
1137          Note that disabling this option is more secure but might break
1138          compatibility with some systems.
1139
1140          If unsure say Y here.
1141
1142config SYSCTL_SYSCALL
1143        bool "Sysctl syscall support" if EXPERT
1144        depends on PROC_SYSCTL
1145        default n
1146        select SYSCTL
1147        ---help---
1148          sys_sysctl uses binary paths that have been found challenging
1149          to properly maintain and use.  The interface in /proc/sys
1150          using paths with ascii names is now the primary path to this
1151          information.
1152
1153          Almost nothing using the binary sysctl interface so if you are
1154          trying to save some space it is probably safe to disable this,
1155          making your kernel marginally smaller.
1156
1157          If unsure say N here.
1158
1159config POSIX_TIMERS
1160        bool "Posix Clocks & timers" if EXPERT
1161        default y
1162        help
1163          This includes native support for POSIX timers to the kernel.
1164          Some embedded systems have no use for them and therefore they
1165          can be configured out to reduce the size of the kernel image.
1166
1167          When this option is disabled, the following syscalls won't be
1168          available: timer_create, timer_gettime: timer_getoverrun,
1169          timer_settime, timer_delete, clock_adjtime, getitimer,
1170          setitimer, alarm. Furthermore, the clock_settime, clock_gettime,
1171          clock_getres and clock_nanosleep syscalls will be limited to
1172          CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only.
1173
1174          If unsure say y.
1175
1176config KALLSYMS
1177         bool "Load all symbols for debugging/ksymoops" if EXPERT
1178         default y
1179         help
1180           Say Y here to let the kernel print out symbolic crash information and
1181           symbolic stack backtraces. This increases the size of the kernel
1182           somewhat, as all symbols have to be loaded into the kernel image.
1183
1184config KALLSYMS_ALL
1185        bool "Include all symbols in kallsyms"
1186        depends on DEBUG_KERNEL && KALLSYMS
1187        help
1188           Normally kallsyms only contains the symbols of functions for nicer
1189           OOPS messages and backtraces (i.e., symbols from the text and inittext
1190           sections). This is sufficient for most cases. And only in very rare
1191           cases (e.g., when a debugger is used) all symbols are required (e.g.,
1192           names of variables from the data sections, etc).
1193
1194           This option makes sure that all symbols are loaded into the kernel
1195           image (i.e., symbols from all sections) in cost of increased kernel
1196           size (depending on the kernel configuration, it may be 300KiB or
1197           something like this).
1198
1199           Say N unless you really need all symbols.
1200
1201config KALLSYMS_ABSOLUTE_PERCPU
1202        bool
1203        depends on KALLSYMS
1204        default X86_64 && SMP
1205
1206config KALLSYMS_BASE_RELATIVE
1207        bool
1208        depends on KALLSYMS
1209        default !IA64 && !(TILE && 64BIT)
1210        help
1211          Instead of emitting them as absolute values in the native word size,
1212          emit the symbol references in the kallsyms table as 32-bit entries,
1213          each containing a relative value in the range [base, base + U32_MAX]
1214          or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
1215          an absolute value in the range [0, S32_MAX] or a relative value in the
1216          range [base, base + S32_MAX], where base is the lowest relative symbol
1217          address encountered in the image.
1218
1219          On 64-bit builds, this reduces the size of the address table by 50%,
1220          but more importantly, it results in entries whose values are build
1221          time constants, and no relocation pass is required at runtime to fix
1222          up the entries based on the runtime load address of the kernel.
1223
1224config PRINTK
1225        default y
1226        bool "Enable support for printk" if EXPERT
1227        select IRQ_WORK
1228        help
1229          This option enables normal printk support. Removing it
1230          eliminates most of the message strings from the kernel image
1231          and makes the kernel more or less silent. As this makes it
1232          very difficult to diagnose system problems, saying N here is
1233          strongly discouraged.
1234
1235config PRINTK_NMI
1236        def_bool y
1237        depends on PRINTK
1238        depends on HAVE_NMI
1239
1240config BUG
1241        bool "BUG() support" if EXPERT
1242        default y
1243        help
1244          Disabling this option eliminates support for BUG and WARN, reducing
1245          the size of your kernel image and potentially quietly ignoring
1246          numerous fatal conditions. You should only consider disabling this
1247          option for embedded systems with no facilities for reporting errors.
1248          Just say Y.
1249
1250config ELF_CORE
1251        depends on COREDUMP
1252        default y
1253        bool "Enable ELF core dumps" if EXPERT
1254        help
1255          Enable support for generating core dumps. Disabling saves about 4k.
1256
1257
1258config PCSPKR_PLATFORM
1259        bool "Enable PC-Speaker support" if EXPERT
1260        depends on HAVE_PCSPKR_PLATFORM
1261        select I8253_LOCK
1262        default y
1263        help
1264          This option allows to disable the internal PC-Speaker
1265          support, saving some memory.
1266
1267config BASE_FULL
1268        default y
1269        bool "Enable full-sized data structures for core" if EXPERT
1270        help
1271          Disabling this option reduces the size of miscellaneous core
1272          kernel data structures. This saves memory on small machines,
1273          but may reduce performance.
1274
1275config FUTEX
1276        bool "Enable futex support" if EXPERT
1277        default y
1278        imply RT_MUTEXES
1279        help
1280          Disabling this option will cause the kernel to be built without
1281          support for "fast userspace mutexes".  The resulting kernel may not
1282          run glibc-based applications correctly.
1283
1284config FUTEX_PI
1285        bool
1286        depends on FUTEX && RT_MUTEXES
1287        default y
1288
1289config HAVE_FUTEX_CMPXCHG
1290        bool
1291        depends on FUTEX
1292        help
1293          Architectures should select this if futex_atomic_cmpxchg_inatomic()
1294          is implemented and always working. This removes a couple of runtime
1295          checks.
1296
1297config EPOLL
1298        bool "Enable eventpoll support" if EXPERT
1299        default y
1300        select ANON_INODES
1301        help
1302          Disabling this option will cause the kernel to be built without
1303          support for epoll family of system calls.
1304
1305config SIGNALFD
1306        bool "Enable signalfd() system call" if EXPERT
1307        select ANON_INODES
1308        default y
1309        help
1310          Enable the signalfd() system call that allows to receive signals
1311          on a file descriptor.
1312
1313          If unsure, say Y.
1314
1315config TIMERFD
1316        bool "Enable timerfd() system call" if EXPERT
1317        select ANON_INODES
1318        default y
1319        help
1320          Enable the timerfd() system call that allows to receive timer
1321          events on a file descriptor.
1322
1323          If unsure, say Y.
1324
1325config EVENTFD
1326        bool "Enable eventfd() system call" if EXPERT
1327        select ANON_INODES
1328        default y
1329        help
1330          Enable the eventfd() system call that allows to receive both
1331          kernel notification (ie. KAIO) or userspace notifications.
1332
1333          If unsure, say Y.
1334
1335# syscall, maps, verifier
1336config BPF_SYSCALL
1337        bool "Enable bpf() system call"
1338        select ANON_INODES
1339        select BPF
1340        default n
1341        help
1342          Enable the bpf() system call that allows to manipulate eBPF
1343          programs and maps via file descriptors.
1344
1345config SHMEM
1346        bool "Use full shmem filesystem" if EXPERT
1347        default y
1348        depends on MMU
1349        help
1350          The shmem is an internal filesystem used to manage shared memory.
1351          It is backed by swap and manages resource limits. It is also exported
1352          to userspace as tmpfs if TMPFS is enabled. Disabling this
1353          option replaces shmem and tmpfs with the much simpler ramfs code,
1354          which may be appropriate on small systems without swap.
1355
1356config AIO
1357        bool "Enable AIO support" if EXPERT
1358        default y
1359        help
1360          This option enables POSIX asynchronous I/O which may by used
1361          by some high performance threaded applications. Disabling
1362          this option saves about 7k.
1363
1364config ADVISE_SYSCALLS
1365        bool "Enable madvise/fadvise syscalls" if EXPERT
1366        default y
1367        help
1368          This option enables the madvise and fadvise syscalls, used by
1369          applications to advise the kernel about their future memory or file
1370          usage, improving performance. If building an embedded system where no
1371          applications use these syscalls, you can disable this option to save
1372          space.
1373
1374config USERFAULTFD
1375        bool "Enable userfaultfd() system call"
1376        select ANON_INODES
1377        depends on MMU
1378        help
1379          Enable the userfaultfd() system call that allows to intercept and
1380          handle page faults in userland.
1381
1382config PCI_QUIRKS
1383        default y
1384        bool "Enable PCI quirk workarounds" if EXPERT
1385        depends on PCI
1386        help
1387          This enables workarounds for various PCI chipset
1388          bugs/quirks. Disable this only if your target machine is
1389          unaffected by PCI quirks.
1390
1391config MEMBARRIER
1392        bool "Enable membarrier() system call" if EXPERT
1393        default y
1394        help
1395          Enable the membarrier() system call that allows issuing memory
1396          barriers across all running threads, which can be used to distribute
1397          the cost of user-space memory barriers asymmetrically by transforming
1398          pairs of memory barriers into pairs consisting of membarrier() and a
1399          compiler barrier.
1400
1401          If unsure, say Y.
1402
1403config EMBEDDED
1404        bool "Embedded system"
1405        option allnoconfig_y
1406        select EXPERT
1407        help
1408          This option should be enabled if compiling the kernel for
1409          an embedded system so certain expert options are available
1410          for configuration.
1411
1412config HAVE_PERF_EVENTS
1413        bool
1414        help
1415          See tools/perf/design.txt for details.
1416
1417config PERF_USE_VMALLOC
1418        bool
1419        help
1420          See tools/perf/design.txt for details
1421
1422config PC104
1423        bool "PC/104 support"
1424        help
1425          Expose PC/104 form factor device drivers and options available for
1426          selection and configuration. Enable this option if your target
1427          machine has a PC/104 bus.
1428
1429menu "Kernel Performance Events And Counters"
1430
1431config PERF_EVENTS
1432        bool "Kernel performance events and counters"
1433        default y if PROFILING
1434        depends on HAVE_PERF_EVENTS
1435        select ANON_INODES
1436        select IRQ_WORK
1437        select SRCU
1438        help
1439          Enable kernel support for various performance events provided
1440          by software and hardware.
1441
1442          Software events are supported either built-in or via the
1443          use of generic tracepoints.
1444
1445          Most modern CPUs support performance events via performance
1446          counter registers. These registers count the number of certain
1447          types of hw events: such as instructions executed, cachemisses
1448          suffered, or branches mis-predicted - without slowing down the
1449          kernel or applications. These registers can also trigger interrupts
1450          when a threshold number of events have passed - and can thus be
1451          used to profile the code that runs on that CPU.
1452
1453          The Linux Performance Event subsystem provides an abstraction of
1454          these software and hardware event capabilities, available via a
1455          system call and used by the "perf" utility in tools/perf/. It
1456          provides per task and per CPU counters, and it provides event
1457          capabilities on top of those.
1458
1459          Say Y if unsure.
1460
1461config DEBUG_PERF_USE_VMALLOC
1462        default n
1463        bool "Debug: use vmalloc to back perf mmap() buffers"
1464        depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
1465        select PERF_USE_VMALLOC
1466        help
1467         Use vmalloc memory to back perf mmap() buffers.
1468
1469         Mostly useful for debugging the vmalloc code on platforms
1470         that don't require it.
1471
1472         Say N if unsure.
1473
1474endmenu
1475
1476config VM_EVENT_COUNTERS
1477        default y
1478        bool "Enable VM event counters for /proc/vmstat" if EXPERT
1479        help
1480          VM event counters are needed for event counts to be shown.
1481          This option allows the disabling of the VM event counters
1482          on EXPERT systems.  /proc/vmstat will only show page counts
1483          if VM event counters are disabled.
1484
1485config SLUB_DEBUG
1486        default y
1487        bool "Enable SLUB debugging support" if EXPERT
1488        depends on SLUB && SYSFS
1489        help
1490          SLUB has extensive debug support features. Disabling these can
1491          result in significant savings in code size. This also disables
1492          SLUB sysfs support. /sys/slab will not exist and there will be
1493          no support for cache validation etc.
1494
1495config SLUB_MEMCG_SYSFS_ON
1496        default n
1497        bool "Enable memcg SLUB sysfs support by default" if EXPERT
1498        depends on SLUB && SYSFS && MEMCG
1499        help
1500          SLUB creates a directory under /sys/kernel/slab for each
1501          allocation cache to host info and debug files. If memory
1502          cgroup is enabled, each cache can have per memory cgroup
1503          caches. SLUB can create the same sysfs directories for these
1504          caches under /sys/kernel/slab/CACHE/cgroup but it can lead
1505          to a very high number of debug files being created. This is
1506          controlled by slub_memcg_sysfs boot parameter and this
1507          config option determines the parameter's default value.
1508
1509config COMPAT_BRK
1510        bool "Disable heap randomization"
1511        default y
1512        help
1513          Randomizing heap placement makes heap exploits harder, but it
1514          also breaks ancient binaries (including anything libc5 based).
1515          This option changes the bootup default to heap randomization
1516          disabled, and can be overridden at runtime by setting
1517          /proc/sys/kernel/randomize_va_space to 2.
1518
1519          On non-ancient distros (post-2000 ones) N is usually a safe choice.
1520
1521choice
1522        prompt "Choose SLAB allocator"
1523        default SLUB
1524        help
1525           This option allows to select a slab allocator.
1526
1527config SLAB
1528        bool "SLAB"
1529        select HAVE_HARDENED_USERCOPY_ALLOCATOR
1530        help
1531          The regular slab allocator that is established and known to work
1532          well in all environments. It organizes cache hot objects in
1533          per cpu and per node queues.
1534
1535config SLUB
1536        bool "SLUB (Unqueued Allocator)"
1537        select HAVE_HARDENED_USERCOPY_ALLOCATOR
1538        help
1539           SLUB is a slab allocator that minimizes cache line usage
1540           instead of managing queues of cached objects (SLAB approach).
1541           Per cpu caching is realized using slabs of objects instead
1542           of queues of objects. SLUB can use memory efficiently
1543           and has enhanced diagnostics. SLUB is the default choice for
1544           a slab allocator.
1545
1546config SLOB
1547        depends on EXPERT
1548        bool "SLOB (Simple Allocator)"
1549        help
1550           SLOB replaces the stock allocator with a drastically simpler
1551           allocator. SLOB is generally more space efficient but
1552           does not perform as well on large systems.
1553
1554endchoice
1555
1556config SLAB_MERGE_DEFAULT
1557        bool "Allow slab caches to be merged"
1558        default y
1559        help
1560          For reduced kernel memory fragmentation, slab caches can be
1561          merged when they share the same size and other characteristics.
1562          This carries a risk of kernel heap overflows being able to
1563          overwrite objects from merged caches (and more easily control
1564          cache layout), which makes such heap attacks easier to exploit
1565          by attackers. By keeping caches unmerged, these kinds of exploits
1566          can usually only damage objects in the same cache. To disable
1567          merging at runtime, "slab_nomerge" can be passed on the kernel
1568          command line.
1569
1570config SLAB_FREELIST_RANDOM
1571        default n
1572        depends on SLAB || SLUB
1573        bool "SLAB freelist randomization"
1574        help
1575          Randomizes the freelist order used on creating new pages. This
1576          security feature reduces the predictability of the kernel slab
1577          allocator against heap overflows.
1578
1579config SLAB_FREELIST_HARDENED
1580        bool "Harden slab freelist metadata"
1581        depends on SLUB
1582        help
1583          Many kernel heap attacks try to target slab cache metadata and
1584          other infrastructure. This options makes minor performance
1585          sacrifies to harden the kernel slab allocator against common
1586          freelist exploit methods.
1587
1588config SLUB_CPU_PARTIAL
1589        default y
1590        depends on SLUB && SMP
1591        bool "SLUB per cpu partial cache"
1592        help
1593          Per cpu partial caches accellerate objects allocation and freeing
1594          that is local to a processor at the price of more indeterminism
1595          in the latency of the free. On overflow these caches will be cleared
1596          which requires the taking of locks that may cause latency spikes.
1597          Typically one would choose no for a realtime system.
1598
1599config MMAP_ALLOW_UNINITIALIZED
1600        bool "Allow mmapped anonymous memory to be uninitialized"
1601        depends on EXPERT && !MMU
1602        default n
1603        help
1604          Normally, and according to the Linux spec, anonymous memory obtained
1605          from mmap() has it's contents cleared before it is passed to
1606          userspace.  Enabling this config option allows you to request that
1607          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1608          providing a huge performance boost.  If this option is not enabled,
1609          then the flag will be ignored.
1610
1611          This is taken advantage of by uClibc's malloc(), and also by
1612          ELF-FDPIC binfmt's brk and stack allocator.
1613
1614          Because of the obvious security issues, this option should only be
1615          enabled on embedded devices where you control what is run in
1616          userspace.  Since that isn't generally a problem on no-MMU systems,
1617          it is normally safe to say Y here.
1618
1619          See Documentation/nommu-mmap.txt for more information.
1620
1621config SYSTEM_DATA_VERIFICATION
1622        def_bool n
1623        select SYSTEM_TRUSTED_KEYRING
1624        select KEYS
1625        select CRYPTO
1626        select CRYPTO_RSA
1627        select ASYMMETRIC_KEY_TYPE
1628        select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
1629        select ASN1
1630        select OID_REGISTRY
1631        select X509_CERTIFICATE_PARSER
1632        select PKCS7_MESSAGE_PARSER
1633        help
1634          Provide PKCS#7 message verification using the contents of the system
1635          trusted keyring to provide public keys.  This then can be used for
1636          module verification, kexec image verification and firmware blob
1637          verification.
1638
1639config PROFILING
1640        bool "Profiling support"
1641        help
1642          Say Y here to enable the extended profiling support mechanisms used
1643          by profilers such as OProfile.
1644
1645#
1646# Place an empty function call at each tracepoint site. Can be
1647# dynamically changed for a probe function.
1648#
1649config TRACEPOINTS
1650        bool
1651
1652source "arch/Kconfig"
1653
1654endmenu         # General setup
1655
1656config HAVE_GENERIC_DMA_COHERENT
1657        bool
1658        default n
1659
1660config SLABINFO
1661        bool
1662        depends on PROC_FS
1663        depends on SLAB || SLUB_DEBUG
1664        default y
1665
1666config RT_MUTEXES
1667        bool
1668
1669config BASE_SMALL
1670        int
1671        default 0 if BASE_FULL
1672        default 1 if !BASE_FULL
1673
1674menuconfig MODULES
1675        bool "Enable loadable module support"
1676        option modules
1677        help
1678          Kernel modules are small pieces of compiled code which can
1679          be inserted in the running kernel, rather than being
1680          permanently built into the kernel.  You use the "modprobe"
1681          tool to add (and sometimes remove) them.  If you say Y here,
1682          many parts of the kernel can be built as modules (by
1683          answering M instead of Y where indicated): this is most
1684          useful for infrequently used options which are not required
1685          for booting.  For more information, see the man pages for
1686          modprobe, lsmod, modinfo, insmod and rmmod.
1687
1688          If you say Y here, you will need to run "make
1689          modules_install" to put the modules under /lib/modules/
1690          where modprobe can find them (you may need to be root to do
1691          this).
1692
1693          If unsure, say Y.
1694
1695if MODULES
1696
1697config MODULE_FORCE_LOAD
1698        bool "Forced module loading"
1699        default n
1700        help
1701          Allow loading of modules without version information (ie. modprobe
1702          --force).  Forced module loading sets the 'F' (forced) taint flag and
1703          is usually a really bad idea.
1704
1705config MODULE_UNLOAD
1706        bool "Module unloading"
1707        help
1708          Without this option you will not be able to unload any
1709          modules (note that some modules may not be unloadable
1710          anyway), which makes your kernel smaller, faster
1711          and simpler.  If unsure, say Y.
1712
1713config MODULE_FORCE_UNLOAD
1714        bool "Forced module unloading"
1715        depends on MODULE_UNLOAD
1716        help
1717          This option allows you to force a module to unload, even if the
1718          kernel believes it is unsafe: the kernel will remove the module
1719          without waiting for anyone to stop using it (using the -f option to
1720          rmmod).  This is mainly for kernel developers and desperate users.
1721          If unsure, say N.
1722
1723config MODVERSIONS
1724        bool "Module versioning support"
1725        help
1726          Usually, you have to use modules compiled with your kernel.
1727          Saying Y here makes it sometimes possible to use modules
1728          compiled for different kernels, by adding enough information
1729          to the modules to (hopefully) spot any changes which would
1730          make them incompatible with the kernel you are running.  If
1731          unsure, say N.
1732
1733config MODULE_REL_CRCS
1734        bool
1735        depends on MODVERSIONS
1736
1737config MODULE_SRCVERSION_ALL
1738        bool "Source checksum for all modules"
1739        help
1740          Modules which contain a MODULE_VERSION get an extra "srcversion"
1741          field inserted into their modinfo section, which contains a
1742          sum of the source files which made it.  This helps maintainers
1743          see exactly which source was used to build a module (since
1744          others sometimes change the module source without updating
1745          the version).  With this option, such a "srcversion" field
1746          will be created for all modules.  If unsure, say N.
1747
1748config MODULE_SIG
1749        bool "Module signature verification"
1750        depends on MODULES
1751        select SYSTEM_DATA_VERIFICATION
1752        help
1753          Check modules for valid signatures upon load: the signature
1754          is simply appended to the module. For more information see
1755          Documentation/module-signing.txt.
1756
1757          Note that this option adds the OpenSSL development packages as a
1758          kernel build dependency so that the signing tool can use its crypto
1759          library.
1760
1761          !!!WARNING!!!  If you enable this option, you MUST make sure that the
1762          module DOES NOT get stripped after being signed.  This includes the
1763          debuginfo strip done by some packagers (such as rpmbuild) and
1764          inclusion into an initramfs that wants the module size reduced.
1765
1766config MODULE_SIG_FORCE
1767        bool "Require modules to be validly signed"
1768        depends on MODULE_SIG
1769        help
1770          Reject unsigned modules or signed modules for which we don't have a
1771          key.  Without this, such modules will simply taint the kernel.
1772
1773config MODULE_SIG_ALL
1774        bool "Automatically sign all modules"
1775        default y
1776        depends on MODULE_SIG
1777        help
1778          Sign all modules during make modules_install. Without this option,
1779          modules must be signed manually, using the scripts/sign-file tool.
1780
1781comment "Do not forget to sign required modules with scripts/sign-file"
1782        depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
1783
1784choice
1785        prompt "Which hash algorithm should modules be signed with?"
1786        depends on MODULE_SIG
1787        help
1788          This determines which sort of hashing algorithm will be used during
1789          signature generation.  This algorithm _must_ be built into the kernel
1790          directly so that signature verification can take place.  It is not
1791          possible to load a signed module containing the algorithm to check
1792          the signature on that module.
1793
1794config MODULE_SIG_SHA1
1795        bool "Sign modules with SHA-1"
1796        select CRYPTO_SHA1
1797
1798config MODULE_SIG_SHA224
1799        bool "Sign modules with SHA-224"
1800        select CRYPTO_SHA256
1801
1802config MODULE_SIG_SHA256
1803        bool "Sign modules with SHA-256"
1804        select CRYPTO_SHA256
1805
1806config MODULE_SIG_SHA384
1807        bool "Sign modules with SHA-384"
1808        select CRYPTO_SHA512
1809
1810config MODULE_SIG_SHA512
1811        bool "Sign modules with SHA-512"
1812        select CRYPTO_SHA512
1813
1814endchoice
1815
1816config MODULE_SIG_HASH
1817        string
1818        depends on MODULE_SIG
1819        default "sha1" if MODULE_SIG_SHA1
1820        default "sha224" if MODULE_SIG_SHA224
1821        default "sha256" if MODULE_SIG_SHA256
1822        default "sha384" if MODULE_SIG_SHA384
1823        default "sha512" if MODULE_SIG_SHA512
1824
1825config MODULE_COMPRESS
1826        bool "Compress modules on installation"
1827        depends on MODULES
1828        help
1829
1830          Compresses kernel modules when 'make modules_install' is run; gzip or
1831          xz depending on "Compression algorithm" below.
1832
1833          module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
1834
1835          Out-of-tree kernel modules installed using Kbuild will also be
1836          compressed upon installation.
1837
1838          Note: for modules inside an initrd or initramfs, it's more efficient
1839          to compress the whole initrd or initramfs instead.
1840
1841          Note: This is fully compatible with signed modules.
1842
1843          If in doubt, say N.
1844
1845choice
1846        prompt "Compression algorithm"
1847        depends on MODULE_COMPRESS
1848        default MODULE_COMPRESS_GZIP
1849        help
1850          This determines which sort of compression will be used during
1851          'make modules_install'.
1852
1853          GZIP (default) and XZ are supported.
1854
1855config MODULE_COMPRESS_GZIP
1856        bool "GZIP"
1857
1858config MODULE_COMPRESS_XZ
1859        bool "XZ"
1860
1861endchoice
1862
1863config TRIM_UNUSED_KSYMS
1864        bool "Trim unused exported kernel symbols"
1865        depends on MODULES && !UNUSED_SYMBOLS
1866        help
1867          The kernel and some modules make many symbols available for
1868          other modules to use via EXPORT_SYMBOL() and variants. Depending
1869          on the set of modules being selected in your kernel configuration,
1870          many of those exported symbols might never be used.
1871
1872          This option allows for unused exported symbols to be dropped from
1873          the build. In turn, this provides the compiler more opportunities
1874          (especially when using LTO) for optimizing the code and reducing
1875          binary size.  This might have some security advantages as well.
1876
1877          If unsure, or if you need to build out-of-tree modules, say N.
1878
1879endif # MODULES
1880
1881config MODULES_TREE_LOOKUP
1882        def_bool y
1883        depends on PERF_EVENTS || TRACING
1884
1885config INIT_ALL_POSSIBLE
1886        bool
1887        help
1888          Back when each arch used to define their own cpu_online_mask and
1889          cpu_possible_mask, some of them chose to initialize cpu_possible_mask
1890          with all 1s, and others with all 0s.  When they were centralised,
1891          it was better to provide this option than to break all the archs
1892          and have several arch maintainers pursuing me down dark alleys.
1893
1894source "block/Kconfig"
1895
1896config PREEMPT_NOTIFIERS
1897        bool
1898
1899config PADATA
1900        depends on SMP
1901        bool
1902
1903config ASN1
1904        tristate
1905        help
1906          Build a simple ASN.1 grammar compiler that produces a bytecode output
1907          that can be interpreted by the ASN.1 stream decoder and used to
1908          inform it as to what tags are to be expected in a stream and what
1909          functions to call on what tags.
1910
1911source "kernel/Kconfig.locks"
1912