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
 475menu "RCU Subsystem"
 476
 477config TREE_RCU
 478        bool
 479        default y if !PREEMPT && SMP
 480        help
 481          This option selects the RCU implementation that is
 482          designed for very large SMP system with hundreds or
 483          thousands of CPUs.  It also scales down nicely to
 484          smaller systems.
 485
 486config PREEMPT_RCU
 487        bool
 488        default y if PREEMPT
 489        help
 490          This option selects the RCU implementation that is
 491          designed for very large SMP systems with hundreds or
 492          thousands of CPUs, but for which real-time response
 493          is also required.  It also scales down nicely to
 494          smaller systems.
 495
 496          Select this option if you are unsure.
 497
 498config TINY_RCU
 499        bool
 500        default y if !PREEMPT && !SMP
 501        help
 502          This option selects the RCU implementation that is
 503          designed for UP systems from which real-time response
 504          is not required.  This option greatly reduces the
 505          memory footprint of RCU.
 506
 507config RCU_EXPERT
 508        bool "Make expert-level adjustments to RCU configuration"
 509        default n
 510        help
 511          This option needs to be enabled if you wish to make
 512          expert-level adjustments to RCU configuration.  By default,
 513          no such adjustments can be made, which has the often-beneficial
 514          side-effect of preventing "make oldconfig" from asking you all
 515          sorts of detailed questions about how you would like numerous
 516          obscure RCU options to be set up.
 517
 518          Say Y if you need to make expert-level adjustments to RCU.
 519
 520          Say N if you are unsure.
 521
 522config SRCU
 523        bool
 524        help
 525          This option selects the sleepable version of RCU. This version
 526          permits arbitrary sleeping or blocking within RCU read-side critical
 527          sections.
 528
 529config TASKS_RCU
 530        bool
 531        default n
 532        depends on !UML
 533        select SRCU
 534        help
 535          This option enables a task-based RCU implementation that uses
 536          only voluntary context switch (not preemption!), idle, and
 537          user-mode execution as quiescent states.
 538
 539config RCU_STALL_COMMON
 540        def_bool ( TREE_RCU || PREEMPT_RCU || RCU_TRACE )
 541        help
 542          This option enables RCU CPU stall code that is common between
 543          the TINY and TREE variants of RCU.  The purpose is to allow
 544          the tiny variants to disable RCU CPU stall warnings, while
 545          making these warnings mandatory for the tree variants.
 546
 547config CONTEXT_TRACKING
 548       bool
 549
 550config CONTEXT_TRACKING_FORCE
 551        bool "Force context tracking"
 552        depends on CONTEXT_TRACKING
 553        default y if !NO_HZ_FULL
 554        help
 555          The major pre-requirement for full dynticks to work is to
 556          support the context tracking subsystem. But there are also
 557          other dependencies to provide in order to make the full
 558          dynticks working.
 559
 560          This option stands for testing when an arch implements the
 561          context tracking backend but doesn't yet fullfill all the
 562          requirements to make the full dynticks feature working.
 563          Without the full dynticks, there is no way to test the support
 564          for context tracking and the subsystems that rely on it: RCU
 565          userspace extended quiescent state and tickless cputime
 566          accounting. This option copes with the absence of the full
 567          dynticks subsystem by forcing the context tracking on all
 568          CPUs in the system.
 569
 570          Say Y only if you're working on the development of an
 571          architecture backend for the context tracking.
 572
 573          Say N otherwise, this option brings an overhead that you
 574          don't want in production.
 575
 576
 577config RCU_FANOUT
 578        int "Tree-based hierarchical RCU fanout value"
 579        range 2 64 if 64BIT
 580        range 2 32 if !64BIT
 581        depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
 582        default 64 if 64BIT
 583        default 32 if !64BIT
 584        help
 585          This option controls the fanout of hierarchical implementations
 586          of RCU, allowing RCU to work efficiently on machines with
 587          large numbers of CPUs.  This value must be at least the fourth
 588          root of NR_CPUS, which allows NR_CPUS to be insanely large.
 589          The default value of RCU_FANOUT should be used for production
 590          systems, but if you are stress-testing the RCU implementation
 591          itself, small RCU_FANOUT values allow you to test large-system
 592          code paths on small(er) systems.
 593
 594          Select a specific number if testing RCU itself.
 595          Take the default if unsure.
 596
 597config RCU_FANOUT_LEAF
 598        int "Tree-based hierarchical RCU leaf-level fanout value"
 599        range 2 64 if 64BIT
 600        range 2 32 if !64BIT
 601        depends on (TREE_RCU || PREEMPT_RCU) && RCU_EXPERT
 602        default 16
 603        help
 604          This option controls the leaf-level fanout of hierarchical
 605          implementations of RCU, and allows trading off cache misses
 606          against lock contention.  Systems that synchronize their
 607          scheduling-clock interrupts for energy-efficiency reasons will
 608          want the default because the smaller leaf-level fanout keeps
 609          lock contention levels acceptably low.  Very large systems
 610          (hundreds or thousands of CPUs) will instead want to set this
 611          value to the maximum value possible in order to reduce the
 612          number of cache misses incurred during RCU's grace-period
 613          initialization.  These systems tend to run CPU-bound, and thus
 614          are not helped by synchronized interrupts, and thus tend to
 615          skew them, which reduces lock contention enough that large
 616          leaf-level fanouts work well.
 617
 618          Select a specific number if testing RCU itself.
 619
 620          Select the maximum permissible value for large systems.
 621
 622          Take the default if unsure.
 623
 624config RCU_FAST_NO_HZ
 625        bool "Accelerate last non-dyntick-idle CPU's grace periods"
 626        depends on NO_HZ_COMMON && SMP && RCU_EXPERT
 627        default n
 628        help
 629          This option permits CPUs to enter dynticks-idle state even if
 630          they have RCU callbacks queued, and prevents RCU from waking
 631          these CPUs up more than roughly once every four jiffies (by
 632          default, you can adjust this using the rcutree.rcu_idle_gp_delay
 633          parameter), thus improving energy efficiency.  On the other
 634          hand, this option increases the duration of RCU grace periods,
 635          for example, slowing down synchronize_rcu().
 636
 637          Say Y if energy efficiency is critically important, and you
 638                don't care about increased grace-period durations.
 639
 640          Say N if you are unsure.
 641
 642config TREE_RCU_TRACE
 643        def_bool RCU_TRACE && ( TREE_RCU || PREEMPT_RCU )
 644        select DEBUG_FS
 645        help
 646          This option provides tracing for the TREE_RCU and
 647          PREEMPT_RCU implementations, permitting Makefile to
 648          trivially select kernel/rcutree_trace.c.
 649
 650config RCU_BOOST
 651        bool "Enable RCU priority boosting"
 652        depends on RT_MUTEXES && PREEMPT_RCU && RCU_EXPERT
 653        default n
 654        help
 655          This option boosts the priority of preempted RCU readers that
 656          block the current preemptible RCU grace period for too long.
 657          This option also prevents heavy loads from blocking RCU
 658          callback invocation for all flavors of RCU.
 659
 660          Say Y here if you are working with real-time apps or heavy loads
 661          Say N here if you are unsure.
 662
 663config RCU_KTHREAD_PRIO
 664        int "Real-time priority to use for RCU worker threads"
 665        range 1 99 if RCU_BOOST
 666        range 0 99 if !RCU_BOOST
 667        default 1 if RCU_BOOST
 668        default 0 if !RCU_BOOST
 669        depends on RCU_EXPERT
 670        help
 671          This option specifies the SCHED_FIFO priority value that will be
 672          assigned to the rcuc/n and rcub/n threads and is also the value
 673          used for RCU_BOOST (if enabled). If you are working with a
 674          real-time application that has one or more CPU-bound threads
 675          running at a real-time priority level, you should set
 676          RCU_KTHREAD_PRIO to a priority higher than the highest-priority
 677          real-time CPU-bound application thread.  The default RCU_KTHREAD_PRIO
 678          value of 1 is appropriate in the common case, which is real-time
 679          applications that do not have any CPU-bound threads.
 680
 681          Some real-time applications might not have a single real-time
 682          thread that saturates a given CPU, but instead might have
 683          multiple real-time threads that, taken together, fully utilize
 684          that CPU.  In this case, you should set RCU_KTHREAD_PRIO to
 685          a priority higher than the lowest-priority thread that is
 686          conspiring to prevent the CPU from running any non-real-time
 687          tasks.  For example, if one thread at priority 10 and another
 688          thread at priority 5 are between themselves fully consuming
 689          the CPU time on a given CPU, then RCU_KTHREAD_PRIO should be
 690          set to priority 6 or higher.
 691
 692          Specify the real-time priority, or take the default if unsure.
 693
 694config RCU_BOOST_DELAY
 695        int "Milliseconds to delay boosting after RCU grace-period start"
 696        range 0 3000
 697        depends on RCU_BOOST
 698        default 500
 699        help
 700          This option specifies the time to wait after the beginning of
 701          a given grace period before priority-boosting preempted RCU
 702          readers blocking that grace period.  Note that any RCU reader
 703          blocking an expedited RCU grace period is boosted immediately.
 704
 705          Accept the default if unsure.
 706
 707config RCU_NOCB_CPU
 708        bool "Offload RCU callback processing from boot-selected CPUs"
 709        depends on TREE_RCU || PREEMPT_RCU
 710        depends on RCU_EXPERT || NO_HZ_FULL
 711        default n
 712        help
 713          Use this option to reduce OS jitter for aggressive HPC or
 714          real-time workloads.  It can also be used to offload RCU
 715          callback invocation to energy-efficient CPUs in battery-powered
 716          asymmetric multiprocessors.
 717
 718          This option offloads callback invocation from the set of
 719          CPUs specified at boot time by the rcu_nocbs parameter.
 720          For each such CPU, a kthread ("rcuox/N") will be created to
 721          invoke callbacks, where the "N" is the CPU being offloaded,
 722          and where the "x" is "b" for RCU-bh, "p" for RCU-preempt, and
 723          "s" for RCU-sched.  Nothing prevents this kthread from running
 724          on the specified CPUs, but (1) the kthreads may be preempted
 725          between each callback, and (2) affinity or cgroups can be used
 726          to force the kthreads to run on whatever set of CPUs is desired.
 727
 728          Say Y here if you want to help to debug reduced OS jitter.
 729          Say N here if you are unsure.
 730
 731choice
 732        prompt "Build-forced no-CBs CPUs"
 733        default RCU_NOCB_CPU_NONE
 734        depends on RCU_NOCB_CPU
 735        help
 736          This option allows no-CBs CPUs (whose RCU callbacks are invoked
 737          from kthreads rather than from softirq context) to be specified
 738          at build time.  Additional no-CBs CPUs may be specified by
 739          the rcu_nocbs= boot parameter.
 740
 741config RCU_NOCB_CPU_NONE
 742        bool "No build_forced no-CBs CPUs"
 743        help
 744          This option does not force any of the CPUs to be no-CBs CPUs.
 745          Only CPUs designated by the rcu_nocbs= boot parameter will be
 746          no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU
 747          kthreads whose names begin with "rcuo".  All other CPUs will
 748          invoke their own RCU callbacks in softirq context.
 749
 750          Select this option if you want to choose no-CBs CPUs at
 751          boot time, for example, to allow testing of different no-CBs
 752          configurations without having to rebuild the kernel each time.
 753
 754config RCU_NOCB_CPU_ZERO
 755        bool "CPU 0 is a build_forced no-CBs CPU"
 756        help
 757          This option forces CPU 0 to be a no-CBs CPU, so that its RCU
 758          callbacks are invoked by a per-CPU kthread whose name begins
 759          with "rcuo".  Additional CPUs may be designated as no-CBs
 760          CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs.
 761          All other CPUs will invoke their own RCU callbacks in softirq
 762          context.
 763
 764          Select this if CPU 0 needs to be a no-CBs CPU for real-time
 765          or energy-efficiency reasons, but the real reason it exists
 766          is to ensure that randconfig testing covers mixed systems.
 767
 768config RCU_NOCB_CPU_ALL
 769        bool "All CPUs are build_forced no-CBs CPUs"
 770        help
 771          This option forces all CPUs to be no-CBs CPUs.  The rcu_nocbs=
 772          boot parameter will be ignored.  All CPUs' RCU callbacks will
 773          be executed in the context of per-CPU rcuo kthreads created for
 774          this purpose.  Assuming that the kthreads whose names start with
 775          "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter
 776          on the remaining CPUs, but might decrease memory locality during
 777          RCU-callback invocation, thus potentially degrading throughput.
 778
 779          Select this if all CPUs need to be no-CBs CPUs for real-time
 780          or energy-efficiency reasons.
 781
 782endchoice
 783
 784config RCU_EXPEDITE_BOOT
 785        bool
 786        default n
 787        help
 788          This option enables expedited grace periods at boot time,
 789          as if rcu_expedite_gp() had been invoked early in boot.
 790          The corresponding rcu_unexpedite_gp() is invoked from
 791          rcu_end_inkernel_boot(), which is intended to be invoked
 792          at the end of the kernel-only boot sequence, just before
 793          init is exec'ed.
 794
 795          Accept the default if unsure.
 796
 797endmenu # "RCU Subsystem"
 798
 799config BUILD_BIN2C
 800        bool
 801        default n
 802
 803config IKCONFIG
 804        tristate "Kernel .config support"
 805        select BUILD_BIN2C
 806        ---help---
 807          This option enables the complete Linux kernel ".config" file
 808          contents to be saved in the kernel. It provides documentation
 809          of which kernel options are used in a running kernel or in an
 810          on-disk kernel.  This information can be extracted from the kernel
 811          image file with the script scripts/extract-ikconfig and used as
 812          input to rebuild the current kernel or to build another kernel.
 813          It can also be extracted from a running kernel by reading
 814          /proc/config.gz if enabled (below).
 815
 816config IKCONFIG_PROC
 817        bool "Enable access to .config through /proc/config.gz"
 818        depends on IKCONFIG && PROC_FS
 819        ---help---
 820          This option enables access to the kernel configuration file
 821          through /proc/config.gz.
 822
 823config LOG_BUF_SHIFT
 824        int "Kernel log buffer size (16 => 64KB, 17 => 128KB)"
 825        range 12 25
 826        default 17
 827        depends on PRINTK
 828        help
 829          Select the minimal kernel log buffer size as a power of 2.
 830          The final size is affected by LOG_CPU_MAX_BUF_SHIFT config
 831          parameter, see below. Any higher size also might be forced
 832          by "log_buf_len" boot parameter.
 833
 834          Examples:
 835                     17 => 128 KB
 836                     16 => 64 KB
 837                     15 => 32 KB
 838                     14 => 16 KB
 839                     13 =>  8 KB
 840                     12 =>  4 KB
 841
 842config LOG_CPU_MAX_BUF_SHIFT
 843        int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)"
 844        depends on SMP
 845        range 0 21
 846        default 12 if !BASE_SMALL
 847        default 0 if BASE_SMALL
 848        depends on PRINTK
 849        help
 850          This option allows to increase the default ring buffer size
 851          according to the number of CPUs. The value defines the contribution
 852          of each CPU as a power of 2. The used space is typically only few
 853          lines however it might be much more when problems are reported,
 854          e.g. backtraces.
 855
 856          The increased size means that a new buffer has to be allocated and
 857          the original static one is unused. It makes sense only on systems
 858          with more CPUs. Therefore this value is used only when the sum of
 859          contributions is greater than the half of the default kernel ring
 860          buffer as defined by LOG_BUF_SHIFT. The default values are set
 861          so that more than 64 CPUs are needed to trigger the allocation.
 862
 863          Also this option is ignored when "log_buf_len" kernel parameter is
 864          used as it forces an exact (power of two) size of the ring buffer.
 865
 866          The number of possible CPUs is used for this computation ignoring
 867          hotplugging making the computation optimal for the worst case
 868          scenario while allowing a simple algorithm to be used from bootup.
 869
 870          Examples shift values and their meaning:
 871                     17 => 128 KB for each CPU
 872                     16 =>  64 KB for each CPU
 873                     15 =>  32 KB for each CPU
 874                     14 =>  16 KB for each CPU
 875                     13 =>   8 KB for each CPU
 876                     12 =>   4 KB for each CPU
 877
 878config NMI_LOG_BUF_SHIFT
 879        int "Temporary per-CPU NMI log buffer size (12 => 4KB, 13 => 8KB)"
 880        range 10 21
 881        default 13
 882        depends on PRINTK_NMI
 883        help
 884          Select the size of a per-CPU buffer where NMI messages are temporary
 885          stored. They are copied to the main log buffer in a safe context
 886          to avoid a deadlock. The value defines the size as a power of 2.
 887
 888          NMI messages are rare and limited. The largest one is when
 889          a backtrace is printed. It usually fits into 4KB. Select
 890          8KB if you want to be on the safe side.
 891
 892          Examples:
 893                     17 => 128 KB for each CPU
 894                     16 =>  64 KB for each CPU
 895                     15 =>  32 KB for each CPU
 896                     14 =>  16 KB for each CPU
 897                     13 =>   8 KB for each CPU
 898                     12 =>   4 KB for each CPU
 899
 900#
 901# Architectures with an unreliable sched_clock() should select this:
 902#
 903config HAVE_UNSTABLE_SCHED_CLOCK
 904        bool
 905
 906config GENERIC_SCHED_CLOCK
 907        bool
 908
 909#
 910# For architectures that want to enable the support for NUMA-affine scheduler
 911# balancing logic:
 912#
 913config ARCH_SUPPORTS_NUMA_BALANCING
 914        bool
 915
 916#
 917# For architectures that prefer to flush all TLBs after a number of pages
 918# are unmapped instead of sending one IPI per page to flush. The architecture
 919# must provide guarantees on what happens if a clean TLB cache entry is
 920# written after the unmap. Details are in mm/rmap.c near the check for
 921# should_defer_flush. The architecture should also consider if the full flush
 922# and the refill costs are offset by the savings of sending fewer IPIs.
 923config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH
 924        bool
 925
 926#
 927# For architectures that know their GCC __int128 support is sound
 928#
 929config ARCH_SUPPORTS_INT128
 930        bool
 931
 932# For architectures that (ab)use NUMA to represent different memory regions
 933# all cpu-local but of different latencies, such as SuperH.
 934#
 935config ARCH_WANT_NUMA_VARIABLE_LOCALITY
 936        bool
 937
 938config NUMA_BALANCING
 939        bool "Memory placement aware NUMA scheduler"
 940        depends on ARCH_SUPPORTS_NUMA_BALANCING
 941        depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY
 942        depends on SMP && NUMA && MIGRATION
 943        help
 944          This option adds support for automatic NUMA aware memory/task placement.
 945          The mechanism is quite primitive and is based on migrating memory when
 946          it has references to the node the task is running on.
 947
 948          This system will be inactive on UMA systems.
 949
 950config NUMA_BALANCING_DEFAULT_ENABLED
 951        bool "Automatically enable NUMA aware memory/task placement"
 952        default y
 953        depends on NUMA_BALANCING
 954        help
 955          If set, automatic NUMA balancing will be enabled if running on a NUMA
 956          machine.
 957
 958menuconfig CGROUPS
 959        bool "Control Group support"
 960        select KERNFS
 961        help
 962          This option adds support for grouping sets of processes together, for
 963          use with process control subsystems such as Cpusets, CFS, memory
 964          controls or device isolation.
 965          See
 966                - Documentation/scheduler/sched-design-CFS.txt  (CFS)
 967                - Documentation/cgroup-v1/ (features for grouping, isolation
 968                                          and resource control)
 969
 970          Say N if unsure.
 971
 972if CGROUPS
 973
 974config PAGE_COUNTER
 975       bool
 976
 977config MEMCG
 978        bool "Memory controller"
 979        select PAGE_COUNTER
 980        select EVENTFD
 981        help
 982          Provides control over the memory footprint of tasks in a cgroup.
 983
 984config MEMCG_SWAP
 985        bool "Swap controller"
 986        depends on MEMCG && SWAP
 987        help
 988          Provides control over the swap space consumed by tasks in a cgroup.
 989
 990config MEMCG_SWAP_ENABLED
 991        bool "Swap controller enabled by default"
 992        depends on MEMCG_SWAP
 993        default y
 994        help
 995          Memory Resource Controller Swap Extension comes with its price in
 996          a bigger memory consumption. General purpose distribution kernels
 997          which want to enable the feature but keep it disabled by default
 998          and let the user enable it by swapaccount=1 boot command line
 999          parameter should have this option unselected.
