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. 324 325config AUDIT_WATCH 326 def_bool y 327 depends on AUDITSYSCALL 328 select FSNOTIFY 329 330config AUDIT_TREE 331 def_bool y 332 depends on AUDITSYSCALL 333 select FSNOTIFY 334 335menu "RCU Subsystem" 336 337choice 338 prompt "RCU Implementation" 339 default TREE_RCU 340 341config TREE_RCU 342 bool "Tree-based hierarchical RCU" 343 help 344 This option selects the RCU implementation that is 345 designed for very large SMP system with hundreds or 346 thousands of CPUs. It also scales down nicely to 347 smaller systems. 348 349config TREE_PREEMPT_RCU 350 bool "Preemptable tree-based hierarchical RCU" 351 depends on PREEMPT 352 help 353 This option selects the RCU implementation that is 354 designed for very large SMP systems with hundreds or 355 thousands of CPUs, but for which real-time response 356 is also required. It also scales down nicely to 357 smaller systems. 358 359config TINY_RCU 360 bool "UP-only small-memory-footprint RCU" 361 depends on !SMP 362 help 363 This option selects the RCU implementation that is 364 designed for UP systems from which real-time response 365 is not required. This option greatly reduces the 366 memory footprint of RCU. 367 368endchoice 369 370config RCU_TRACE 371 bool "Enable tracing for RCU" 372 depends on TREE_RCU || TREE_PREEMPT_RCU 373 help 374 This option provides tracing in RCU which presents stats 375 in debugfs for debugging RCU implementation. 376 377 Say Y here if you want to enable RCU tracing 378 Say N if you are unsure. 379 380config RCU_FANOUT 381 int "Tree-based hierarchical RCU fanout value" 382 range 2 64 if 64BIT 383 range 2 32 if !64BIT 384 depends on TREE_RCU || TREE_PREEMPT_RCU 385 default 64 if 64BIT 386 default 32 if !64BIT 387 help 388 This option controls the fanout of hierarchical implementations 389 of RCU, allowing RCU to work efficiently on machines with 390 large numbers of CPUs. This value must be at least the cube 391 root of NR_CPUS, which allows NR_CPUS up to 32,768 for 32-bit 392 systems and up to 262,144 for 64-bit systems. 393 394 Select a specific number if testing RCU itself. 395 Take the default if unsure. 396 397config RCU_FANOUT_EXACT 398 bool "Disable tree-based hierarchical RCU auto-balancing" 399 depends on TREE_RCU || TREE_PREEMPT_RCU 400 default n 401 help 402 This option forces use of the exact RCU_FANOUT value specified, 403 regardless of imbalances in the hierarchy. This is useful for 404 testing RCU itself, and might one day be useful on systems with 405 strong NUMA behavior. 406 407 Without RCU_FANOUT_EXACT, the code will balance the hierarchy. 408 409 Say N if unsure. 410 411config RCU_FAST_NO_HZ 412 bool "Accelerate last non-dyntick-idle CPU's grace periods" 413 depends on TREE_RCU && NO_HZ && SMP 414 default n 415 help 416 This option causes RCU to attempt to accelerate grace periods 417 in order to allow the final CPU to enter dynticks-idle state 418 more quickly. On the other hand, this option increases the 419 overhead of the dynticks-idle checking, particularly on systems 420 with large numbers of CPUs. 421 422 Say Y if energy efficiency is critically important, particularly 423 if you have relatively few CPUs. 424 425 Say N if you are unsure. 426 427config TREE_RCU_TRACE 428 def_bool RCU_TRACE && ( TREE_RCU || TREE_PREEMPT_RCU ) 429 select DEBUG_FS 430 help 431 This option provides tracing for the TREE_RCU and 432 TREE_PREEMPT_RCU implementations, permitting Makefile to 433 trivially select kernel/rcutree_trace.c. 434 435endmenu # "RCU Subsystem" 436 437config IKCONFIG 438 tristate "Kernel .config support" 439 ---help--- 440 This option enables the complete Linux kernel ".config" file 441 contents to be saved in the kernel. It provides documentation 442 of which kernel options are used in a running kernel or in an 443 on-disk kernel. This information can be extracted from the kernel 444 image file with the script scripts/extract-ikconfig and used as 445 input to rebuild the current kernel or to build another kernel. 446 It can also be extracted from a running kernel by reading 447 /proc/config.gz if enabled (below). 448 449config IKCONFIG_PROC 450 bool "Enable access to .config through /proc/config.gz" 451 depends on IKCONFIG && PROC_FS 452 ---help--- 453 This option enables access to the kernel configuration file 454 through /proc/config.gz. 455 456config LOG_BUF_SHIFT 457 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 458 range 12 21 459 default 17 460 help 461 Select kernel log buffer size as a power of 2. 462 Examples: 463 17 => 128 KB 464 16 => 64 KB 465 15 => 32 KB 466 14 => 16 KB 467 13 => 8 KB 468 12 => 4 KB 469 470# 471# Architectures with an unreliable sched_clock() should select this: 472# 473config HAVE_UNSTABLE_SCHED_CLOCK 474 bool 475 476menuconfig CGROUPS 477 boolean "Control Group support" 478 depends on EVENTFD 479 help 480 This option adds support for grouping sets of processes together, for 481 use with process control subsystems such as Cpusets, CFS, memory 482 controls or device isolation. 483 See 484 - Documentation/scheduler/sched-design-CFS.txt (CFS) 485 - Documentation/cgroups/ (features for grouping, isolation 486 and resource control) 487 488 Say N if unsure. 489 490if CGROUPS 491 492config CGROUP_DEBUG 493 bool "Example debug cgroup subsystem" 494 depends on CGROUPS 495 default n 496 help 497 This option enables a simple cgroup subsystem that 498 exports useful debugging information about the cgroups 499 framework. 500 501 Say N if unsure. 502 503config CGROUP_NS 504 bool "Namespace cgroup subsystem" 505 depends on CGROUPS 506 help 507 Provides a simple namespace cgroup subsystem to 508 provide hierarchical naming of sets of namespaces, 509 for instance virtual servers and checkpoint/restart 510 jobs. 511 512config CGROUP_FREEZER 513 bool "Freezer cgroup subsystem" 514 depends on CGROUPS 515 help 516 Provides a way to freeze and unfreeze all tasks in a 517 cgroup. 518 519config CGROUP_DEVICE 520 bool "Device controller for cgroups" 521 depends on CGROUPS && EXPERIMENTAL 522 help 523 Provides a cgroup implementing whitelists for devices which 524 a process in the cgroup can mknod or open. 525 526config CPUSETS 527 bool "Cpuset support" 528 depends on CGROUPS 529 help 530 This option will let you create and manage CPUSETs which 531 allow dynamically partitioning a system into sets of CPUs and 532 Memory Nodes and assigning tasks to run only within those sets. 533 This is primarily useful on large SMP or NUMA systems. 534 535 Say N if unsure. 536 537config PROC_PID_CPUSET 538 bool "Include legacy /proc/<pid>/cpuset file" 539 depends on CPUSETS 540 default y 541 542config CGROUP_CPUACCT 543 bool "Simple CPU accounting cgroup subsystem" 544 depends on CGROUPS 545 help 546 Provides a simple Resource Controller for monitoring the 547 total CPU consumed by the tasks in a cgroup. 548 549config RESOURCE_COUNTERS 550 bool "Resource counters" 551 help 552 This option enables controller independent resource accounting 553 infrastructure that works with cgroups. 554 depends on CGROUPS 555 556config CGROUP_MEM_RES_CTLR 557 bool "Memory Resource Controller for Control Groups" 558 depends on CGROUPS && RESOURCE_COUNTERS 559 select MM_OWNER 560 help 561 Provides a memory resource controller that manages both anonymous 562 memory and page cache. (See Documentation/cgroups/memory.txt) 563 564 Note that setting this option increases fixed memory overhead 565 associated with each page of memory in the system. By this, 566 20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory 567 usage tracking struct at boot. Total amount of this is printed out 568 at boot. 569 570 Only enable when you're ok with these trade offs and really 571 sure you need the memory resource controller. Even when you enable 572 this, you can set "cgroup_disable=memory" at your boot option to 573 disable memory resource controller and you can avoid overheads. 574 (and lose benefits of memory resource controller) 575 576 This config option also selects MM_OWNER config option, which 577 could in turn add some fork/exit overhead. 578 579config CGROUP_MEM_RES_CTLR_SWAP 580 bool "Memory Resource Controller Swap Extension" 581 depends on CGROUP_MEM_RES_CTLR && SWAP 582 help 583 Add swap management feature to memory resource controller. When you 584 enable this, you can limit mem+swap usage per cgroup. In other words, 585 when you disable this, memory resource controller has no cares to 586 usage of swap...a process can exhaust all of the swap. This extension 587 is useful when you want to avoid exhaustion swap but this itself 588 adds more overheads and consumes memory for remembering information. 589 Especially if you use 32bit system or small memory system, please 590 be careful about enabling this. When memory resource controller 591 is disabled by boot option, this will be automatically disabled and 592 there will be no overhead from this. Even when you set this config=y, 593 if boot option "noswapaccount" is set, swap will not be accounted. 594 Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page 595 size is 4096bytes, 512k per 1Gbytes of swap. 596 597menuconfig CGROUP_SCHED 598 bool "Group CPU scheduler" 599 depends on EXPERIMENTAL && CGROUPS 600 default n 601 help 602 This feature lets CPU scheduler recognize task groups and control CPU 603 bandwidth allocation to such task groups. It uses cgroups to group 604 tasks. 605 606if CGROUP_SCHED 607config FAIR_GROUP_SCHED 608 bool "Group scheduling for SCHED_OTHER" 609 depends on CGROUP_SCHED 610 default CGROUP_SCHED 611 612config RT_GROUP_SCHED 613 bool "Group scheduling for SCHED_RR/FIFO" 614 depends on EXPERIMENTAL 615 depends on CGROUP_SCHED 616 default n 617 help 618 This feature lets you explicitly allocate real CPU bandwidth 619 to task groups. If enabled, it will also make it impossible to 620 schedule realtime tasks for non-root users until you allocate 621 realtime bandwidth for them. 622 See Documentation/scheduler/sched-rt-group.txt for more information. 623 624endif #CGROUP_SCHED 625 626config BLK_CGROUP 627 tristate "Block IO controller" 628 depends on CGROUPS && BLOCK 629 default n 630 ---help--- 631 Generic block IO controller cgroup interface. This is the common 632 cgroup interface which should be used by various IO controlling 633 policies. 634 635 Currently, CFQ IO scheduler uses it to recognize task groups and 636 control disk bandwidth allocation (proportional time slice allocation) 637 to such task groups. 638 639 This option only enables generic Block IO controller infrastructure. 640 One needs to also enable actual IO controlling logic in CFQ for it 641 to take effect. (CONFIG_CFQ_GROUP_IOSCHED=y). 642 643 See Documentation/cgroups/blkio-controller.txt for more information. 644 645config DEBUG_BLK_CGROUP 646 bool "Enable Block IO controller debugging" 647 depends on BLK_CGROUP 648 default n 649 ---help--- 650 Enable some debugging help. Currently it exports additional stat 651 files in a cgroup which can be useful for debugging. 652 653endif # CGROUPS 654 655config MM_OWNER 656 bool 657 658config SYSFS_DEPRECATED 659 bool 660 661config SYSFS_DEPRECATED_V2 662 bool "enable deprecated sysfs features to support old userspace tools" 663 depends on SYSFS 664 default n 665 select SYSFS_DEPRECATED 666 help 667 This option switches the layout of sysfs to the deprecated 668 version. Do not use it on recent distributions. 669 670 The current sysfs layout features a unified device tree at 671 /sys/devices/, which is able to express a hierarchy between 672 class devices. If the deprecated option is set to Y, the 673 unified device tree is split into a bus device tree at 674 /sys/devices/ and several individual class device trees at 675 /sys/class/. The class and bus devices will be connected by 676 "<subsystem>:<name>" and the "device" links. The "block" 677 class devices, will not show up in /sys/class/block/. Some 678 subsystems will suppress the creation of some devices which 679 depend on the unified device tree. 680 681 This option is not a pure compatibility option that can 682 be safely enabled on newer distributions. It will change the 683 layout of sysfs to the non-extensible deprecated version, 684 and disable some features, which can not be exported without 685 confusing older userspace tools. Since 2007/2008 all major 686 distributions do not enable this option, and ship no tools which 687 depend on the deprecated layout or this option. 688 689 If you are using a new kernel on an older distribution, or use 690 older userspace tools, you might need to say Y here. Do not say Y, 691 if the original kernel, that came with your distribution, has 692 this option set to N. 693 694config RELAY 695 bool "Kernel->user space relay support (formerly relayfs)" 696 help 697 This option enables support for relay interface support in 698 certain file systems (such as debugfs). 699 It is designed to provide an efficient mechanism for tools and 700 facilities to relay large amounts of data from kernel space to 701 user space. 702 703 If unsure, say N. 704 705config NAMESPACES 706 bool "Namespaces support" if EMBEDDED 707 default !EMBEDDED 708 help 709 Provides the way to make tasks work with different objects using 710 the same id. For example same IPC id may refer to different objects 711 or same user id or pid may refer to different tasks when used in 712 different namespaces. 713 714config UTS_NS 715 bool "UTS namespace" 716 depends on NAMESPACES 717 help 718 In this namespace tasks see different info provided with the 719 uname() system call 720 721config IPC_NS 722 bool "IPC namespace" 723 depends on NAMESPACES && (SYSVIPC || POSIX_MQUEUE) 724 help 725 In this namespace tasks work with IPC ids which correspond to 726 different IPC objects in different namespaces. 727 728config USER_NS 729 bool "User namespace (EXPERIMENTAL)" 730 depends on NAMESPACES && EXPERIMENTAL 731 help 732 This allows containers, i.e. vservers, to use user namespaces 733 to provide different user info for different servers. 734 If unsure, say N. 735 736config PID_NS 737 bool "PID Namespaces (EXPERIMENTAL)" 738 default n 739 depends on NAMESPACES && EXPERIMENTAL 740 help 741 Support process id namespaces. This allows having multiple 742 processes with the same pid as long as they are in different 743 pid namespaces. This is a building block of containers. 744 745 Unless you want to work with an experimental feature 746 say N here. 747 748config NET_NS 749 bool "Network namespace" 750 default n 751 depends on NAMESPACES && EXPERIMENTAL && NET 752 help 753 Allow user space to create what appear to be multiple instances 754 of the network stack. 755 756config BLK_DEV_INITRD 757 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 758 depends on BROKEN || !FRV 759 help 760 The initial RAM filesystem is a ramfs which is loaded by the 761 boot loader (loadlin or lilo) and that is mounted as root 762 before the normal boot procedure. It is typically used to 763 load modules needed to mount the "real" root file system, 764 etc. See <file:Documentation/initrd.txt> for details. 765 766 If RAM disk support (BLK_DEV_RAM) is also included, this 767 also enables initial RAM disk (initrd) support and adds 768 15 Kbytes (more on some other architectures) to the kernel size. 769 770 If unsure say Y. 771 772if BLK_DEV_INITRD 773 774source "usr/Kconfig" 775 776endif 777 778config CC_OPTIMIZE_FOR_SIZE 779 bool "Optimize for size" 780 default y 781 help 782 Enabling this option will pass "-Os" instead of "-O2" to gcc 783 resulting in a smaller kernel. 784 785 If unsure, say Y. 786 787config SYSCTL 788 bool 789 790config ANON_INODES 791 bool 792 793menuconfig EMBEDDED 794 bool "Configure standard kernel features (for small systems)" 795 help 796 This option allows certain base kernel options and settings 797 to be disabled or tweaked. This is for specialized 798 environments which can tolerate a "non-standard" kernel. 799 Only use this if you really know what you are doing. 800 801config UID16 802 bool "Enable 16-bit UID system calls" if EMBEDDED 803 depends on ARM || BLACKFIN || CRIS || FRV || H8300 || X86_32 || M68K || (S390 && !64BIT) || SUPERH || SPARC32 || (SPARC64 && COMPAT) || UML || (X86_64 && IA32_EMULATION) 804 default y 805 help 806 This enables the legacy 16-bit UID syscall wrappers. 807 808config SYSCTL_SYSCALL 809 bool "Sysctl syscall support" if EMBEDDED 810 depends on PROC_SYSCTL 811 default y 812 select SYSCTL 813 ---help--- 814 sys_sysctl uses binary paths that have been found challenging 815 to properly maintain and use. The interface in /proc/sys 816 using paths with ascii names is now the primary path to this 817 information. 818 819 Almost nothing using the binary sysctl interface so if you are 820 trying to save some space it is probably safe to disable this, 821 making your kernel marginally smaller. 822 823 If unsure say Y here. 824 825config KALLSYMS 826 bool "Load all symbols for debugging/ksymoops" if EMBEDDED 827 default y 828 help 829 Say Y here to let the kernel print out symbolic crash information and 830 symbolic stack backtraces. This increases the size of the kernel 831 somewhat, as all symbols have to be loaded into the kernel image. 832 833config KALLSYMS_ALL 834 bool "Include all symbols in kallsyms" 835 depends on DEBUG_KERNEL && KALLSYMS 836 help 837 Normally kallsyms only contains the symbols of functions, for nicer 838 OOPS messages. Some debuggers can use kallsyms for other 839 symbols too: say Y here to include all symbols, if you need them 840 and you don't care about adding 300k to the size of your kernel. 841 842 Say N. 843 844config KALLSYMS_EXTRA_PASS 845 bool "Do an extra kallsyms pass" 846 depends on KALLSYMS 847 help 848 If kallsyms is not working correctly, the build will fail with 849 inconsistent kallsyms data. If that occurs, log a bug report and 850 turn on KALLSYMS_EXTRA_PASS which should result in a stable build. 851 Always say N here unless you find a bug in kallsyms, which must be 852 reported. KALLSYMS_EXTRA_PASS is only a temporary workaround while 853 you wait for kallsyms to be fixed. 854 855 856config HOTPLUG 857 bool "Support for hot-pluggable devices" if EMBEDDED 858 default y 859 help 860 This option is provided for the case where no hotplug or uevent 861 capabilities is wanted by the kernel. You should only consider 862 disabling this option for embedded systems that do not use modules, a 863 dynamic /dev tree, or dynamic device discovery. Just say Y. 864 865config PRINTK 866 default y 867 bool "Enable support for printk" if EMBEDDED 868 help 869 This option enables normal printk support. Removing it 870 eliminates most of the message strings from the kernel image 871 and makes the kernel more or less silent. As this makes it 872 very difficult to diagnose system problems, saying N here is 873 strongly discouraged. 874 875config BUG 876 bool "BUG() support" if EMBEDDED 877 default y 878 help 879 Disabling this option eliminates support for BUG and WARN, reducing 880 the size of your kernel image and potentially quietly ignoring 881 numerous fatal conditions. You should only consider disabling this 882 option for embedded systems with no facilities for reporting errors. 883 Just say Y. 884 885config ELF_CORE 886 default y 887 bool "Enable ELF core dumps" if EMBEDDED 888 help 889 Enable support for generating core dumps. Disabling saves about 4k. 890 891config PCSPKR_PLATFORM 892 bool "Enable PC-Speaker support" if EMBEDDED 893 depends on ALPHA || X86 || MIPS || PPC_PREP || PPC_CHRP || PPC_PSERIES 894 default y 895 help 896 This option allows to disable the internal PC-Speaker 897 support, saving some memory. 898 899config BASE_FULL 900 default y 901 bool "Enable full-sized data structures for core" if EMBEDDED 902 help 903 Disabling this option reduces the size of miscellaneous core 904 kernel data structures. This saves memory on small machines, 905 but may reduce performance. 906 907config FUTEX 908 bool "Enable futex support" if EMBEDDED 909 default y 910 select RT_MUTEXES 911 help 912 Disabling this option will cause the kernel to be built without 913 support for "fast userspace mutexes". The resulting kernel may not 914 run glibc-based applications correctly. 915 916config EPOLL 917 bool "Enable eventpoll support" if EMBEDDED 918 default y 919 select ANON_INODES 920 help 921 Disabling this option will cause the kernel to be built without 922 support for epoll family of system calls. 923 924config SIGNALFD 925 bool "Enable signalfd() system call" if EMBEDDED 926 select ANON_INODES 927 default y 928 help 929 Enable the signalfd() system call that allows to receive signals 930 on a file descriptor. 931 932 If unsure, say Y. 933 934config TIMERFD 935 bool "Enable timerfd() system call" if EMBEDDED 936 select ANON_INODES 937 default y 938 help 939 Enable the timerfd() system call that allows to receive timer 940 events on a file descriptor. 941 942 If unsure, say Y. 943 944config EVENTFD 945 bool "Enable eventfd() system call" if EMBEDDED 946 select ANON_INODES 947 default y 948 help 949 Enable the eventfd() system call that allows to receive both 950 kernel notification (ie. KAIO) or userspace notifications. 951 952 If unsure, say Y. 953 954config SHMEM 955 bool "Use full shmem filesystem" if EMBEDDED 956 default y 957 depends on MMU 958 help 959 The shmem is an internal filesystem used to manage shared memory. 960 It is backed by swap and manages resource limits. It is also exported 961 to userspace as tmpfs if TMPFS is enabled. Disabling this 962 option replaces shmem and tmpfs with the much simpler ramfs code, 963 which may be appropriate on small systems without swap. 964 965config AIO 966 bool "Enable AIO support" if EMBEDDED 967 default y 968 help 969 This option enables POSIX asynchronous I/O which may by used 970 by some high performance threaded applications. Disabling 971 this option saves about 7k. 972 973config HAVE_PERF_EVENTS 974 bool 975 help 976 See tools/perf/design.txt for details. 977 978config PERF_USE_VMALLOC 979 bool 980 help 981 See tools/perf/design.txt for details 982 983menu "Kernel Performance Events And Counters" 984 985config PERF_EVENTS 986 bool "Kernel performance events and counters" 987 default y if (PROFILING || PERF_COUNTERS) 988 depends on HAVE_PERF_EVENTS 989 select ANON_INODES 990 help 991 Enable kernel support for various performance events provided 992 by software and hardware. 993 994 Software events are supported either built-in or via the 995 use of generic tracepoints. 996 997 Most modern CPUs support performance events via performance 998 counter registers. These registers count the number of certain 999 types of hw events: such as instructions executed, cachemisses 1000 suffered, or branches mis-predicted - without slowing down the 1001 kernel or applications. These registers can also trigger interrupts 1002 when a threshold number of events have passed - and can thus be 1003 used to profile the code that runs on that CPU. 1004 1005 The Linux Performance Event subsystem provides an abstraction of 1006 these software and hardware event capabilities, available via a 1007 system call and used by the "perf" utility in tools/perf/. It 1008 provides per task and per CPU counters, and it provides event 1009 capabilities on top of those. 1010 1011 Say Y if unsure. 1012 1013config PERF_COUNTERS 1014 bool "Kernel performance counters (old config option)" 1015 depends on HAVE_PERF_EVENTS 1016 help 1017 This config has been obsoleted by the PERF_EVENTS 1018 config option - please see that one for details. 1019 1020 It has no effect on the kernel whether you enable 1021 it or not, it is a compatibility placeholder. 1022 1023 Say N if unsure. 1024 1025config DEBUG_PERF_USE_VMALLOC 1026 default n 1027 bool "Debug: use vmalloc to back perf mmap() buffers" 1028 depends on PERF_EVENTS && DEBUG_KERNEL 1029 select PERF_USE_VMALLOC 1030 help 1031 Use vmalloc memory to back perf mmap() buffers. 1032 1033 Mostly useful for debugging the vmalloc code on platforms 1034 that don't require it. 1035 1036 Say N if unsure. 1037 1038endmenu 1039 1040config VM_EVENT_COUNTERS 1041 default y 1042 bool "Enable VM event counters for /proc/vmstat" if EMBEDDED 1043 help 1044 VM event counters are needed for event counts to be shown. 1045 This option allows the disabling of the VM event counters 1046 on EMBEDDED systems. /proc/vmstat will only show page counts 1047 if VM event counters are disabled. 1048 1049config PCI_QUIRKS 1050 default y 1051 bool "Enable PCI quirk workarounds" if EMBEDDED 1052 depends on PCI 1053 help 1054 This enables workarounds for various PCI chipset 1055 bugs/quirks. Disable this only if your target machine is 1056 unaffected by PCI quirks. 1057 1058config SLUB_DEBUG 1059 default y 1060 bool "Enable SLUB debugging support" if EMBEDDED 1061 depends on SLUB && SYSFS 1062 help 1063 SLUB has extensive debug support features. Disabling these can 1064 result in significant savings in code size. This also disables 1065 SLUB sysfs support. /sys/slab will not exist and there will be 1066 no support for cache validation etc. 1067 1068config COMPAT_BRK 1069 bool "Disable heap randomization" 1070 default y 1071 help 1072 Randomizing heap placement makes heap exploits harder, but it 1073 also breaks ancient binaries (including anything libc5 based). 1074 This option changes the bootup default to heap randomization 1075 disabled, and can be overridden at runtime by setting 1076 /proc/sys/kernel/randomize_va_space to 2. 1077 1078 On non-ancient distros (post-2000 ones) N is usually a safe choice. 1079 1080choice 1081 prompt "Choose SLAB allocator" 1082 default SLUB 1083 help 1084 This option allows to select a slab allocator. 1085 1086config SLAB 1087 bool "SLAB" 1088 help 1089 The regular slab allocator that is established and known to work 1090 well in all environments. It organizes cache hot objects in 1091 per cpu and per node queues. 1092 1093config SLUB 1094 bool "SLUB (Unqueued Allocator)" 1095 help 1096 SLUB is a slab allocator that minimizes cache line usage 1097 instead of managing queues of cached objects (SLAB approach). 1098 Per cpu caching is realized using slabs of objects instead 1099 of queues of objects. SLUB can use memory efficiently 1100 and has enhanced diagnostics. SLUB is the default choice for 1101 a slab allocator. 1102 1103config SLOB 1104 depends on EMBEDDED 1105 bool "SLOB (Simple Allocator)" 1106 help 1107 SLOB replaces the stock allocator with a drastically simpler 1108 allocator. SLOB is generally more space efficient but 1109 does not perform as well on large systems. 1110 1111endchoice 1112 1113config MMAP_ALLOW_UNINITIALIZED 1114 bool "Allow mmapped anonymous memory to be uninitialized" 1115 depends on EMBEDDED && !MMU 1116 default n 1117 help 1118 Normally, and according to the Linux spec, anonymous memory obtained 1119 from mmap() has it's contents cleared before it is passed to 1120 userspace. Enabling this config option allows you to request that 1121 mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus 1122 providing a huge performance boost. If this option is not enabled, 1123 then the flag will be ignored. 1124 1125 This is taken advantage of by uClibc's malloc(), and also by 1126 ELF-FDPIC binfmt's brk and stack allocator. 1127 1128 Because of the obvious security issues, this option should only be 1129 enabled on embedded devices where you control what is run in 1130 userspace. Since that isn't generally a problem on no-MMU systems, 1131 it is normally safe to say Y here. 1132 1133 See Documentation/nommu-mmap.txt for more information. 1134 1135config PROFILING 1136 bool "Profiling support" 1137 help 1138 Say Y here to enable the extended profiling support mechanisms used 1139 by profilers such as OProfile. 1140 1141# 1142# Place an empty function call at each tracepoint site. Can be 1143# dynamically changed for a probe function. 1144# 1145config TRACEPOINTS 1146 bool 1147 1148source "arch/Kconfig" 1149 1150endmenu # General setup 1151 1152config HAVE_GENERIC_DMA_COHERENT 1153 bool 1154 default n 1155 1156config SLABINFO 1157 bool 1158 depends on PROC_FS 1159 depends on SLAB || SLUB_DEBUG 1160 default y 1161 1162config RT_MUTEXES 1163 boolean 1164 1165config BASE_SMALL 1166 int 1167 default 0 if BASE_FULL 1168 default 1 if !BASE_FULL 1169 1170menuconfig MODULES 1171 bool "Enable loadable module support" 1172 help 1173 Kernel modules are small pieces of compiled code which can 1174 be inserted in the running kernel, rather than being 1175 permanently built into the kernel. You use the "modprobe" 1176 tool to add (and sometimes remove) them. If you say Y here, 1177 many parts of the kernel can be built as modules (by 1178 answering M instead of Y where indicated): this is most 1179 useful for infrequently used options which are not required 1180 for booting. For more information, see the man pages for 1181 modprobe, lsmod, modinfo, insmod and rmmod. 1182 1183 If you say Y here, you will need to run "make 1184 modules_install" to put the modules under /lib/modules/ 1185 where modprobe can find them (you may need to be root to do 1186 this). 1187 1188 If unsure, say Y. 1189 1190if MODULES 1191 1192config MODULE_FORCE_LOAD 1193 bool "Forced module loading" 1194 default n 1195 help 1196 Allow loading of modules without version information (ie. modprobe 1197 --force). Forced module loading sets the 'F' (forced) taint flag and 1198 is usually a really bad idea. 1199 1200config MODULE_UNLOAD 1201 bool "Module unloading" 1202 help 1203 Without this option you will not be able to unload any 1204 modules (note that some modules may not be unloadable 1205 anyway), which makes your kernel smaller, faster 1206 and simpler. If unsure, say Y. 1207 1208config MODULE_FORCE_UNLOAD 1209 bool "Forced module unloading" 1210 depends on MODULE_UNLOAD && EXPERIMENTAL 1211 help 1212 This option allows you to force a module to unload, even if the 1213 kernel believes it is unsafe: the kernel will remove the module 1214 without waiting for anyone to stop using it (using the -f option to 1215 rmmod). This is mainly for kernel developers and desperate users. 1216 If unsure, say N. 1217 1218config MODVERSIONS 1219 bool "Module versioning support" 1220 help 1221 Usually, you have to use modules compiled with your kernel. 1222 Saying Y here makes it sometimes possible to use modules 1223 compiled for different kernels, by adding enough information 1224 to the modules to (hopefully) spot any changes which would 1225 make them incompatible with the kernel you are running. If 1226 unsure, say N. 1227 1228config MODULE_SRCVERSION_ALL 1229 bool "Source checksum for all modules" 1230 help 1231 Modules which contain a MODULE_VERSION get an extra "srcversion" 1232 field inserted into their modinfo section, which contains a 1233 sum of the source files which made it. This helps maintainers 1234 see exactly which source was used to build a module (since 1235 others sometimes change the module source without updating 1236 the version). With this option, such a "srcversion" field 1237 will be created for all modules. If unsure, say N. 1238 1239endif # MODULES 1240 1241config INIT_ALL_POSSIBLE 1242 bool 1243 help 1244 Back when each arch used to define their own cpu_online_map and 1245 cpu_possible_map, some of them chose to initialize cpu_possible_map 1246 with all 1s, and others with all 0s. When they were centralised, 1247 it was better to provide this option than to break all the archs 1248 and have several arch maintainers pursuing me down dark alleys. 1249 1250config STOP_MACHINE 1251 bool 1252 default y 1253 depends on (SMP && MODULE_UNLOAD) || HOTPLUG_CPU 1254 help 1255 Need stop_machine() primitive. 1256 1257source "block/Kconfig" 1258 1259config PREEMPT_NOTIFIERS 1260 bool 1261 1262config PADATA 1263 depends on SMP 1264 bool 1265 1266source "kernel/Kconfig.locks" 1267