1config ARCH 2 string 3 option env="ARCH" 4 5config KERNELVERSION 6 string 7 option env="KERNELVERSION" 8 9config DEFCONFIG_LIST 10 string 11 depends on !UML 12 option defconfig_list 13 default "/lib/modules/$UNAME_RELEASE/.config" 14 default "/etc/kernel-config" 15 default "/boot/config-$UNAME_RELEASE" 16 default "$ARCH_DEFCONFIG" 17 default "arch/$ARCH/defconfig" 18 19config CONSTRUCTORS 20 bool 21 depends on !UML 22 default y 23 24menu "General setup" 25 26config EXPERIMENTAL 27 bool "Prompt for development and/or incomplete code/drivers" 28 ---help--- 29 Some of the various things that Linux supports (such as network 30 drivers, file systems, network protocols, etc.) can be in a state 31 of development where the functionality, stability, or the level of 32 testing is not yet high enough for general use. This is usually 33 known as the "alpha-test" phase among developers. If a feature is 34 currently in alpha-test, then the developers usually discourage 35 uninformed widespread use of this feature by the general public to 36 avoid "Why doesn't this work?" type mail messages. However, active 37 testing and use of these systems is welcomed. Just be aware that it 38 may not meet the normal level of reliability or it may fail to work 39 in some special cases. Detailed bug reports from people familiar 40 with the kernel internals are usually welcomed by the developers 41 (before submitting bug reports, please read the documents 42 <file:README>, <file:MAINTAINERS>, <file:REPORTING-BUGS>, 43 <file:Documentation/BUG-HUNTING>, and 44 <file:Documentation/oops-tracing.txt> in the kernel source). 45 46 This option will also make obsoleted drivers available. These are 47 drivers that have been replaced by something else, and/or are 48 scheduled to be removed in a future kernel release. 49 50 Unless you intend to help test and develop a feature or driver that 51 falls into this category, or you have a situation that requires 52 using these features, you should probably say N here, which will 53 cause the configurator to present you with fewer choices. If 54 you say Y here, you will be offered the choice of using features or 55 drivers that are currently considered to be in the alpha-test phase. 56 57config BROKEN 58 bool 59 60config BROKEN_ON_SMP 61 bool 62 depends on BROKEN || !SMP 63 default y 64 65config LOCK_KERNEL 66 bool 67 depends on SMP || PREEMPT 68 default y 69 70config INIT_ENV_ARG_LIMIT 71 int 72 default 32 if !UML 73 default 128 if UML 74 help 75 Maximum of each of the number of arguments and environment 76 variables passed to init from the kernel command line. 77 78 79config CROSS_COMPILE 80 string "Cross-compiler tool prefix" 81 help 82 Same as running 'make CROSS_COMPILE=prefix-' but stored for 83 default make runs in this kernel build directory. You don't 84 need to set this unless you want the configured kernel build 85 directory to select the cross-compiler automatically. 86 87config LOCALVERSION 88 string "Local version - append to kernel release" 89 help 90 Append an extra string to the end of your kernel version. 91 This will show up when you type uname, for example. 92 The string you set here will be appended after the contents of 93 any files with a filename matching localversion* in your 94 object and source tree, in that order. Your total string can 95 be a maximum of 64 characters. 96 97config LOCALVERSION_AUTO 98 bool "Automatically append version information to the version string" 99 default y 100 help 101 This will try to automatically determine if the current tree is a 102 release tree by looking for git tags that belong to the current 103 top of tree revision. 104 105 A string of the format -gxxxxxxxx will be added to the localversion 106 if a git-based tree is found. The string generated by this will be 107 appended after any matching localversion* files, and after the value 108 set in CONFIG_LOCALVERSION. 109 110 (The actual string used here is the first eight characters produced 111 by running the command: 112 113 $ git rev-parse --verify HEAD 114 115 which is done within the script "scripts/setlocalversion".) 116 117config HAVE_KERNEL_GZIP 118 bool 119 120config HAVE_KERNEL_BZIP2 121 bool 122 123config HAVE_KERNEL_LZMA 124 bool 125 126config HAVE_KERNEL_LZO 127 bool 128 129choice 130 prompt "Kernel compression mode" 131 default KERNEL_GZIP 132 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_LZO 133 help 134 The linux kernel is a kind of self-extracting executable. 135 Several compression algorithms are available, which differ 136 in efficiency, compression and decompression speed. 137 Compression speed is only relevant when building a kernel. 138 Decompression speed is relevant at each boot. 139 140 If you have any problems with bzip2 or lzma compressed 141 kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 142 version of this functionality (bzip2 only), for 2.4, was 143 supplied by Christian Ludwig) 144 145 High compression options are mostly useful for users, who 146 are low on disk space (embedded systems), but for whom ram 147 size matters less. 148 149 If in doubt, select 'gzip' 150 151config KERNEL_GZIP 152 bool "Gzip" 153 depends on HAVE_KERNEL_GZIP 154 help 155 The old and tried gzip compression. It provides a good balance 156 between compression ratio and decompression speed. 157 158config KERNEL_BZIP2 159 bool "Bzip2" 160 depends on HAVE_KERNEL_BZIP2 161 help 162 Its compression ratio and speed is intermediate. 163 Decompression speed is slowest among the three. The kernel 164 size is about 10% smaller with bzip2, in comparison to gzip. 165 Bzip2 uses a large amount of memory. For modern kernels you 166 will need at least 8MB RAM or more for booting. 167 168config KERNEL_LZMA 169 bool "LZMA" 170 depends on HAVE_KERNEL_LZMA 171 help 172 The most recent compression algorithm. 173 Its ratio is best, decompression speed is between the other 174 two. Compression is slowest. The kernel size is about 33% 175 smaller with LZMA in comparison to gzip. 176 177config KERNEL_LZO 178 bool "LZO" 179 depends on HAVE_KERNEL_LZO 180 help 181 Its compression ratio is the poorest among the 4. The kernel 182 size is about about 10% bigger than gzip; however its speed 183 (both compression and decompression) is the fastest. 184 185endchoice 186 187config SWAP 188 bool "Support for paging of anonymous memory (swap)" 189 depends on MMU && BLOCK 190 default y 191 help 192 This option allows you to choose whether you want to have support 193 for so called swap devices or swap files in your kernel that are 194 used to provide more virtual memory than the actual RAM present 195 in your computer. If unsure say Y. 196 197config SYSVIPC 198 bool "System V IPC" 199 ---help--- 200 Inter Process Communication is a suite of library functions and 201 system calls which let processes (running programs) synchronize and 202 exchange information. It is generally considered to be a good thing, 203 and some programs won't run unless you say Y here. In particular, if 204 you want to run the DOS emulator dosemu under Linux (read the 205 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 206 you'll need to say Y here. 207 208 You can find documentation about IPC with "info ipc" and also in 209 section 6.4 of the Linux Programmer's Guide, available from 210 <http://www.tldp.org/guides.html>. 211 212config SYSVIPC_SYSCTL 213 bool 214 depends on SYSVIPC 215 depends on SYSCTL 216 default y 217 218config POSIX_MQUEUE 219 bool "POSIX Message Queues" 220 depends on NET && EXPERIMENTAL 221 ---help--- 222 POSIX variant of message queues is a part of IPC. In POSIX message 223 queues every message has a priority which decides about succession 224 of receiving it by a process. If you want to compile and run 225 programs written e.g. for Solaris with use of its POSIX message 226 queues (functions mq_*) say Y here. 227 228 POSIX message queues are visible as a filesystem called 'mqueue' 229 and can be mounted somewhere if you want to do filesystem 230 operations on message queues. 231 232 If unsure, say Y. 233 234config POSIX_MQUEUE_SYSCTL 235 bool 236 depends on POSIX_MQUEUE 237 depends on SYSCTL 238 default y 239 240config BSD_PROCESS_ACCT 241 bool "BSD Process Accounting" 242 help 243 If you say Y here, a user level program will be able to instruct the 244 kernel (via a special system call) to write process accounting 245 information to a file: whenever a process exits, information about 246 that process will be appended to the file by the kernel. The 247 information includes things such as creation time, owning user, 248 command name, memory usage, controlling terminal etc. (the complete 249 list is in the struct acct in <file:include/linux/acct.h>). It is 250 up to the user level program to do useful things with this 251 information. This is generally a good idea, so say Y. 252 253config BSD_PROCESS_ACCT_V3 254 bool "BSD Process Accounting version 3 file format" 255 depends on BSD_PROCESS_ACCT 256 default n 257 help 258 If you say Y here, the process accounting information is written 259 in a new file format that also logs the process IDs of each 260 process and it's parent. Note that this file format is incompatible 261 with previous v0/v1/v2 file formats, so you will need updated tools 262 for processing it. A preliminary version of these tools is available 263 at <http://www.gnu.org/software/acct/>. 264 265config TASKSTATS 266 bool "Export task/process statistics through netlink (EXPERIMENTAL)" 267 depends on NET 268 default n 269 help 270 Export selected statistics for tasks/processes through the 271 generic netlink interface. Unlike BSD process accounting, the 272 statistics are available during the lifetime of tasks/processes as 273 responses to commands. Like BSD accounting, they are sent to user 274 space on task exit. 275 276 Say N if unsure. 277 278config TASK_DELAY_ACCT 279 bool "Enable per-task delay accounting (EXPERIMENTAL)" 280 depends on TASKSTATS 281 help 282 Collect information on time spent by a task waiting for system 283 resources like cpu, synchronous block I/O completion and swapping 284 in pages. Such statistics can help in setting a task's priorities 285 relative to other tasks for cpu, io, rss limits etc. 286 287 Say N if unsure. 288 289config TASK_XACCT 290 bool "Enable extended accounting over taskstats (EXPERIMENTAL)" 291 depends on TASKSTATS 292 help 293 Collect extended task accounting data and send the data 294 to userland for processing over the taskstats interface. 295 296 Say N if unsure. 297 298config TASK_IO_ACCOUNTING 299 bool "Enable per-task storage I/O accounting (EXPERIMENTAL)" 300 depends on TASK_XACCT 301 help 302 Collect information on the number of bytes of storage I/O which this 303 task has caused. 304 305 Say N if unsure. 306 307config AUDIT 308 bool "Auditing support" 309 depends on NET 310 help 311 Enable auditing infrastructure that can be used with another 312 kernel subsystem, such as SELinux (which requires this for 313 logging of avc messages output). Does not do system-call 314 auditing without CONFIG_AUDITSYSCALL. 315 316config AUDITSYSCALL 317 bool "Enable system-call auditing support" 318 depends on AUDIT && (X86 || PPC || S390 || IA64 || UML || SPARC64 || SUPERH) 319 default y if SECURITY_SELINUX 320 help 321 Enable low-overhead system-call auditing infrastructure that 322 can be used independently or with another kernel subsystem, 323 such as SELinux. To use audit's filesystem watch feature, please 324 ensure that INOTIFY is configured. 325 326config AUDIT_TREE 327 def_bool y 328 depends on AUDITSYSCALL 329 select INOTIFY 330 331menu "RCU Subsystem" 332 333choice 334 prompt "RCU Implementation" 335 default TREE_RCU 336 337config TREE_RCU 338 bool "Tree-based hierarchical RCU" 339 help 340 This option selects the RCU implementation that is 341 designed for very large SMP system with hundreds or 342 thousands of CPUs. It also scales down nicely to 343 smaller systems. 344 345config TREE_PREEMPT_RCU 346 bool "Preemptable tree-based hierarchical RCU" 347 depends on PREEMPT 348 help 349 This option selects the RCU implementation that is 350 designed for very large SMP systems with hundreds or 351 thousands of CPUs, but for which real-time response 352 is also required. It also scales down nicely to 353 smaller systems. 354 355config TINY_RCU 356 bool "UP-only small-memory-footprint RCU" 357 depends on !SMP 358 help 359 This option selects the RCU implementation that is 360 designed for UP systems from which real-time response 361 is not required. This option greatly reduces the 362 memory footprint of RCU. 363 364endchoice 365 366config RCU_TRACE 367 bool "Enable tracing for RCU" 368 depends on TREE_RCU || TREE_PREEMPT_RCU 369 help 370 This option provides tracing in RCU which presents stats 371 in debugfs for debugging RCU implementation. 372 373 Say Y here if you want to enable RCU tracing 374 Say N if you are unsure. 375 376config RCU_FANOUT 377 int "Tree-based hierarchical RCU fanout value" 378 range 2 64 if 64BIT 379 range 2 32 if !64BIT 380 depends on TREE_RCU || TREE_PREEMPT_RCU 381 default 64 if 64BIT 382 default 32 if !64BIT 383 help 384 This option controls the fanout of hierarchical implementations 385 of RCU, allowing RCU to work efficiently on machines with 386 large numbers of CPUs. This value must be at least the cube 387 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit 388 systems and up to 262,144 for 64-bit systems. 389 390 Select a specific number if testing RCU itself. 391 Take the default if unsure. 392 393config RCU_FANOUT_EXACT 394 bool "Disable tree-based hierarchical RCU auto-balancing" 395 depends on TREE_RCU || TREE_PREEMPT_RCU 396 default n 397 help 398 This option forces use of the exact RCU_FANOUT value specified, 399 regardless of imbalances in the hierarchy. This is useful for 400 testing RCU itself, and might one day be useful on systems with 401 strong NUMA behavior. 402 403 Without RCU_FANOUT_EXACT, the code will balance the hierarchy. 404 405 Say N if unsure. 406 407config RCU_FAST_NO_HZ 408 bool "Accelerate last non-dyntick-idle CPU's grace periods" 409 depends on TREE_RCU && NO_HZ && SMP 410 default n 411 help 412 This option causes RCU to attempt to accelerate grace periods 413 in order to allow the final CPU to enter dynticks-idle state 414 more quickly. On the other hand, this option increases the 415 overhead of the dynticks-idle checking, particularly on systems 416 with large numbers of CPUs. 417 418 Say Y if energy efficiency is critically important, particularly 419 if you have relatively few CPUs. 420 421 Say N if you are unsure. 422 423config TREE_RCU_TRACE 424 def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU ) 425 select DEBUG_FS 426 help 427 This option provides tracing for the TREE_RCU and 428 TREE_PREEMPT_RCU implementations, permitting Makefile to 429 trivially select kernel/rcutree_trace.c. 430 431endmenu # "RCU Subsystem" 432 433config IKCONFIG 434 tristate "Kernel .config support" 435 ---help--- 436 This option enables the complete Linux kernel ".config" file 437 contents to be saved in the kernel. It provides documentation 438 of which kernel options are used in a running kernel or in an 439 on-disk kernel. This information can be extracted from the kernel 440 image file with the script scripts/extract-ikconfig and used as 441 input to rebuild the current kernel or to build another kernel. 442 It can also be extracted from a running kernel by reading 443 /proc/config.gz if enabled (below). 444 445config IKCONFIG_PROC 446 bool "Enable access to .config through /proc/config.gz" 447 depends on IKCONFIG && PROC_FS 448 ---help--- 449 This option enables access to the kernel configuration file 450 through /proc/config.gz. 451 452config LOG_BUF_SHIFT 453 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 454 range 12 21 455 default 17 456 help 457 Select kernel log buffer size as a power of 2. 458 Examples: 459 17 => 128 KB 460 16 => 64 KB 461 15 => 32 KB 462 14 => 16 KB 463 13 => 8 KB 464 12 => 4 KB 465 466# 467# Architectures with an unreliable sched_clock() should select this: 468# 469config HAVE_UNSTABLE_SCHED_CLOCK 470 bool 471 472menuconfig CGROUPS 473 boolean "Control Group support" 474 depends on EVENTFD 475 help 476 This option adds support for grouping sets of processes together, for 477 use with process control subsystems such as Cpusets, CFS, memory 478 controls or device isolation. 479 See 480 - Documentation/scheduler/sched-design-CFS.txt (CFS) 481 - Documentation/cgroups/ (features for grouping, isolation 482 and resource control) 483 484 Say N if unsure. 485 486if CGROUPS 487 488config CGROUP_DEBUG 489 bool "Example debug cgroup subsystem" 490 depends on CGROUPS 491 default n 492 help 493 This option enables a simple cgroup subsystem that 494 exports useful debugging information about the cgroups 495 framework. 496 497 Say N if unsure. 498 499config CGROUP_NS 500 bool "Namespace cgroup subsystem" 501 depends on CGROUPS 502 help 503 Provides a simple namespace cgroup subsystem to 504 provide hierarchical naming of sets of namespaces, 505 for instance virtual servers and checkpoint/restart 506 jobs. 507 508config CGROUP_FREEZER 509 bool "Freezer cgroup subsystem" 510 depends on CGROUPS 511 help 512 Provides a way to freeze and unfreeze all tasks in a 513 cgroup. 514 515config CGROUP_DEVICE 516 bool "Device controller for cgroups" 517 depends on CGROUPS && EXPERIMENTAL 518 help 519 Provides a cgroup implementing whitelists for devices which 520 a process in the cgroup can mknod or open. 521 522config CPUSETS 523 bool "Cpuset support" 524 depends on CGROUPS 525 help 526 This option will let you create and manage CPUSETs which 527 allow dynamically partitioning a system into sets of CPUs and 528 Memory Nodes and assigning tasks to run only within those sets. 529 This is primarily useful on large SMP or NUMA systems. 530 531 Say N if unsure. 532 533config PROC_PID_CPUSET 534 bool "Include legacy /proc/<pid>/cpuset file" 535 depends on CPUSETS 536 default y 537 538config CGROUP_CPUACCT 539 bool "Simple CPU accounting cgroup subsystem" 540 depends on CGROUPS 541 help 542 Provides a simple Resource Controller for monitoring the 543 total CPU consumed by the tasks in a cgroup. 544 545config RESOURCE_COUNTERS 546 bool "Resource counters" 547 help 548 This option enables controller independent resource accounting 549 infrastructure that works with cgroups. 550 depends on CGROUPS 551 552config CGROUP_MEM_RES_CTLR 553 bool "Memory Resource Controller for Control Groups" 554 depends on CGROUPS && RESOURCE_COUNTERS 555 select MM_OWNER 556 help 557 Provides a memory resource controller that manages both anonymous 558 memory and page cache. (See Documentation/cgroups/memory.txt) 559 560 Note that setting this option increases fixed memory overhead 561 associated with each page of memory in the system. By this, 562 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory 563 usage tracking struct at boot. Total amount of this is printed out 564 at boot. 565 566 Only enable when you're ok with these trade offs and really 567 sure you need the memory resource controller. Even when you enable 568 this, you can set "cgroup_disable=memory" at your boot option to 569 disable memory resource controller and you can avoid overheads. 570 (and lose benefits of memory resource controller) 571 572 This config option also selects MM_OWNER config option, which 573 could in turn add some fork/exit overhead. 574 575config CGROUP_MEM_RES_CTLR_SWAP 576 bool "Memory Resource Controller Swap Extension(EXPERIMENTAL)" 577 depends on CGROUP_MEM_RES_CTLR && SWAP && EXPERIMENTAL 578 help 579 Add swap management feature to memory resource controller. When you 580 enable this, you can limit mem+swap usage per cgroup. In other words, 581 when you disable this, memory resource controller has no cares to 582 usage of swap...a process can exhaust all of the swap. This extension 583 is useful when you want to avoid exhaustion swap but this itself 584 adds more overheads and consumes memory for remembering information. 585 Especially if you use 32bit system or small memory system, please 586 be careful about enabling this. When memory resource controller 587 is disabled by boot option, this will be automatically disabled and 588 there will be no overhead from this. Even when you set this config=y, 589 if boot option "noswapaccount" is set, swap will not be accounted. 590 Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page 591 size is 4096bytes, 512k per 1Gbytes of swap. 592 593menuconfig CGROUP_SCHED 594 bool "Group CPU scheduler" 595 depends on EXPERIMENTAL && CGROUPS 596 default n 597 help 598 This feature lets CPU scheduler recognize task groups and control CPU 599 bandwidth allocation to such task groups. It uses cgroups to group 600 tasks. 601 602if CGROUP_SCHED 603config FAIR_GROUP_SCHED 604 bool "Group scheduling for SCHED_OTHER" 605 depends on CGROUP_SCHED 606 default CGROUP_SCHED 607 608config RT_GROUP_SCHED 609 bool "Group scheduling for SCHED_RR/FIFO" 610 depends on EXPERIMENTAL 611 depends on CGROUP_SCHED 612 default n 613 help 614 This feature lets you explicitly allocate real CPU bandwidth 615 to task groups. If enabled, it will also make it impossible to 616 schedule realtime tasks for non-root users until you allocate 617 realtime bandwidth for them. 618 See Documentation/scheduler/sched-rt-group.txt for more information. 619 620endif #CGROUP_SCHED 621 622config BLK_CGROUP 623 tristate "Block IO controller" 624 depends on CGROUPS && BLOCK 625 default n 626 ---help--- 627 Generic block IO controller cgroup interface. This is the common 628 cgroup interface which should be used by various IO controlling 629 policies. 630 631 Currently, CFQ IO scheduler uses it to recognize task groups and 632 control disk bandwidth allocation (proportional time slice allocation) 633 to such task groups. 634 635 This option only enables generic Block IO controller infrastructure. 636 One needs to also enable actual IO controlling logic in CFQ for it 637 to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y). 638 639 See Documentation/cgroups/blkio-controller.txt for more information. 640 641config DEBUG_BLK_CGROUP 642 bool "Enable Block IO controller debugging" 643 depends on BLK_CGROUP 644 default n 645 ---help--- 646 Enable some debugging help. Currently it exports additional stat 647 files in a cgroup which can be useful for debugging. 648 649endif # CGROUPS 650 651config MM_OWNER 652 bool 653 654config SYSFS_DEPRECATED 655 bool 656 657config SYSFS_DEPRECATED_V2 658 bool "enable deprecated sysfs features to support old userspace tools" 659 depends on SYSFS 660 default n 661 select SYSFS_DEPRECATED 662 help 663 This option switches the layout of sysfs to the deprecated 664 version. Do not use it on recent distributions. 665 666 The current sysfs layout features a unified device tree at 667 /sys/devices/, which is able to express a hierarchy between 668 class devices. If the deprecated option is set to Y, the 669 unified device tree is split into a bus device tree at 670 /sys/devices/ and several individual class device trees at 671 /sys/class/. The class and bus devices will be connected by 672 "<subsystem>:<name>" and the "device" links. The "block" 673 class devices, will not show up in /sys/class/block/. Some 674 subsystems will suppress the creation of some devices which 675 depend on the unified device tree. 676 677 This option is not a pure compatibility option that can 678 be safely enabled on newer distributions. It will change the 679 layout of sysfs to the non-extensible deprecated version, 680 and disable some features, which can not be exported without 681 confusing older userspace tools. Since 2007/2008 all major 682 distributions do not enable this option, and ship no tools which 683 depend on the deprecated layout or this option. 684 685 If you are using a new kernel on an older distribution, or use 686 older userspace tools, you might need to say Y here. Do not say Y, 687 if the original kernel, that came with your distribution, has 688 this option set to N. 689 690config RELAY 691 bool "Kernel->user space relay support (formerly relayfs)" 692 help 693 This option enables support for relay interface support in 694 certain file systems (such as debugfs). 695 It is designed to provide an efficient mechanism for tools and 696 facilities to relay large amounts of data from kernel space to 697 user space. 698 699 If unsure, say N. 700 701config NAMESPACES 702 bool "Namespaces support" if EMBEDDED 703 default !EMBEDDED 704 help 705 Provides the way to make tasks work with different objects using 706 the same id. For example same IPC id may refer to different objects 707 or same user id or pid may refer to different tasks when used in 708 different namespaces. 709 710config UTS_NS 711 bool "UTS namespace" 712 depends on NAMESPACES 713 help 714 In this namespace tasks see different info provided with the 715 uname() system call 716 717config IPC_NS 718 bool "IPC namespace" 719 depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE) 720 help 721 In this namespace tasks work with IPC ids which correspond to 722 different IPC objects in different namespaces. 723 724config USER_NS 725 bool "User namespace (EXPERIMENTAL)" 726 depends on NAMESPACES && EXPERIMENTAL 727 help 728 This allows containers, i.e. vservers, to use user namespaces 729 to provide different user info for different servers. 730 If unsure, say N. 731 732config PID_NS 733 bool "PID Namespaces (EXPERIMENTAL)" 734 default n 735 depends on NAMESPACES && EXPERIMENTAL 736 help 737 Support process id namespaces. This allows having multiple 738 processes with the same pid as long as they are in different 739 pid namespaces. This is a building block of containers. 740 741 Unless you want to work with an experimental feature 742 say N here. 743 744config NET_NS 745 bool "Network namespace" 746 default n 747 depends on NAMESPACES && EXPERIMENTAL && NET 748 help 749 Allow user space to create what appear to be multiple instances 750 of the network stack. 751 752config BLK_DEV_INITRD 753 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 754 depends on BROKEN || !FRV 755 help 756 The initial RAM filesystem is a ramfs which is loaded by the 757 boot loader (loadlin or lilo) and that is mounted as root 758 before the normal boot procedure. It is typically used to 759 load modules needed to mount the "real" root file system, 760 etc. See <file:Documentation/initrd.txt> for details. 761 762 If RAM disk support (BLK_DEV_RAM) is also included, this 763 also enables initial RAM disk (initrd) support and adds 764 15 Kbytes (more on some other architectures) to the kernel size. 765 766 If unsure say Y. 767 768if BLK_DEV_INITRD 769 770source "usr/Kconfig" 771 772endif 773 774config CC_OPTIMIZE_FOR_SIZE 775 bool "Optimize for size" 776 default y 777 help 778 Enabling this option will pass "-Os" instead of "-O2" to gcc 779 resulting in a smaller kernel. 780 781 If unsure, say Y. 782 783config SYSCTL 784 bool 785 786config ANON_INODES 787 bool 788 789menuconfig EMBEDDED 790 bool "Configure standard kernel features (for small systems)" 791 help 792 This option allows certain base kernel options and settings 793 to be disabled or tweaked. This is for specialized 794 environments which can tolerate a "non-standard" kernel. 795 Only use this if you really know what you are doing. 796 797config UID16 798 bool "Enable 16-bit UID system calls" if EMBEDDED 799 depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) 800 default y 801 help 802 This enables the legacy 16-bit UID syscall wrappers. 803 804config SYSCTL_SYSCALL 805 bool "Sysctl syscall support" if EMBEDDED 806 depends on PROC_SYSCTL 807 default y 808 select SYSCTL 809 ---help--- 810 sys_sysctl uses binary paths that have been found challenging 811 to properly maintain and use. The interface in /proc/sys 812 using paths with ascii names is now the primary path to this 813 information. 814 815 Almost nothing using the binary sysctl interface so if you are 816 trying to save some space it is probably safe to disable this, 817 making your kernel marginally smaller. 818 819 If unsure say Y here. 820 821config KALLSYMS 822 bool "Load all symbols for debugging/ksymoops" if EMBEDDED 823 default y 824 help 825 Say Y here to let the kernel print out symbolic crash information and 826 symbolic stack backtraces. This increases the size of the kernel 827 somewhat, as all symbols have to be loaded into the kernel image. 828 829config KALLSYMS_ALL 830 bool "Include all symbols in kallsyms" 831 depends on DEBUG_KERNEL && KALLSYMS 832 help 833 Normally kallsyms only contains the symbols of functions, for nicer 834 OOPS messages. Some debuggers can use kallsyms for other 835 symbols too: say Y here to include all symbols, if you need them 836 and you don't care about adding 300k to the size of your kernel. 837 838 Say N. 839 840config KALLSYMS_EXTRA_PASS 841 bool "Do an extra kallsyms pass" 842 depends on KALLSYMS 843 help 844 If kallsyms is not working correctly, the build will fail with 845 inconsistent kallsyms data. If that occurs, log a bug report and 846 turn on KALLSYMS_EXTRA_PASS which should result in a stable build. 847 Always say N here unless you find a bug in kallsyms, which must be 848 reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while 849 you wait for kallsyms to be fixed. 850 851 852config HOTPLUG 853 bool "Support for hot-pluggable devices" if EMBEDDED 854 default y 855 help 856 This option is provided for the case where no hotplug or uevent 857 capabilities is wanted by the kernel. You should only consider 858 disabling this option for embedded systems that do not use modules, a 859 dynamic /dev tree, or dynamic device discovery. Just say Y. 860 861config PRINTK 862 default y 863 bool "Enable support for printk" if EMBEDDED 864 help 865 This option enables normal printk support. Removing it 866 eliminates most of the message strings from the kernel image 867 and makes the kernel more or less silent. As this makes it 868 very difficult to diagnose system problems, saying N here is 869 strongly discouraged. 870 871config BUG 872 bool "BUG() support" if EMBEDDED 873 default y 874 help 875 Disabling this option eliminates support for BUG and WARN, reducing 876 the size of your kernel image and potentially quietly ignoring 877 numerous fatal conditions. You should only consider disabling this 878 option for embedded systems with no facilities for reporting errors. 879 Just say Y. 880 881config ELF_CORE 882 default y 883 bool "Enable ELF core dumps" if EMBEDDED 884 help 885 Enable support for generating core dumps. Disabling saves about 4k. 886 887config PCSPKR_PLATFORM 888 bool "Enable PC-Speaker support" if EMBEDDED 889 depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES 890 default y 891 help 892 This option allows to disable the internal PC-Speaker 893 support, saving some memory. 894 895config BASE_FULL 896 default y 897 bool "Enable full-sized data structures for core" if EMBEDDED 898 help 899 Disabling this option reduces the size of miscellaneous core 900 kernel data structures. This saves memory on small machines, 901 but may reduce performance. 902 903config FUTEX 904 bool "Enable futex support" if EMBEDDED 905 default y 906 select RT_MUTEXES 907 help 908 Disabling this option will cause the kernel to be built without 909 support for "fast userspace mutexes". The resulting kernel may not 910 run glibc-based applications correctly. 911 912config EPOLL 913 bool "Enable eventpoll support" if EMBEDDED 914 default y 915 select ANON_INODES 916 help 917 Disabling this option will cause the kernel to be built without 918 support for epoll family of system calls. 919 920config SIGNALFD 921 bool "Enable signalfd() system call" if EMBEDDED 922 select ANON_INODES 923 default y 924 help 925 Enable the signalfd() system call that allows to receive signals 926 on a file descriptor. 927 928 If unsure, say Y. 929 930config TIMERFD 931 bool "Enable timerfd() system call" if EMBEDDED 932 select ANON_INODES 933 default y 934 help 935 Enable the timerfd() system call that allows to receive timer 936 events on a file descriptor. 937 938 If unsure, say Y. 939 940config EVENTFD 941 bool "Enable eventfd() system call" if EMBEDDED 942 select ANON_INODES 943 default y 944 help 945 Enable the eventfd() system call that allows to receive both 946 kernel notification (ie. KAIO) or userspace notifications. 947 948 If unsure, say Y. 949 950config SHMEM 951 bool "Use full shmem filesystem" if EMBEDDED 952 default y 953 depends on MMU 954 help 955 The shmem is an internal filesystem used to manage shared memory. 956 It is backed by swap and manages resource limits. It is also exported 957 to userspace as tmpfs if TMPFS is enabled. Disabling this 958 option replaces shmem and tmpfs with the much simpler ramfs code, 959 which may be appropriate on small systems without swap. 960 961config AIO 962 bool "Enable AIO support" if EMBEDDED 963 default y 964 help 965 This option enables POSIX asynchronous I/O which may by used 966 by some high performance threaded applications. Disabling 967 this option saves about 7k. 968 969config HAVE_PERF_EVENTS 970 bool 971 help 972 See tools/perf/design.txt for details. 973 974config PERF_USE_VMALLOC 975 bool 976 help 977 See tools/perf/design.txt for details 978 979menu "Kernel Performance Events And Counters" 980 981config PERF_EVENTS 982 bool "Kernel performance events and counters" 983 default y if (PROFILING || PERF_COUNTERS) 984 depends on HAVE_PERF_EVENTS 985 select ANON_INODES 986 help 987 Enable kernel support for various performance events provided 988 by software and hardware. 989 990 Software events are supported either built-in or via the 991 use of generic tracepoints. 992 993 Most modern CPUs support performance events via performance 994 counter registers. These registers count the number of certain 995 types of hw events: such as instructions executed, cachemisses 996 suffered, or branches mis-predicted - without slowing down the 997 kernel or applications. These registers can also trigger interrupts 998 when a threshold number of events have passed - and can thus be 999 used to profile the code that runs on that CPU. 1000 1001 The Linux Performance Event subsystem provides an abstraction of 1002 these software and hardware event capabilities, available via a 1003 system call and used by the "perf" utility in tools/perf/. It 1004 provides per task and per CPU counters, and it provides event 1005 capabilities on top of those. 1006 1007 Say Y if unsure. 1008 1009config PERF_COUNTERS 1010 bool "Kernel performance counters (old config option)" 1011 depends on HAVE_PERF_EVENTS 1012 help 1013 This config has been obsoleted by the PERF_EVENTS 1014 config option - please see that one for details. 1015 1016 It has no effect on the kernel whether you enable 1017 it or not, it is a compatibility placeholder. 1018 1019 Say N if unsure. 1020 1021config DEBUG_PERF_USE_VMALLOC 1022 default n 1023 bool "Debug: use vmalloc to back perf mmap() buffers" 1024 depends on PERF_EVENTS && DEBUG_KERNEL 1025 select PERF_USE_VMALLOC 1026 help 1027 Use vmalloc memory to back perf mmap() buffers. 1028 1029 Mostly useful for debugging the vmalloc code on platforms 1030 that don't require it. 1031 1032 Say N if unsure. 1033 1034endmenu 1035 1036config VM_EVENT_COUNTERS 1037 default y 1038 bool "Enable VM event counters for /proc/vmstat" if EMBEDDED 1039 help 1040 VM event counters are needed for event counts to be shown. 1041 This option allows the disabling of the VM event counters 1042 on EMBEDDED systems. /proc/vmstat will only show page counts 1043 if VM event counters are disabled. 1044 1045config PCI_QUIRKS 1046 default y 1047 bool "Enable PCI quirk workarounds" if EMBEDDED 1048 depends on PCI 1049 help 1050 This enables workarounds for various PCI chipset 1051 bugs/quirks. Disable this only if your target machine is 1052 unaffected by PCI quirks. 1053 1054config SLUB_DEBUG 1055 default y 1056 bool "Enable SLUB debugging support" if EMBEDDED 1057 depends on SLUB && SYSFS 1058 help 1059 SLUB has extensive debug support features. Disabling these can 1060 result in significant savings in code size. This also disables 1061 SLUB sysfs support. /sys/slab will not exist and there will be 1062 no support for cache validation etc. 1063 1064config COMPAT_BRK 1065 bool "Disable heap randomization" 1066 default y 1067 help 1068 Randomizing heap placement makes heap exploits harder, but it 1069 also breaks ancient binaries (including anything libc5 based). 1070 This option changes the bootup default to heap randomization 1071 disabled, and can be overridden at runtime by setting 1072 /proc/sys/kernel/randomize_va_space to 2. 1073 1074 On non-ancient distros (post-2000 ones) N is usually a safe choice. 1075 1076choice 1077 prompt "Choose SLAB allocator" 1078 default SLUB 1079 help 1080 This option allows to select a slab allocator. 1081 1082config SLAB 1083 bool "SLAB" 1084 help 1085 The regular slab allocator that is established and known to work 1086 well in all environments. It organizes cache hot objects in 1087 per cpu and per node queues. 1088 1089config SLUB 1090 bool "SLUB (Unqueued Allocator)" 1091 help 1092 SLUB is a slab allocator that minimizes cache line usage 1093 instead of managing queues of cached objects (SLAB approach). 1094 Per cpu caching is realized using slabs of objects instead 1095 of queues of objects. SLUB can use memory efficiently 1096 and has enhanced diagnostics. SLUB is the default choice for 1097 a slab allocator. 1098 1099config SLOB 1100 depends on EMBEDDED 1101 bool "SLOB (Simple Allocator)" 1102 help 1103 SLOB replaces the stock allocator with a drastically simpler 1104 allocator. SLOB is generally more space efficient but 1105 does not perform as well on large systems. 1106 1107endchoice 1108 1109config MMAP_ALLOW_UNINITIALIZED 1110 bool "Allow mmapped anonymous memory to be uninitialized" 1111 depends on EMBEDDED && !MMU 1112 default n 1113 help 1114 Normally, and according to the Linux spec, anonymous memory obtained 1115 from mmap() has it's contents cleared before it is passed to 1116 userspace. Enabling this config option allows you to request that 1117 mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus 1118 providing a huge performance boost. If this option is not enabled, 1119 then the flag will be ignored. 1120 1121 This is taken advantage of by uClibc's malloc(), and also by 1122 ELF-FDPIC binfmt's brk and stack allocator. 1123 1124 Because of the obvious security issues, this option should only be 1125 enabled on embedded devices where you control what is run in 1126 userspace. Since that isn't generally a problem on no-MMU systems, 1127 it is normally safe to say Y here. 1128 1129 See Documentation/nommu-mmap.txt for more information. 1130 1131config PROFILING 1132 bool "Profiling support" 1133 help 1134 Say Y here to enable the extended profiling support mechanisms used 1135 by profilers such as OProfile. 1136 1137# 1138# Place an empty function call at each tracepoint site. Can be 1139# dynamically changed for a probe function. 1140# 1141config TRACEPOINTS 1142 bool 1143 1144source "arch/Kconfig" 1145 1146config SLOW_WORK 1147 default n 1148 bool 1149 help 1150 The slow work thread pool provides a number of dynamically allocated 1151 threads that can be used by the kernel to perform operations that 1152 take a relatively long time. 1153 1154 An example of this would be CacheFiles doing a path lookup followed 1155 by a series of mkdirs and a create call, all of which have to touch 1156 disk. 1157 1158 See Documentation/slow-work.txt. 1159 1160config SLOW_WORK_DEBUG 1161 bool "Slow work debugging through debugfs" 1162 default n 1163 depends on SLOW_WORK && DEBUG_FS 1164 help 1165 Display the contents of the slow work run queue through debugfs, 1166 including items currently executing. 1167 1168 See Documentation/slow-work.txt. 1169 1170endmenu # General setup 1171 1172config HAVE_GENERIC_DMA_COHERENT 1173 bool 1174 default n 1175 1176config SLABINFO 1177 bool 1178 depends on PROC_FS 1179 depends on SLAB || SLUB_DEBUG 1180 default y 1181 1182config RT_MUTEXES 1183 boolean 1184 1185config BASE_SMALL 1186 int 1187 default 0 if BASE_FULL 1188 default 1 if !BASE_FULL 1189 1190menuconfig MODULES 1191 bool "Enable loadable module support" 1192 help 1193 Kernel modules are small pieces of compiled code which can 1194 be inserted in the running kernel, rather than being 1195 permanently built into the kernel. You use the "modprobe" 1196 tool to add (and sometimes remove) them. If you say Y here, 1197 many parts of the kernel can be built as modules (by 1198 answering M instead of Y where indicated): this is most 1199 useful for infrequently used options which are not required 1200 for booting. For more information, see the man pages for 1201 modprobe, lsmod, modinfo, insmod and rmmod. 1202 1203 If you say Y here, you will need to run "make 1204 modules_install" to put the modules under /lib/modules/ 1205 where modprobe can find them (you may need to be root to do 1206 this). 1207 1208 If unsure, say Y. 1209 1210if MODULES 1211 1212config MODULE_FORCE_LOAD 1213 bool "Forced module loading" 1214 default n 1215 help 1216 Allow loading of modules without version information (ie. modprobe 1217 --force). Forced module loading sets the 'F' (forced) taint flag and 1218 is usually a really bad idea. 1219 1220config MODULE_UNLOAD 1221 bool "Module unloading" 1222 help 1223 Without this option you will not be able to unload any 1224 modules (note that some modules may not be unloadable 1225 anyway), which makes your kernel smaller, faster 1226 and simpler. If unsure, say Y. 1227 1228config MODULE_FORCE_UNLOAD 1229 bool "Forced module unloading" 1230 depends on MODULE_UNLOAD && EXPERIMENTAL 1231 help 1232 This option allows you to force a module to unload, even if the 1233 kernel believes it is unsafe: the kernel will remove the module 1234 without waiting for anyone to stop using it (using the -f option to 1235 rmmod). This is mainly for kernel developers and desperate users. 1236 If unsure, say N. 1237 1238config MODVERSIONS 1239 bool "Module versioning support" 1240 help 1241 Usually, you have to use modules compiled with your kernel. 1242 Saying Y here makes it sometimes possible to use modules 1243 compiled for different kernels, by adding enough information 1244 to the modules to (hopefully) spot any changes which would 1245 make them incompatible with the kernel you are running. If 1246 unsure, say N. 1247 1248config MODULE_SRCVERSION_ALL 1249 bool "Source checksum for all modules" 1250 help 1251 Modules which contain a MODULE_VERSION get an extra "srcversion" 1252 field inserted into their modinfo section, which contains a 1253 sum of the source files which made it. This helps maintainers 1254 see exactly which source was used to build a module (since 1255 others sometimes change the module source without updating 1256 the version). With this option, such a "srcversion" field 1257 will be created for all modules. If unsure, say N. 1258 1259endif # MODULES 1260 1261config INIT_ALL_POSSIBLE 1262 bool 1263 help 1264 Back when each arch used to define their own cpu_online_map and 1265 cpu_possible_map, some of them chose to initialize cpu_possible_map 1266 with all 1s, and others with all 0s. When they were centralised, 1267 it was better to provide this option than to break all the archs 1268 and have several arch maintainers pursuing me down dark alleys. 1269 1270config STOP_MACHINE 1271 bool 1272 default y 1273 depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU 1274 help 1275 Need stop_machine() primitive. 1276 1277source "block/Kconfig" 1278 1279config PREEMPT_NOTIFIERS 1280 bool 1281 1282config PADATA 1283 depends on SMP 1284 bool 1285 1286source "kernel/Kconfig.locks" 1287