1000          For those who want to have the feature enabled by default should
1001          select this option (if, for some reason, they need to disable it
1002          then swapaccount=0 does the trick).
1003
1004config BLK_CGROUP
1005        bool "IO controller"
1006        depends on BLOCK
1007        default n
1008        ---help---
1009        Generic block IO controller cgroup interface. This is the common
1010        cgroup interface which should be used by various IO controlling
1011        policies.
1012
1013        Currently, CFQ IO scheduler uses it to recognize task groups and
1014        control disk bandwidth allocation (proportional time slice allocation)
1015        to such task groups. It is also used by bio throttling logic in
1016        block layer to implement upper limit in IO rates on a device.
1017
1018        This option only enables generic Block IO controller infrastructure.
1019        One needs to also enable actual IO controlling logic/policy. For
1020        enabling proportional weight division of disk bandwidth in CFQ, set
1021        CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
1022        CONFIG_BLK_DEV_THROTTLING=y.
1023
1024        See Documentation/cgroup-v1/blkio-controller.txt for more information.
1025
1026config DEBUG_BLK_CGROUP
1027        bool "IO controller debugging"
1028        depends on BLK_CGROUP
1029        default n
1030        ---help---
1031        Enable some debugging help. Currently it exports additional stat
1032        files in a cgroup which can be useful for debugging.
1033
1034config CGROUP_WRITEBACK
1035        bool
1036        depends on MEMCG && BLK_CGROUP
1037        default y
1038
1039menuconfig CGROUP_SCHED
1040        bool "CPU controller"
1041        default n
1042        help
1043          This feature lets CPU scheduler recognize task groups and control CPU
1044          bandwidth allocation to such task groups. It uses cgroups to group
1045          tasks.
1046
1047if CGROUP_SCHED
1048config FAIR_GROUP_SCHED
1049        bool "Group scheduling for SCHED_OTHER"
1050        depends on CGROUP_SCHED
1051        default CGROUP_SCHED
1052
1053config CFS_BANDWIDTH
1054        bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
1055        depends on FAIR_GROUP_SCHED
1056        default n
1057        help
1058          This option allows users to define CPU bandwidth rates (limits) for
1059          tasks running within the fair group scheduler.  Groups with no limit
1060          set are considered to be unconstrained and will run with no
1061          restriction.
1062          See tip/Documentation/scheduler/sched-bwc.txt for more information.
1063
1064config RT_GROUP_SCHED
1065        bool "Group scheduling for SCHED_RR/FIFO"
1066        depends on CGROUP_SCHED
1067        default n
1068        help
1069          This feature lets you explicitly allocate real CPU bandwidth
1070          to task groups. If enabled, it will also make it impossible to
1071          schedule realtime tasks for non-root users until you allocate
1072          realtime bandwidth for them.
1073          See Documentation/scheduler/sched-rt-group.txt for more information.
1074
1075endif #CGROUP_SCHED
1076
1077config CGROUP_PIDS
1078        bool "PIDs controller"
1079        help
1080          Provides enforcement of process number limits in the scope of a
1081          cgroup. Any attempt to fork more processes than is allowed in the
1082          cgroup will fail. PIDs are fundamentally a global resource because it
1083          is fairly trivial to reach PID exhaustion before you reach even a
1084          conservative kmemcg limit. As a result, it is possible to grind a
1085          system to halt without being limited by other cgroup policies. The
1086          PIDs controller is designed to stop this from happening.
1087
1088          It should be noted that organisational operations (such as attaching
1089          to a cgroup hierarchy will *not* be blocked by the PIDs controller),
1090          since the PIDs limit only affects a process's ability to fork, not to
1091          attach to a cgroup.
1092
1093config CGROUP_FREEZER
1094        bool "Freezer controller"
1095        help
1096          Provides a way to freeze and unfreeze all tasks in a
1097          cgroup.
1098
1099          This option affects the ORIGINAL cgroup interface. The cgroup2 memory
1100          controller includes important in-kernel memory consumers per default.
1101
1102          If you're using cgroup2, say N.
1103
1104config CGROUP_HUGETLB
1105        bool "HugeTLB controller"
1106        depends on HUGETLB_PAGE
1107        select PAGE_COUNTER
1108        default n
1109        help
1110          Provides a cgroup controller for HugeTLB pages.
1111          When you enable this, you can put a per cgroup limit on HugeTLB usage.
1112          The limit is enforced during page fault. Since HugeTLB doesn't
1113          support page reclaim, enforcing the limit at page fault time implies
1114          that, the application will get SIGBUS signal if it tries to access
1115          HugeTLB pages beyond its limit. This requires the application to know
1116          beforehand how much HugeTLB pages it would require for its use. The
1117          control group is tracked in the third page lru pointer. This means
1118          that we cannot use the controller with huge page less than 3 pages.
1119
1120config CPUSETS
1121        bool "Cpuset controller"
1122        help
1123          This option will let you create and manage CPUSETs which
1124          allow dynamically partitioning a system into sets of CPUs and
1125          Memory Nodes and assigning tasks to run only within those sets.
1126          This is primarily useful on large SMP or NUMA systems.
1127
1128          Say N if unsure.
1129
1130config PROC_PID_CPUSET
1131        bool "Include legacy /proc/<pid>/cpuset file"
1132        depends on CPUSETS
1133        default y
1134
1135config CGROUP_DEVICE
1136        bool "Device controller"
1137        help
1138          Provides a cgroup controller implementing whitelists for
1139          devices which a process in the cgroup can mknod or open.
1140
1141config CGROUP_CPUACCT
1142        bool "Simple CPU accounting controller"
1143        help
1144          Provides a simple controller for monitoring the
1145          total CPU consumed by the tasks in a cgroup.
1146
1147config CGROUP_PERF
1148        bool "Perf controller"
1149        depends on PERF_EVENTS
1150        help
1151          This option extends the perf per-cpu mode to restrict monitoring
1152          to threads which belong to the cgroup specified and run on the
1153          designated cpu.
1154
1155          Say N if unsure.
1156
1157config CGROUP_DEBUG
1158        bool "Example controller"
1159        default n
1160        help
1161          This option enables a simple controller that exports
1162          debugging information about the cgroups framework.
1163
1164          Say N.
1165
1166endif # CGROUPS
1167
1168config CHECKPOINT_RESTORE
1169        bool "Checkpoint/restore support" if EXPERT
1170        select PROC_CHILDREN
1171        default n
1172        help
1173          Enables additional kernel features in a sake of checkpoint/restore.
1174          In particular it adds auxiliary prctl codes to setup process text,
1175          data and heap segment sizes, and a few additional /proc filesystem
1176          entries.
1177
1178          If unsure, say N here.
1179
1180menuconfig NAMESPACES
1181        bool "Namespaces support" if EXPERT
1182        depends on MULTIUSER
1183        default !EXPERT
1184        help
1185          Provides the way to make tasks work with different objects using
1186          the same id. For example same IPC id may refer to different objects
1187          or same user id or pid may refer to different tasks when used in
1188          different namespaces.
1189
1190if NAMESPACES
1191
1192config UTS_NS
1193        bool "UTS namespace"
1194        default y
1195        help
1196          In this namespace tasks see different info provided with the
1197          uname() system call
1198
1199config IPC_NS
1200        bool "IPC namespace"
1201        depends on (SYSVIPC || POSIX_MQUEUE)
1202        default y
1203        help
1204          In this namespace tasks work with IPC ids which correspond to
1205          different IPC objects in different namespaces.
1206
1207config USER_NS
1208        bool "User namespace"
1209        default n
1210        help
1211          This allows containers, i.e. vservers, to use user namespaces
1212          to provide different user info for different servers.
1213
1214          When user namespaces are enabled in the kernel it is
1215          recommended that the MEMCG option also be enabled and that
1216          user-space use the memory control groups to limit the amount
1217          of memory a memory unprivileged users can use.
1218
1219          If unsure, say N.
1220
1221config PID_NS
1222        bool "PID Namespaces"
1223        default y
1224        help
1225          Support process id namespaces.  This allows having multiple
1226          processes with the same pid as long as they are in different
1227          pid namespaces.  This is a building block of containers.
1228
1229config NET_NS
1230        bool "Network namespace"
1231        depends on NET
1232        default y
1233        help
1234          Allow user space to create what appear to be multiple instances
1235          of the network stack.
1236
1237endif # NAMESPACES
1238
1239config SCHED_AUTOGROUP
1240        bool "Automatic process group scheduling"
1241        select CGROUPS
1242        select CGROUP_SCHED
1243        select FAIR_GROUP_SCHED
1244        help
1245          This option optimizes the scheduler for common desktop workloads by
1246          automatically creating and populating task groups.  This separation
1247          of workloads isolates aggressive CPU burners (like build jobs) from
1248          desktop applications.  Task group autogeneration is currently based
1249          upon task session.
1250
1251config SYSFS_DEPRECATED
1252        bool "Enable deprecated sysfs features to support old userspace tools"
1253        depends on SYSFS
1254        default n
1255        help
1256          This option adds code that switches the layout of the "block" class
1257          devices, to not show up in /sys/class/block/, but only in
1258          /sys/block/.
1259
1260          This switch is only active when the sysfs.deprecated=1 boot option is
1261          passed or the SYSFS_DEPRECATED_V2 option is set.
1262
1263          This option allows new kernels to run on old distributions and tools,
1264          which might get confused by /sys/class/block/. Since 2007/2008 all
1265          major distributions and tools handle this just fine.
1266
1267          Recent distributions and userspace tools after 2009/2010 depend on
1268          the existence of /sys/class/block/, and will not work with this
1269          option enabled.
1270
1271          Only if you are using a new kernel on an old distribution, you might
1272          need to say Y here.
1273
1274config SYSFS_DEPRECATED_V2
1275        bool "Enable deprecated sysfs features by default"
1276        default n
1277        depends on SYSFS
1278        depends on SYSFS_DEPRECATED
1279        help
1280          Enable deprecated sysfs by default.
1281
1282          See the CONFIG_SYSFS_DEPRECATED option for more details about this
1283          option.
1284
1285          Only if you are using a new kernel on an old distribution, you might
1286          need to say Y here. Even then, odds are you would not need it
1287          enabled, you can always pass the boot option if absolutely necessary.
1288
1289config RELAY
1290        bool "Kernel->user space relay support (formerly relayfs)"
1291        select IRQ_WORK
1292        help
1293          This option enables support for relay interface support in
1294          certain file systems (such as debugfs).
1295          It is designed to provide an efficient mechanism for tools and
1296          facilities to relay large amounts of data from kernel space to
1297          user space.
1298
1299          If unsure, say N.
1300
1301config BLK_DEV_INITRD
1302        bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support"
1303        depends on BROKEN || !FRV
1304        help
1305          The initial RAM filesystem is a ramfs which is loaded by the
1306          boot loader (loadlin or lilo) and that is mounted as root
1307          before the normal boot procedure. It is typically used to
1308          load modules needed to mount the "real" root file system,
1309          etc. See <file:Documentation/initrd.txt> for details.
1310
1311          If RAM disk support (BLK_DEV_RAM) is also included, this
1312          also enables initial RAM disk (initrd) support and adds
1313          15 Kbytes (more on some other architectures) to the kernel size.
1314
1315          If unsure say Y.
1316
1317if BLK_DEV_INITRD
1318
1319source "usr/Kconfig"
1320
1321endif
1322
1323choice
1324        prompt "Compiler optimization level"
1325        default CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE
1326
1327config CC_OPTIMIZE_FOR_PERFORMANCE
1328        bool "Optimize for performance"
1329        help
1330          This is the default optimization level for the kernel, building
1331          with the "-O2" compiler flag for best performance and most
1332          helpful compile-time warnings.
1333
1334config CC_OPTIMIZE_FOR_SIZE
1335        bool "Optimize for size"
1336        help
1337          Enabling this option will pass "-Os" instead of "-O2" to
1338          your compiler resulting in a smaller kernel.
1339
1340          If unsure, say N.
1341
1342endchoice
1343
1344config SYSCTL
1345        bool
1346
1347config ANON_INODES
1348        bool
1349
1350config HAVE_UID16
1351        bool
1352
1353config SYSCTL_EXCEPTION_TRACE
1354        bool
1355        help
1356          Enable support for /proc/sys/debug/exception-trace.
1357
1358config SYSCTL_ARCH_UNALIGN_NO_WARN
1359        bool
1360        help
1361          Enable support for /proc/sys/kernel/ignore-unaligned-usertrap
1362          Allows arch to define/use @no_unaligned_warning to possibly warn
1363          about unaligned access emulation going on under the hood.
1364
1365config SYSCTL_ARCH_UNALIGN_ALLOW
1366        bool
1367        help
1368          Enable support for /proc/sys/kernel/unaligned-trap
1369          Allows arches to define/use @unaligned_enabled to runtime toggle
1370          the unaligned access emulation.
1371          see arch/parisc/kernel/unaligned.c for reference
1372
1373config HAVE_PCSPKR_PLATFORM
1374        bool
1375
1376# interpreter that classic socket filters depend on
1377config BPF
1378        bool
1379
1380menuconfig EXPERT
1381        bool "Configure standard kernel features (expert users)"
1382        # Unhide debug options, to make the on-by-default options visible
1383        select DEBUG_KERNEL
1384        help
1385          This option allows certain base kernel options and settings
1386          to be disabled or tweaked. This is for specialized
1387          environments which can tolerate a "non-standard" kernel.
1388          Only use this if you really know what you are doing.
1389
1390config UID16
1391        bool "Enable 16-bit UID system calls" if EXPERT
1392        depends on HAVE_UID16 && MULTIUSER
1393        default y
1394        help
1395          This enables the legacy 16-bit UID syscall wrappers.
1396
1397config MULTIUSER
1398        bool "Multiple users, groups and capabilities support" if EXPERT
1399        default y
1400        help
1401          This option enables support for non-root users, groups and
1402          capabilities.
1403
1404          If you say N here, all processes will run with UID 0, GID 0, and all
1405          possible capabilities.  Saying N here also compiles out support for
1406          system calls related to UIDs, GIDs, and capabilities, such as setuid,
1407          setgid, and capset.
1408
1409          If unsure, say Y here.
1410
1411config SGETMASK_SYSCALL
1412        bool "sgetmask/ssetmask syscalls support" if EXPERT
1413        def_bool PARISC || MN10300 || BLACKFIN || M68K || PPC || MIPS || X86 || SPARC || CRIS || MICROBLAZE || SUPERH
1414        ---help---
1415          sys_sgetmask and sys_ssetmask are obsolete system calls
1416          no longer supported in libc but still enabled by default in some
1417          architectures.
1418
1419          If unsure, leave the default option here.
1420
1421config SYSFS_SYSCALL
1422        bool "Sysfs syscall support" if EXPERT
1423        default y
1424        ---help---
1425          sys_sysfs is an obsolete system call no longer supported in libc.
1426          Note that disabling this option is more secure but might break
1427          compatibility with some systems.
1428
1429          If unsure say Y here.
1430
1431config SYSCTL_SYSCALL
1432        bool "Sysctl syscall support" if EXPERT
1433        depends on PROC_SYSCTL
1434        default n
1435        select SYSCTL
1436        ---help---
1437          sys_sysctl uses binary paths that have been found challenging
1438          to properly maintain and use.  The interface in /proc/sys
1439          using paths with ascii names is now the primary path to this
1440          information.
1441
1442          Almost nothing using the binary sysctl interface so if you are
1443          trying to save some space it is probably safe to disable this,
1444          making your kernel marginally smaller.
1445
1446          If unsure say N here.
1447
1448config KALLSYMS
1449         bool "Load all symbols for debugging/ksymoops" if EXPERT
1450         default y
1451         help
1452           Say Y here to let the kernel print out symbolic crash information and
1453           symbolic stack backtraces. This increases the size of the kernel
1454           somewhat, as all symbols have to be loaded into the kernel image.
1455
1456config KALLSYMS_ALL
1457        bool "Include all symbols in kallsyms"
1458        depends on DEBUG_KERNEL && KALLSYMS
1459        help
1460           Normally kallsyms only contains the symbols of functions for nicer
1461           OOPS messages and backtraces (i.e., symbols from the text and inittext
1462           sections). This is sufficient for most cases. And only in very rare
1463           cases (e.g., when a debugger is used) all symbols are required (e.g.,
1464           names of variables from the data sections, etc).
1465
1466           This option makes sure that all symbols are loaded into the kernel
1467           image (i.e., symbols from all sections) in cost of increased kernel
1468           size (depending on the kernel configuration, it may be 300KiB or
1469           something like this).
1470
1471           Say N unless you really need all symbols.
1472
1473config KALLSYMS_ABSOLUTE_PERCPU
1474        bool
1475        depends on KALLSYMS
1476        default X86_64 && SMP
1477
1478config KALLSYMS_BASE_RELATIVE
1479        bool
1480        depends on KALLSYMS
1481        default !IA64 && !(TILE && 64BIT)
1482        help
1483          Instead of emitting them as absolute values in the native word size,
1484          emit the symbol references in the kallsyms table as 32-bit entries,
1485          each containing a relative value in the range [base, base + U32_MAX]
1486          or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either
1487          an absolute value in the range [0, S32_MAX] or a relative value in the
1488          range [base, base + S32_MAX], where base is the lowest relative symbol
1489          address encountered in the image.
1490
1491          On 64-bit builds, this reduces the size of the address table by 50%,
1492          but more importantly, it results in entries whose values are build
1493          time constants, and no relocation pass is required at runtime to fix
1494          up the entries based on the runtime load address of the kernel.
1495
1496config PRINTK
1497        default y
1498        bool "Enable support for printk" if EXPERT
1499        select IRQ_WORK
1500        help
1501          This option enables normal printk support. Removing it
1502          eliminates most of the message strings from the kernel image
1503          and makes the kernel more or less silent. As this makes it
1504          very difficult to diagnose system problems, saying N here is
1505          strongly discouraged.
1506
1507config PRINTK_NMI
1508        def_bool y
1509        depends on PRINTK
1510        depends on HAVE_NMI
1511
1512config BUG
1513        bool "BUG() support" if EXPERT
1514        default y
1515        help
1516          Disabling this option eliminates support for BUG and WARN, reducing
1517          the size of your kernel image and potentially quietly ignoring
1518          numerous fatal conditions. You should only consider disabling this
1519          option for embedded systems with no facilities for reporting errors.
1520          Just say Y.
1521
1522config ELF_CORE
1523        depends on COREDUMP
1524        default y
1525        bool "Enable ELF core dumps" if EXPERT
1526        help
1527          Enable support for generating core dumps. Disabling saves about 4k.
1528
1529
1530config PCSPKR_PLATFORM
1531        bool "Enable PC-Speaker support" if EXPERT
1532        depends on HAVE_PCSPKR_PLATFORM
1533        select I8253_LOCK
1534        default y
1535        help
1536          This option allows to disable the internal PC-Speaker
1537          support, saving some memory.
1538
1539config BASE_FULL
1540        default y
1541        bool "Enable full-sized data structures for core" if EXPERT
1542        help
1543          Disabling this option reduces the size of miscellaneous core
1544          kernel data structures. This saves memory on small machines,
1545          but may reduce performance.
1546
1547config FUTEX
1548        bool "Enable futex support" if EXPERT
1549        default y
1550        select RT_MUTEXES
1551        help
1552          Disabling this option will cause the kernel to be built without
1553          support for "fast userspace mutexes".  The resulting kernel may not
1554          run glibc-based applications correctly.
1555
1556config HAVE_FUTEX_CMPXCHG
1557        bool
1558        depends on FUTEX
1559        help
1560          Architectures should select this if futex_atomic_cmpxchg_inatomic()
1561          is implemented and always working. This removes a couple of runtime
1562          checks.
1563
1564config EPOLL
1565        bool "Enable eventpoll support" if EXPERT
1566        default y
1567        select ANON_INODES
1568        help
1569          Disabling this option will cause the kernel to be built without
1570          support for epoll family of system calls.
1571
1572config SIGNALFD
1573        bool "Enable signalfd() system call" if EXPERT
1574        select ANON_INODES
1575        default y
1576        help
1577          Enable the signalfd() system call that allows to receive signals
1578          on a file descriptor.
1579
1580          If unsure, say Y.
1581
1582config TIMERFD
1583        bool "Enable timerfd() system call" if EXPERT
1584        select ANON_INODES
1585        default y
1586        help
1587          Enable the timerfd() system call that allows to receive timer
1588          events on a file descriptor.
1589
1590          If unsure, say Y.
1591
1592config EVENTFD
1593        bool "Enable eventfd() system call" if EXPERT
1594        select ANON_INODES
1595        default y
1596        help
1597          Enable the eventfd() system call that allows to receive both
1598          kernel notification (ie. KAIO) or userspace notifications.
1599
1600          If unsure, say Y.
1601
1602# syscall, maps, verifier
1603config BPF_SYSCALL
1604        bool "Enable bpf() system call"
1605        select ANON_INODES
1606        select BPF
1607        default n
1608        help
1609          Enable the bpf() system call that allows to manipulate eBPF
1610          programs and maps via file descriptors.
1611
1612config SHMEM
1613        bool "Use full shmem filesystem" if EXPERT
1614        default y
1615        depends on MMU
1616        help
1617          The shmem is an internal filesystem used to manage shared memory.
1618          It is backed by swap and manages resource limits. It is also exported
1619          to userspace as tmpfs if TMPFS is enabled. Disabling this
1620          option replaces shmem and tmpfs with the much simpler ramfs code,
1621          which may be appropriate on small systems without swap.
1622
1623config AIO
1624        bool "Enable AIO support" if EXPERT
1625        default y
1626        help
1627          This option enables POSIX asynchronous I/O which may by used
1628          by some high performance threaded applications. Disabling
1629          this option saves about 7k.
1630
1631config ADVISE_SYSCALLS
1632        bool "Enable madvise/fadvise syscalls" if EXPERT
1633        default y
1634        help
1635          This option enables the madvise and fadvise syscalls, used by
1636          applications to advise the kernel about their future memory or file
1637          usage, improving performance. If building an embedded system where no
1638          applications use these syscalls, you can disable this option to save
1639          space.
1640
1641config USERFAULTFD
1642        bool "Enable userfaultfd() system call"
1643        select ANON_INODES
1644        depends on MMU
1645        help
1646          Enable the userfaultfd() system call that allows to intercept and
1647          handle page faults in userland.
1648
1649config PCI_QUIRKS
1650        default y
1651        bool "Enable PCI quirk workarounds" if EXPERT
1652        depends on PCI
1653        help
1654          This enables workarounds for various PCI chipset
1655          bugs/quirks. Disable this only if your target machine is
1656          unaffected by PCI quirks.
1657
1658config MEMBARRIER
1659        bool "Enable membarrier() system call" if EXPERT
1660        default y
1661        help
1662          Enable the membarrier() system call that allows issuing memory
1663          barriers across all running threads, which can be used to distribute
1664          the cost of user-space memory barriers asymmetrically by transforming
1665          pairs of memory barriers into pairs consisting of membarrier() and a
1666          compiler barrier.
1667
1668          If unsure, say Y.
1669
1670config EMBEDDED
1671        bool "Embedded system"
1672        option allnoconfig_y
1673        select EXPERT
1674        help
1675          This option should be enabled if compiling the kernel for
1676          an embedded system so certain expert options are available
1677          for configuration.
1678
1679config HAVE_PERF_EVENTS
1680        bool
1681        help
1682          See tools/perf/design.txt for details.
1683
1684config PERF_USE_VMALLOC
1685        bool
1686        help
1687          See tools/perf/design.txt for details
1688
1689menu "Kernel Performance Events And Counters"
1690
1691config PERF_EVENTS
1692        bool "Kernel performance events and counters"
1693        default y if PROFILING
1694        depends on HAVE_PERF_EVENTS
1695        select ANON_INODES
1696        select IRQ_WORK
1697        select SRCU
1698        help
1699          Enable kernel support for various performance events provided
1700          by software and hardware.
1701
1702          Software events are supported either built-in or via the
1703          use of generic tracepoints.
1704
1705          Most modern CPUs support performance events via performance
1706          counter registers. These registers count the number of certain
1707          types of hw events: such as instructions executed, cachemisses
1708          suffered, or branches mis-predicted - without slowing down the
1709          kernel or applications. These registers can also trigger interrupts
1710          when a threshold number of events have passed - and can thus be
1711          used to profile the code that runs on that CPU.
1712
1713          The Linux Performance Event subsystem provides an abstraction of
1714          these software and hardware event capabilities, available via a
1715          system call and used by the "perf" utility in tools/perf/. It
1716          provides per task and per CPU counters, and it provides event
1717          capabilities on top of those.
1718
1719          Say Y if unsure.
1720
1721config DEBUG_PERF_USE_VMALLOC
1722        default n
1723        bool "Debug: use vmalloc to back perf mmap() buffers"
1724        depends on PERF_EVENTS && DEBUG_KERNEL && !PPC
1725        select PERF_USE_VMALLOC
1726        help
1727         Use vmalloc memory to back perf mmap() buffers.
1728
1729         Mostly useful for debugging the vmalloc code on platforms
1730         that don't require it.
1731
1732         Say N if unsure.
1733
1734endmenu
1735
1736config VM_EVENT_COUNTERS
1737        default y
1738        bool "Enable VM event counters for /proc/vmstat" if EXPERT
1739        help
1740          VM event counters are needed for event counts to be shown.
1741          This option allows the disabling of the VM event counters
1742          on EXPERT systems.  /proc/vmstat will only show page counts
1743          if VM event counters are disabled.
1744
1745config SLUB_DEBUG
1746        default y
1747        bool "Enable SLUB debugging support" if EXPERT
1748        depends on SLUB && SYSFS
1749        help
1750          SLUB has extensive debug support features. Disabling these can
1751          result in significant savings in code size. This also disables
1752          SLUB sysfs support. /sys/slab will not exist and there will be
1753          no support for cache validation etc.
1754
1755config COMPAT_BRK
1756        bool "Disable heap randomization"
1757        default y
1758        help
1759          Randomizing heap placement makes heap exploits harder, but it
1760          also breaks ancient binaries (including anything libc5 based).
1761          This option changes the bootup default to heap randomization
1762          disabled, and can be overridden at runtime by setting
1763          /proc/sys/kernel/randomize_va_space to 2.
1764
1765          On non-ancient distros (post-2000 ones) N is usually a safe choice.
1766
1767choice
1768        prompt "Choose SLAB allocator"
1769        default SLUB
1770        help
1771           This option allows to select a slab allocator.
1772
1773config SLAB
1774        bool "SLAB"
1775        select HAVE_HARDENED_USERCOPY_ALLOCATOR
1776        help
1777          The regular slab allocator that is established and known to work
1778          well in all environments. It organizes cache hot objects in
1779          per cpu and per node queues.
1780
1781config SLUB
1782        bool "SLUB (Unqueued Allocator)"
1783        select HAVE_HARDENED_USERCOPY_ALLOCATOR
1784        help
1785           SLUB is a slab allocator that minimizes cache line usage
1786           instead of managing queues of cached objects (SLAB approach).
1787           Per cpu caching is realized using slabs of objects instead
1788           of queues of objects. SLUB can use memory efficiently
1789           and has enhanced diagnostics. SLUB is the default choice for
1790           a slab allocator.
1791
1792config SLOB
1793        depends on EXPERT
1794        bool "SLOB (Simple Allocator)"
1795        help
1796           SLOB replaces the stock allocator with a drastically simpler
1797           allocator. SLOB is generally more space efficient but
1798           does not perform as well on large systems.
1799
1800endchoice
1801
1802config SLAB_FREELIST_RANDOM
1803        default n
1804        depends on SLAB || SLUB
1805        bool "SLAB freelist randomization"
1806        help
1807          Randomizes the freelist order used on creating new pages. This
1808          security feature reduces the predictability of the kernel slab
1809          allocator against heap overflows.
1810
1811config SLUB_CPU_PARTIAL
1812        default y
1813        depends on SLUB && SMP
1814        bool "SLUB per cpu partial cache"
1815        help
1816          Per cpu partial caches accellerate objects allocation and freeing
1817          that is local to a processor at the price of more indeterminism
1818          in the latency of the free. On overflow these caches will be cleared
1819          which requires the taking of locks that may cause latency spikes.
1820          Typically one would choose no for a realtime system.
1821
1822config MMAP_ALLOW_UNINITIALIZED
1823        bool "Allow mmapped anonymous memory to be uninitialized"
1824        depends on EXPERT && !MMU
1825        default n
1826        help
1827          Normally, and according to the Linux spec, anonymous memory obtained
1828          from mmap() has it's contents cleared before it is passed to
1829          userspace.  Enabling this config option allows you to request that
1830          mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus
1831          providing a huge performance boost.  If this option is not enabled,
1832          then the flag will be ignored.
1833
1834          This is taken advantage of by uClibc's malloc(), and also by
1835          ELF-FDPIC binfmt's brk and stack allocator.
1836
1837          Because of the obvious security issues, this option should only be
1838          enabled on embedded devices where you control what is run in
1839          userspace.  Since that isn't generally a problem on no-MMU systems,
1840          it is normally safe to say Y here.
1841
1842          See Documentation/nommu-mmap.txt for more information.
1843
1844config SYSTEM_DATA_VERIFICATION
1845        def_bool n
1846        select SYSTEM_TRUSTED_KEYRING
1847        select KEYS
1848        select CRYPTO
1849        select CRYPTO_RSA
1850        select ASYMMETRIC_KEY_TYPE
1851        select ASYMMETRIC_PUBLIC_KEY_SUBTYPE
1852        select ASN1
1853        select OID_REGISTRY
1854        select X509_CERTIFICATE_PARSER
1855        select PKCS7_MESSAGE_PARSER
1856        help
1857          Provide PKCS#7 message verification using the contents of the system
1858          trusted keyring to provide public keys.  This then can be used for
1859          module verification, kexec image verification and firmware blob
1860          verification.
1861
1862config PROFILING
1863        bool "Profiling support"
1864        help
1865          Say Y here to enable the extended profiling support mechanisms used
1866          by profilers such as OProfile.
1867
1868#
1869# Place an empty function call at each tracepoint site. Can be
1870# dynamically changed for a probe function.
1871#
1872config TRACEPOINTS
1873        bool
1874
1875source "arch/Kconfig"
1876
1877endmenu         # General setup
1878
1879config HAVE_GENERIC_DMA_COHERENT
1880        bool
1881        default n
1882
1883config SLABINFO
1884        bool
1885        depends on PROC_FS
1886        depends on SLAB || SLUB_DEBUG
1887        default y
1888
1889config RT_MUTEXES
1890        bool
1891
1892config BASE_SMALL
1893        int
1894        default 0 if BASE_FULL
1895        default 1 if !BASE_FULL
1896
1897menuconfig MODULES
1898        bool "Enable loadable module support"
1899        option modules
1900        help
1901          Kernel modules are small pieces of compiled code which can
1902          be inserted in the running kernel, rather than being
1903          permanently built into the kernel.  You use the "modprobe"
1904          tool to add (and sometimes remove) them.  If you say Y here,
1905          many parts of the kernel can be built as modules (by
1906          answering M instead of Y where indicated): this is most
1907          useful for infrequently used options which are not required
1908          for booting.  For more information, see the man pages for
1909          modprobe, lsmod, modinfo, insmod and rmmod.
1910
1911          If you say Y here, you will need to run "make
1912          modules_install" to put the modules under /lib/modules/
1913          where modprobe can find them (you may need to be root to do
1914          this).
1915
1916          If unsure, say Y.
1917
1918if MODULES
1919
1920config MODULE_FORCE_LOAD
1921        bool "Forced module loading"
1922        default n
1923        help
1924          Allow loading of modules without version information (ie. modprobe
1925          --force).  Forced module loading sets the 'F' (forced) taint flag and
1926          is usually a really bad idea.
1927
1928config MODULE_UNLOAD
1929        bool "Module unloading"
1930        help
1931          Without this option you will not be able to unload any
1932          modules (note that some modules may not be unloadable
1933          anyway), which makes your kernel smaller, faster
1934          and simpler.  If unsure, say Y.
1935
1936config MODULE_FORCE_UNLOAD
1937        bool "Forced module unloading"
1938        depends on MODULE_UNLOAD
1939        help
1940          This option allows you to force a module to unload, even if the
1941          kernel believes it is unsafe: the kernel will remove the module
1942          without waiting for anyone to stop using it (using the -f option to
1943          rmmod).  This is mainly for kernel developers and desperate users.
1944          If unsure, say N.
1945
1946config MODVERSIONS
1947        bool "Module versioning support"
1948        help
1949          Usually, you have to use modules compiled with your kernel.
1950          Saying Y here makes it sometimes possible to use modules
1951          compiled for different kernels, by adding enough information
1952          to the modules to (hopefully) spot any changes which would
1953          make them incompatible with the kernel you are running.  If
1954          unsure, say N.
1955
1956config MODULE_SRCVERSION_ALL
1957        bool "Source checksum for all modules"
1958        help
1959          Modules which contain a MODULE_VERSION get an extra "srcversion"
1960          field inserted into their modinfo section, which contains a
1961          sum of the source files which made it.  This helps maintainers
1962          see exactly which source was used to build a module (since
1963          others sometimes change the module source without updating
1964          the version).  With this option, such a "srcversion" field
1965          will be created for all modules.  If unsure, say N.
1966
1967config MODULE_SIG
1968        bool "Module signature verification"
1969        depends on MODULES
1970        select SYSTEM_DATA_VERIFICATION
1971        help
1972          Check modules for valid signatures upon load: the signature
1973          is simply appended to the module. For more information see
1974          Documentation/module-signing.txt.
1975
1976          Note that this option adds the OpenSSL development packages as a
1977          kernel build dependency so that the signing tool can use its crypto
1978          library.
1979
1980          !!!WARNING!!!  If you enable this option, you MUST make sure that the
1981          module DOES NOT get stripped after being signed.  This includes the
1982          debuginfo strip done by some packagers (such as rpmbuild) and
1983          inclusion into an initramfs that wants the module size reduced.
1984
1985config MODULE_SIG_FORCE
1986        bool "Require modules to be validly signed"
1987        depends on MODULE_SIG
1988        help
1989          Reject unsigned modules or signed modules for which we don't have a
1990          key.  Without this, such modules will simply taint the kernel.
1991
1992config MODULE_SIG_ALL
1993        bool "Automatically sign all modules"
1994        default y
1995        depends on MODULE_SIG
1996        help
1997          Sign all modules during make modules_install. Without this option,
1998          modules must be signed manually, using the scripts/sign-file tool.
1999
2000comment "Do not forget to sign required modules with scripts/sign-file"
2001        depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL
2002
2003choice
2004        prompt "Which hash algorithm should modules be signed with?"
2005        depends on MODULE_SIG
2006        help
2007          This determines which sort of hashing algorithm will be used during
2008          signature generation.  This algorithm _must_ be built into the kernel
2009          directly so that signature verification can take place.  It is not
2010          possible to load a signed module containing the algorithm to check
2011          the signature on that module.
2012
2013config MODULE_SIG_SHA1
2014        bool "Sign modules with SHA-1"
2015        select CRYPTO_SHA1
2016
2017config MODULE_SIG_SHA224
2018        bool "Sign modules with SHA-224"
2019        select CRYPTO_SHA256
2020
2021config MODULE_SIG_SHA256
2022        bool "Sign modules with SHA-256"
2023        select CRYPTO_SHA256
2024
2025config MODULE_SIG_SHA384
2026        bool "Sign modules with SHA-384"
2027        select CRYPTO_SHA512
2028
2029config MODULE_SIG_SHA512
2030        bool "Sign modules with SHA-512"
2031        select CRYPTO_SHA512
2032
2033endchoice
2034
2035config MODULE_SIG_HASH
2036        string
2037        depends on MODULE_SIG
2038        default "sha1" if MODULE_SIG_SHA1
2039        default "sha224" if MODULE_SIG_SHA224
2040        default "sha256" if MODULE_SIG_SHA256
2041        default "sha384" if MODULE_SIG_SHA384
2042        default "sha512" if MODULE_SIG_SHA512
2043
2044config MODULE_COMPRESS
2045        bool "Compress modules on installation"
2046        depends on MODULES
2047        help
2048
2049          Compresses kernel modules when 'make modules_install' is run; gzip or
2050          xz depending on "Compression algorithm" below.
2051
2052          module-init-tools MAY support gzip, and kmod MAY support gzip and xz.
2053
2054          Out-of-tree kernel modules installed using Kbuild will also be
2055          compressed upon installation.
2056
2057          Note: for modules inside an initrd or initramfs, it's more efficient
2058          to compress the whole initrd or initramfs instead.
2059
2060          Note: This is fully compatible with signed modules.
2061
2062          If in doubt, say N.
2063
2064choice
2065        prompt "Compression algorithm"
2066        depends on MODULE_COMPRESS
2067        default MODULE_COMPRESS_GZIP
2068        help
2069          This determines which sort of compression will be used during
2070          'make modules_install'.
2071
2072          GZIP (default) and XZ are supported.
2073
2074config MODULE_COMPRESS_GZIP
2075        bool "GZIP"
2076
2077config MODULE_COMPRESS_XZ
2078        bool "XZ"
2079
2080endchoice
2081
2082config TRIM_UNUSED_KSYMS
2083        bool "Trim unused exported kernel symbols"
2084        depends on MODULES && !UNUSED_SYMBOLS
2085        help
2086          The kernel and some modules make many symbols available for
2087          other modules to use via EXPORT_SYMBOL() and variants. Depending
2088          on the set of modules being selected in your kernel configuration,
2089          many of those exported symbols might never be used.
2090
2091          This option allows for unused exported symbols to be dropped from
2092          the build. In turn, this provides the compiler more opportunities
2093          (especially when using LTO) for optimizing the code and reducing
2094          binary size.  This might have some security advantages as well.
2095
2096          If unsure, or if you need to build out-of-tree modules, say N.
2097
2098endif # MODULES
2099
2100config MODULES_TREE_LOOKUP
2101        def_bool y
2102        depends on PERF_EVENTS || TRACING
2103
2104config INIT_ALL_POSSIBLE
2105        bool
2106        help
2107          Back when each arch used to define their own cpu_online_mask and
2108          cpu_possible_mask, some of them chose to initialize cpu_possible_mask
2109          with all 1s, and others with all 0s.  When they were centralised,
2110          it was better to provide this option than to break all the archs
2111          and have several arch maintainers pursuing me down dark alleys.
2112
2113source "block/Kconfig"
2114
2115config PREEMPT_NOTIFIERS
2116        bool
2117
2118config PADATA
2119        depends on SMP
2120        bool
2121
2122config ASN1
2123        tristate
2124        help
2125          Build a simple ASN.1 grammar compiler that produces a bytecode output
2126          that can be interpreted by the ASN.1 stream decoder and used to
2127          inform it as to what tags are to be expected in a stream and what
2128          functions to call on what tags.
2129
2130source "kernel/Kconfig.locks"
2131