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