1# SPDX-License-Identifier: GPL-2.0-only 2config CC_VERSION_TEXT 3 string 4 default "$(CC_VERSION_TEXT)" 5 help 6 This is used in unclear ways: 7 8 - Re-run Kconfig when the compiler is updated 9 The 'default' property references the environment variable, 10 CC_VERSION_TEXT so it is recorded in include/config/auto.conf.cmd. 11 When the compiler is updated, Kconfig will be invoked. 12 13 - Ensure full rebuild when the compiler is updated 14 include/linux/compiler-version.h contains this option in the comment 15 line so fixdep adds include/config/CC_VERSION_TEXT into the 16 auto-generated dependency. When the compiler is updated, syncconfig 17 will touch it and then every file will be rebuilt. 18 19config CC_IS_GCC 20 def_bool $(success,test "$(cc-name)" = GCC) 21 22config GCC_VERSION 23 int 24 default $(cc-version) if CC_IS_GCC 25 default 0 26 27config CC_IS_CLANG 28 def_bool $(success,test "$(cc-name)" = Clang) 29 30config CLANG_VERSION 31 int 32 default $(cc-version) if CC_IS_CLANG 33 default 0 34 35config AS_IS_GNU 36 def_bool $(success,test "$(as-name)" = GNU) 37 38config AS_IS_LLVM 39 def_bool $(success,test "$(as-name)" = LLVM) 40 41config AS_VERSION 42 int 43 # Use clang version if this is the integrated assembler 44 default CLANG_VERSION if AS_IS_LLVM 45 default $(as-version) 46 47config LD_IS_BFD 48 def_bool $(success,test "$(ld-name)" = BFD) 49 50config LD_VERSION 51 int 52 default $(ld-version) if LD_IS_BFD 53 default 0 54 55config LD_IS_LLD 56 def_bool $(success,test "$(ld-name)" = LLD) 57 58config LLD_VERSION 59 int 60 default $(ld-version) if LD_IS_LLD 61 default 0 62 63config CC_CAN_LINK 64 bool 65 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag)) if 64BIT 66 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag)) 67 68config CC_CAN_LINK_STATIC 69 bool 70 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m64-flag) -static) if 64BIT 71 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(m32-flag) -static) 72 73config CC_HAS_ASM_GOTO 74 def_bool $(success,$(srctree)/scripts/gcc-goto.sh $(CC)) 75 76config CC_HAS_ASM_GOTO_OUTPUT 77 depends on CC_HAS_ASM_GOTO 78 def_bool $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) 79 80config TOOLS_SUPPORT_RELR 81 def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 82 83config CC_HAS_ASM_INLINE 84 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 85 86config CC_HAS_NO_PROFILE_FN_ATTR 87 def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 88 89config CONSTRUCTORS 90 bool 91 92config IRQ_WORK 93 bool 94 95config BUILDTIME_TABLE_SORT 96 bool 97 98config THREAD_INFO_IN_TASK 99 bool 100 help 101 Select this to move thread_info off the stack into task_struct. To 102 make this work, an arch will need to remove all thread_info fields 103 except flags and fix any runtime bugs. 104 105 One subtle change that will be needed is to use try_get_task_stack() 106 and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 107 108menu "General setup" 109 110config BROKEN 111 bool 112 113config BROKEN_ON_SMP 114 bool 115 depends on BROKEN || !SMP 116 default y 117 118config INIT_ENV_ARG_LIMIT 119 int 120 default 32 if !UML 121 default 128 if UML 122 help 123 Maximum of each of the number of arguments and environment 124 variables passed to init from the kernel command line. 125 126config COMPILE_TEST 127 bool "Compile also drivers which will not load" 128 depends on HAS_IOMEM 129 help 130 Some drivers can be compiled on a different platform than they are 131 intended to be run on. Despite they cannot be loaded there (or even 132 when they load they cannot be used due to missing HW support), 133 developers still, opposing to distributors, might want to build such 134 drivers to compile-test them. 135 136 If you are a developer and want to build everything available, say Y 137 here. If you are a user/distributor, say N here to exclude useless 138 drivers to be distributed. 139 140config UAPI_HEADER_TEST 141 bool "Compile test UAPI headers" 142 depends on HEADERS_INSTALL && CC_CAN_LINK 143 help 144 Compile test headers exported to user-space to ensure they are 145 self-contained, i.e. compilable as standalone units. 146 147 If you are a developer or tester and want to ensure the exported 148 headers are self-contained, say Y here. Otherwise, choose N. 149 150config LOCALVERSION 151 string "Local version - append to kernel release" 152 help 153 Append an extra string to the end of your kernel version. 154 This will show up when you type uname, for example. 155 The string you set here will be appended after the contents of 156 any files with a filename matching localversion* in your 157 object and source tree, in that order. Your total string can 158 be a maximum of 64 characters. 159 160config LOCALVERSION_AUTO 161 bool "Automatically append version information to the version string" 162 default y 163 depends on !COMPILE_TEST 164 help 165 This will try to automatically determine if the current tree is a 166 release tree by looking for git tags that belong to the current 167 top of tree revision. 168 169 A string of the format -gxxxxxxxx will be added to the localversion 170 if a git-based tree is found. The string generated by this will be 171 appended after any matching localversion* files, and after the value 172 set in CONFIG_LOCALVERSION. 173 174 (The actual string used here is the first eight characters produced 175 by running the command: 176 177 $ git rev-parse --verify HEAD 178 179 which is done within the script "scripts/setlocalversion".) 180 181config BUILD_SALT 182 string "Build ID Salt" 183 default "" 184 help 185 The build ID is used to link binaries and their debug info. Setting 186 this option will use the value in the calculation of the build id. 187 This is mostly useful for distributions which want to ensure the 188 build is unique between builds. It's safe to leave the default. 189 190config HAVE_KERNEL_GZIP 191 bool 192 193config HAVE_KERNEL_BZIP2 194 bool 195 196config HAVE_KERNEL_LZMA 197 bool 198 199config HAVE_KERNEL_XZ 200 bool 201 202config HAVE_KERNEL_LZO 203 bool 204 205config HAVE_KERNEL_LZ4 206 bool 207 208config HAVE_KERNEL_ZSTD 209 bool 210 211config HAVE_KERNEL_UNCOMPRESSED 212 bool 213 214choice 215 prompt "Kernel compression mode" 216 default KERNEL_GZIP 217 depends on HAVE_KERNEL_GZIP || HAVE_KERNEL_BZIP2 || HAVE_KERNEL_LZMA || HAVE_KERNEL_XZ || HAVE_KERNEL_LZO || HAVE_KERNEL_LZ4 || HAVE_KERNEL_ZSTD || HAVE_KERNEL_UNCOMPRESSED 218 help 219 The linux kernel is a kind of self-extracting executable. 220 Several compression algorithms are available, which differ 221 in efficiency, compression and decompression speed. 222 Compression speed is only relevant when building a kernel. 223 Decompression speed is relevant at each boot. 224 225 If you have any problems with bzip2 or lzma compressed 226 kernels, mail me (Alain Knaff) <[email protected]>. (An older 227 version of this functionality (bzip2 only), for 2.4, was 228 supplied by Christian Ludwig) 229 230 High compression options are mostly useful for users, who 231 are low on disk space (embedded systems), but for whom ram 232 size matters less. 233 234 If in doubt, select 'gzip' 235 236config KERNEL_GZIP 237 bool "Gzip" 238 depends on HAVE_KERNEL_GZIP 239 help 240 The old and tried gzip compression. It provides a good balance 241 between compression ratio and decompression speed. 242 243config KERNEL_BZIP2 244 bool "Bzip2" 245 depends on HAVE_KERNEL_BZIP2 246 help 247 Its compression ratio and speed is intermediate. 248 Decompression speed is slowest among the choices. The kernel 249 size is about 10% smaller with bzip2, in comparison to gzip. 250 Bzip2 uses a large amount of memory. For modern kernels you 251 will need at least 8MB RAM or more for booting. 252 253config KERNEL_LZMA 254 bool "LZMA" 255 depends on HAVE_KERNEL_LZMA 256 help 257 This compression algorithm's ratio is best. Decompression speed 258 is between gzip and bzip2. Compression is slowest. 259 The kernel size is about 33% smaller with LZMA in comparison to gzip. 260 261config KERNEL_XZ 262 bool "XZ" 263 depends on HAVE_KERNEL_XZ 264 help 265 XZ uses the LZMA2 algorithm and instruction set specific 266 BCJ filters which can improve compression ratio of executable 267 code. The size of the kernel is about 30% smaller with XZ in 268 comparison to gzip. On architectures for which there is a BCJ 269 filter (i386, x86_64, ARM, IA-64, PowerPC, and SPARC), XZ 270 will create a few percent smaller kernel than plain LZMA. 271 272 The speed is about the same as with LZMA: The decompression 273 speed of XZ is better than that of bzip2 but worse than gzip 274 and LZO. Compression is slow. 275 276config KERNEL_LZO 277 bool "LZO" 278 depends on HAVE_KERNEL_LZO 279 help 280 Its compression ratio is the poorest among the choices. The kernel 281 size is about 10% bigger than gzip; however its speed 282 (both compression and decompression) is the fastest. 283 284config KERNEL_LZ4 285 bool "LZ4" 286 depends on HAVE_KERNEL_LZ4 287 help 288 LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 289 A preliminary version of LZ4 de/compression tool is available at 290 <https://code.google.com/p/lz4/>. 291 292 Its compression ratio is worse than LZO. The size of the kernel 293 is about 8% bigger than LZO. But the decompression speed is 294 faster than LZO. 295 296config KERNEL_ZSTD 297 bool "ZSTD" 298 depends on HAVE_KERNEL_ZSTD 299 help 300 ZSTD is a compression algorithm targeting intermediate compression 301 with fast decompression speed. It will compress better than GZIP and 302 decompress around the same speed as LZO, but slower than LZ4. You 303 will need at least 192 KB RAM or more for booting. The zstd command 304 line tool is required for compression. 305 306config KERNEL_UNCOMPRESSED 307 bool "None" 308 depends on HAVE_KERNEL_UNCOMPRESSED 309 help 310 Produce uncompressed kernel image. This option is usually not what 311 you want. It is useful for debugging the kernel in slow simulation 312 environments, where decompressing and moving the kernel is awfully 313 slow. This option allows early boot code to skip the decompressor 314 and jump right at uncompressed kernel image. 315 316endchoice 317 318config DEFAULT_INIT 319 string "Default init path" 320 default "" 321 help 322 This option determines the default init for the system if no init= 323 option is passed on the kernel command line. If the requested path is 324 not present, we will still then move on to attempting further 325 locations (e.g. /sbin/init, etc). If this is empty, we will just use 326 the fallback list when init= is not passed. 327 328config DEFAULT_HOSTNAME 329 string "Default hostname" 330 default "(none)" 331 help 332 This option determines the default system hostname before userspace 333 calls sethostname(2). The kernel traditionally uses "(none)" here, 334 but you may wish to use a different default here to make a minimal 335 system more usable with less configuration. 336 337# 338# For some reason microblaze and nios2 hard code SWAP=n. Hopefully we can 339# add proper SWAP support to them, in which case this can be remove. 340# 341config ARCH_NO_SWAP 342 bool 343 344config SWAP 345 bool "Support for paging of anonymous memory (swap)" 346 depends on MMU && BLOCK && !ARCH_NO_SWAP 347 default y 348 help 349 This option allows you to choose whether you want to have support 350 for so called swap devices or swap files in your kernel that are 351 used to provide more virtual memory than the actual RAM present 352 in your computer. If unsure say Y. 353 354config SYSVIPC 355 bool "System V IPC" 356 help 357 Inter Process Communication is a suite of library functions and 358 system calls which let processes (running programs) synchronize and 359 exchange information. It is generally considered to be a good thing, 360 and some programs won't run unless you say Y here. In particular, if 361 you want to run the DOS emulator dosemu under Linux (read the 362 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 363 you'll need to say Y here. 364 365 You can find documentation about IPC with "info ipc" and also in 366 section 6.4 of the Linux Programmer's Guide, available from 367 <http://www.tldp.org/guides.html>. 368 369config SYSVIPC_SYSCTL 370 bool 371 depends on SYSVIPC 372 depends on SYSCTL 373 default y 374 375config POSIX_MQUEUE 376 bool "POSIX Message Queues" 377 depends on NET 378 help 379 POSIX variant of message queues is a part of IPC. In POSIX message 380 queues every message has a priority which decides about succession 381 of receiving it by a process. If you want to compile and run 382 programs written e.g. for Solaris with use of its POSIX message 383 queues (functions mq_*) say Y here. 384 385 POSIX message queues are visible as a filesystem called 'mqueue' 386 and can be mounted somewhere if you want to do filesystem 387 operations on message queues. 388 389 If unsure, say Y. 390 391config POSIX_MQUEUE_SYSCTL 392 bool 393 depends on POSIX_MQUEUE 394 depends on SYSCTL 395 default y 396 397config WATCH_QUEUE 398 bool "General notification queue" 399 default n 400 help 401 402 This is a general notification queue for the kernel to pass events to 403 userspace by splicing them into pipes. It can be used in conjunction 404 with watches for key/keyring change notifications and device 405 notifications. 406 407 See Documentation/watch_queue.rst 408 409config CROSS_MEMORY_ATTACH 410 bool "Enable process_vm_readv/writev syscalls" 411 depends on MMU 412 default y 413 help 414 Enabling this option adds the system calls process_vm_readv and 415 process_vm_writev which allow a process with the correct privileges 416 to directly read from or write to another process' address space. 417 See the man page for more details. 418 419config USELIB 420 bool "uselib syscall" 421 def_bool ALPHA || M68K || SPARC || X86_32 || IA32_EMULATION 422 help 423 This option enables the uselib syscall, a system call used in the 424 dynamic linker from libc5 and earlier. glibc does not use this 425 system call. If you intend to run programs built on libc5 or 426 earlier, you may need to enable this syscall. Current systems 427 running glibc can safely disable this. 428 429config AUDIT 430 bool "Auditing support" 431 depends on NET 432 help 433 Enable auditing infrastructure that can be used with another 434 kernel subsystem, such as SELinux (which requires this for 435 logging of avc messages output). System call auditing is included 436 on architectures which support it. 437 438config HAVE_ARCH_AUDITSYSCALL 439 bool 440 441config AUDITSYSCALL 442 def_bool y 443 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 444 select FSNOTIFY 445 446source "kernel/irq/Kconfig" 447source "kernel/time/Kconfig" 448source "kernel/bpf/Kconfig" 449source "kernel/Kconfig.preempt" 450 451menu "CPU/Task time and stats accounting" 452 453config VIRT_CPU_ACCOUNTING 454 bool 455 456choice 457 prompt "Cputime accounting" 458 default TICK_CPU_ACCOUNTING if !PPC64 459 default VIRT_CPU_ACCOUNTING_NATIVE if PPC64 460 461# Kind of a stub config for the pure tick based cputime accounting 462config TICK_CPU_ACCOUNTING 463 bool "Simple tick based cputime accounting" 464 depends on !S390 && !NO_HZ_FULL 465 help 466 This is the basic tick based cputime accounting that maintains 467 statistics about user, system and idle time spent on per jiffies 468 granularity. 469 470 If unsure, say Y. 471 472config VIRT_CPU_ACCOUNTING_NATIVE 473 bool "Deterministic task and CPU time accounting" 474 depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 475 select VIRT_CPU_ACCOUNTING 476 help 477 Select this option to enable more accurate task and CPU time 478 accounting. This is done by reading a CPU counter on each 479 kernel entry and exit and on transitions within the kernel 480 between system, softirq and hardirq state, so there is a 481 small performance impact. In the case of s390 or IBM POWER > 5, 482 this also enables accounting of stolen time on logically-partitioned 483 systems. 484 485config VIRT_CPU_ACCOUNTING_GEN 486 bool "Full dynticks CPU time accounting" 487 depends on HAVE_CONTEXT_TRACKING 488 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 489 depends on GENERIC_CLOCKEVENTS 490 select VIRT_CPU_ACCOUNTING 491 select CONTEXT_TRACKING 492 help 493 Select this option to enable task and CPU time accounting on full 494 dynticks systems. This accounting is implemented by watching every 495 kernel-user boundaries using the context tracking subsystem. 496 The accounting is thus performed at the expense of some significant 497 overhead. 498 499 For now this is only useful if you are working on the full 500 dynticks subsystem development. 501 502 If unsure, say N. 503 504endchoice 505 506config IRQ_TIME_ACCOUNTING 507 bool "Fine granularity task level IRQ time accounting" 508 depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 509 help 510 Select this option to enable fine granularity task irq time 511 accounting. This is done by reading a timestamp on each 512 transitions between softirq and hardirq state, so there can be a 513 small performance impact. 514 515 If in doubt, say N here. 516 517config HAVE_SCHED_AVG_IRQ 518 def_bool y 519 depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 520 depends on SMP 521 522config SCHED_THERMAL_PRESSURE 523 bool 524 default y if ARM && ARM_CPU_TOPOLOGY 525 default y if ARM64 526 depends on SMP 527 depends on CPU_FREQ_THERMAL 528 help 529 Select this option to enable thermal pressure accounting in the 530 scheduler. Thermal pressure is the value conveyed to the scheduler 531 that reflects the reduction in CPU compute capacity resulted from 532 thermal throttling. Thermal throttling occurs when the performance of 533 a CPU is capped due to high operating temperatures. 534 535 If selected, the scheduler will be able to balance tasks accordingly, 536 i.e. put less load on throttled CPUs than on non/less throttled ones. 537 538 This requires the architecture to implement 539 arch_set_thermal_pressure() and arch_scale_thermal_pressure(). 540 541config BSD_PROCESS_ACCT 542 bool "BSD Process Accounting" 543 depends on MULTIUSER 544 help 545 If you say Y here, a user level program will be able to instruct the 546 kernel (via a special system call) to write process accounting 547 information to a file: whenever a process exits, information about 548 that process will be appended to the file by the kernel. The 549 information includes things such as creation time, owning user, 550 command name, memory usage, controlling terminal etc. (the complete 551 list is in the struct acct in <file:include/linux/acct.h>). It is 552 up to the user level program to do useful things with this 553 information. This is generally a good idea, so say Y. 554 555config BSD_PROCESS_ACCT_V3 556 bool "BSD Process Accounting version 3 file format" 557 depends on BSD_PROCESS_ACCT 558 default n 559 help 560 If you say Y here, the process accounting information is written 561 in a new file format that also logs the process IDs of each 562 process and its parent. Note that this file format is incompatible 563 with previous v0/v1/v2 file formats, so you will need updated tools 564 for processing it. A preliminary version of these tools is available 565 at <http://www.gnu.org/software/acct/>. 566 567config TASKSTATS 568 bool "Export task/process statistics through netlink" 569 depends on NET 570 depends on MULTIUSER 571 default n 572 help 573 Export selected statistics for tasks/processes through the 574 generic netlink interface. Unlike BSD process accounting, the 575 statistics are available during the lifetime of tasks/processes as 576 responses to commands. Like BSD accounting, they are sent to user 577 space on task exit. 578 579 Say N if unsure. 580 581config TASK_DELAY_ACCT 582 bool "Enable per-task delay accounting" 583 depends on TASKSTATS 584 select SCHED_INFO 585 help 586 Collect information on time spent by a task waiting for system 587 resources like cpu, synchronous block I/O completion and swapping 588 in pages. Such statistics can help in setting a task's priorities 589 relative to other tasks for cpu, io, rss limits etc. 590 591 Say N if unsure. 592 593config TASK_XACCT 594 bool "Enable extended accounting over taskstats" 595 depends on TASKSTATS 596 help 597 Collect extended task accounting data and send the data 598 to userland for processing over the taskstats interface. 599 600 Say N if unsure. 601 602config TASK_IO_ACCOUNTING 603 bool "Enable per-task storage I/O accounting" 604 depends on TASK_XACCT 605 help 606 Collect information on the number of bytes of storage I/O which this 607 task has caused. 608 609 Say N if unsure. 610 611config PSI 612 bool "Pressure stall information tracking" 613 help 614 Collect metrics that indicate how overcommitted the CPU, memory, 615 and IO capacity are in the system. 616 617 If you say Y here, the kernel will create /proc/pressure/ with the 618 pressure statistics files cpu, memory, and io. These will indicate 619 the share of walltime in which some or all tasks in the system are 620 delayed due to contention of the respective resource. 621 622 In kernels with cgroup support, cgroups (cgroup2 only) will 623 have cpu.pressure, memory.pressure, and io.pressure files, 624 which aggregate pressure stalls for the grouped tasks only. 625 626 For more details see Documentation/accounting/psi.rst. 627 628 Say N if unsure. 629 630config PSI_DEFAULT_DISABLED 631 bool "Require boot parameter to enable pressure stall information tracking" 632 default n 633 depends on PSI 634 help 635 If set, pressure stall information tracking will be disabled 636 per default but can be enabled through passing psi=1 on the 637 kernel commandline during boot. 638 639 This feature adds some code to the task wakeup and sleep 640 paths of the scheduler. The overhead is too low to affect 641 common scheduling-intense workloads in practice (such as 642 webservers, memcache), but it does show up in artificial 643 scheduler stress tests, such as hackbench. 644 645 If you are paranoid and not sure what the kernel will be 646 used for, say Y. 647 648 Say N if unsure. 649 650endmenu # "CPU/Task time and stats accounting" 651 652config CPU_ISOLATION 653 bool "CPU isolation" 654 depends on SMP || COMPILE_TEST 655 default y 656 help 657 Make sure that CPUs running critical tasks are not disturbed by 658 any source of "noise" such as unbound workqueues, timers, kthreads... 659 Unbound jobs get offloaded to housekeeping CPUs. This is driven by 660 the "isolcpus=" boot parameter. 661 662 Say Y if unsure. 663 664source "kernel/rcu/Kconfig" 665 666config BUILD_BIN2C 667 bool 668 default n 669 670config IKCONFIG 671 tristate "Kernel .config support" 672 help 673 This option enables the complete Linux kernel ".config" file 674 contents to be saved in the kernel. It provides documentation 675 of which kernel options are used in a running kernel or in an 676 on-disk kernel. This information can be extracted from the kernel 677 image file with the script scripts/extract-ikconfig and used as 678 input to rebuild the current kernel or to build another kernel. 679 It can also be extracted from a running kernel by reading 680 /proc/config.gz if enabled (below). 681 682config IKCONFIG_PROC 683 bool "Enable access to .config through /proc/config.gz" 684 depends on IKCONFIG && PROC_FS 685 help 686 This option enables access to the kernel configuration file 687 through /proc/config.gz. 688 689config IKHEADERS 690 tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 691 depends on SYSFS 692 help 693 This option enables access to the in-kernel headers that are generated during 694 the build process. These can be used to build eBPF tracing programs, 695 or similar programs. If you build the headers as a module, a module called 696 kheaders.ko is built which can be loaded on-demand to get access to headers. 697 698config LOG_BUF_SHIFT 699 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 700 range 12 25 if !H8300 701 range 12 19 if H8300 702 default 17 703 depends on PRINTK 704 help 705 Select the minimal kernel log buffer size as a power of 2. 706 The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 707 parameter, see below. Any higher size also might be forced 708 by "log_buf_len" boot parameter. 709 710 Examples: 711 17 => 128 KB 712 16 => 64 KB 713 15 => 32 KB 714 14 => 16 KB 715 13 => 8 KB 716 12 => 4 KB 717 718config LOG_CPU_MAX_BUF_SHIFT 719 int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 720 depends on SMP 721 range 0 21 722 default 12 if !BASE_SMALL 723 default 0 if BASE_SMALL 724 depends on PRINTK 725 help 726 This option allows to increase the default ring buffer size 727 according to the number of CPUs. The value defines the contribution 728 of each CPU as a power of 2. The used space is typically only few 729 lines however it might be much more when problems are reported, 730 e.g. backtraces. 731 732 The increased size means that a new buffer has to be allocated and 733 the original static one is unused. It makes sense only on systems 734 with more CPUs. Therefore this value is used only when the sum of 735 contributions is greater than the half of the default kernel ring 736 buffer as defined by LOG_BUF_SHIFT. The default values are set 737 so that more than 16 CPUs are needed to trigger the allocation. 738 739 Also this option is ignored when "log_buf_len" kernel parameter is 740 used as it forces an exact (power of two) size of the ring buffer. 741 742 The number of possible CPUs is used for this computation ignoring 743 hotplugging making the computation optimal for the worst case 744 scenario while allowing a simple algorithm to be used from bootup. 745 746 Examples shift values and their meaning: 747 17 => 128 KB for each CPU 748 16 => 64 KB for each CPU 749 15 => 32 KB for each CPU 750 14 => 16 KB for each CPU 751 13 => 8 KB for each CPU 752 12 => 4 KB for each CPU 753 754config PRINTK_SAFE_LOG_BUF_SHIFT 755 int "Temporary per-CPU printk log buffer size (12 => 4KB, 13 => 8KB)" 756 range 10 21 757 default 13 758 depends on PRINTK 759 help 760 Select the size of an alternate printk per-CPU buffer where messages 761 printed from usafe contexts are temporary stored. One example would 762 be NMI messages, another one - printk recursion. The messages are 763 copied to the main log buffer in a safe context to avoid a deadlock. 764 The value defines the size as a power of 2. 765 766 Those messages are rare and limited. The largest one is when 767 a backtrace is printed. It usually fits into 4KB. Select 768 8KB if you want to be on the safe side. 769 770 Examples: 771 17 => 128 KB for each CPU 772 16 => 64 KB for each CPU 773 15 => 32 KB for each CPU 774 14 => 16 KB for each CPU 775 13 => 8 KB for each CPU 776 12 => 4 KB for each CPU 777 778config PRINTK_INDEX 779 bool "Printk indexing debugfs interface" 780 depends on PRINTK && DEBUG_FS 781 help 782 Add support for indexing of all printk formats known at compile time 783 at <debugfs>/printk/index/<module>. 784 785 This can be used as part of maintaining daemons which monitor 786 /dev/kmsg, as it permits auditing the printk formats present in a 787 kernel, allowing detection of cases where monitored printks are 788 changed or no longer present. 789 790 There is no additional runtime cost to printk with this enabled. 791 792# 793# Architectures with an unreliable sched_clock() should select this: 794# 795config HAVE_UNSTABLE_SCHED_CLOCK 796 bool 797 798config GENERIC_SCHED_CLOCK 799 bool 800 801menu "Scheduler features" 802 803config UCLAMP_TASK 804 bool "Enable utilization clamping for RT/FAIR tasks" 805 depends on CPU_FREQ_GOV_SCHEDUTIL 806 help 807 This feature enables the scheduler to track the clamped utilization 808 of each CPU based on RUNNABLE tasks scheduled on that CPU. 809 810 With this option, the user can specify the min and max CPU 811 utilization allowed for RUNNABLE tasks. The max utilization defines 812 the maximum frequency a task should use while the min utilization 813 defines the minimum frequency it should use. 814 815 Both min and max utilization clamp values are hints to the scheduler, 816 aiming at improving its frequency selection policy, but they do not 817 enforce or grant any specific bandwidth for tasks. 818 819 If in doubt, say N. 820 821config UCLAMP_BUCKETS_COUNT 822 int "Number of supported utilization clamp buckets" 823 range 5 20 824 default 5 825 depends on UCLAMP_TASK 826 help 827 Defines the number of clamp buckets to use. The range of each bucket 828 will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 829 number of clamp buckets the finer their granularity and the higher 830 the precision of clamping aggregation and tracking at run-time. 831 832 For example, with the minimum configuration value we will have 5 833 clamp buckets tracking 20% utilization each. A 25% boosted tasks will 834 be refcounted in the [20..39]% bucket and will set the bucket clamp 835 effective value to 25%. 836 If a second 30% boosted task should be co-scheduled on the same CPU, 837 that task will be refcounted in the same bucket of the first task and 838 it will boost the bucket clamp effective value to 30%. 839 The clamp effective value of a bucket is reset to its nominal value 840 (20% in the example above) when there are no more tasks refcounted in 841 that bucket. 842 843 An additional boost/capping margin can be added to some tasks. In the 844 example above the 25% task will be boosted to 30% until it exits the 845 CPU. If that should be considered not acceptable on certain systems, 846 it's always possible to reduce the margin by increasing the number of 847 clamp buckets to trade off used memory for run-time tracking 848 precision. 849 850 If in doubt, use the default value. 851 852endmenu 853 854# 855# For architectures that want to enable the support for NUMA-affine scheduler 856# balancing logic: 857# 858config ARCH_SUPPORTS_NUMA_BALANCING 859 bool 860 861# 862# For architectures that prefer to flush all TLBs after a number of pages 863# are unmapped instead of sending one IPI per page to flush. The architecture 864# must provide guarantees on what happens if a clean TLB cache entry is 865# written after the unmap. Details are in mm/rmap.c near the check for 866# should_defer_flush. The architecture should also consider if the full flush 867# and the refill costs are offset by the savings of sending fewer IPIs. 868config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 869 bool 870 871config CC_HAS_INT128 872 def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 873 874# 875# For architectures that know their GCC __int128 support is sound 876# 877config ARCH_SUPPORTS_INT128 878 bool 879 880# For architectures that (ab)use NUMA to represent different memory regions 881# all cpu-local but of different latencies, such as SuperH. 882# 883config ARCH_WANT_NUMA_VARIABLE_LOCALITY 884 bool 885 886config NUMA_BALANCING 887 bool "Memory placement aware NUMA scheduler" 888 depends on ARCH_SUPPORTS_NUMA_BALANCING 889 depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 890 depends on SMP && NUMA && MIGRATION 891 help 892 This option adds support for automatic NUMA aware memory/task placement. 893 The mechanism is quite primitive and is based on migrating memory when 894 it has references to the node the task is running on. 895 896 This system will be inactive on UMA systems. 897 898config NUMA_BALANCING_DEFAULT_ENABLED 899 bool "Automatically enable NUMA aware memory/task placement" 900 default y 901 depends on NUMA_BALANCING 902 help 903 If set, automatic NUMA balancing will be enabled if running on a NUMA 904 machine. 905 906menuconfig CGROUPS 907 bool "Control Group support" 908 select KERNFS 909 help 910 This option adds support for grouping sets of processes together, for 911 use with process control subsystems such as Cpusets, CFS, memory 912 controls or device isolation. 913 See 914 - Documentation/scheduler/sched-design-CFS.rst (CFS) 915 - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 916 and resource control) 917 918 Say N if unsure. 919 920if CGROUPS 921 922config PAGE_COUNTER 923 bool 924 925config MEMCG 926 bool "Memory controller" 927 select PAGE_COUNTER 928 select EVENTFD 929 help 930 Provides control over the memory footprint of tasks in a cgroup. 931 932config MEMCG_SWAP 933 bool 934 depends on MEMCG && SWAP 935 default y 936 937config MEMCG_KMEM 938 bool 939 depends on MEMCG && !SLOB 940 default y 941 942config BLK_CGROUP 943 bool "IO controller" 944 depends on BLOCK 945 default n 946 help 947 Generic block IO controller cgroup interface. This is the common 948 cgroup interface which should be used by various IO controlling 949 policies. 950 951 Currently, CFQ IO scheduler uses it to recognize task groups and 952 control disk bandwidth allocation (proportional time slice allocation) 953 to such task groups. It is also used by bio throttling logic in 954 block layer to implement upper limit in IO rates on a device. 955 956 This option only enables generic Block IO controller infrastructure. 957 One needs to also enable actual IO controlling logic/policy. For 958 enabling proportional weight division of disk bandwidth in CFQ, set 959 CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 960 CONFIG_BLK_DEV_THROTTLING=y. 961 962 See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 963 964config CGROUP_WRITEBACK 965 bool 966 depends on MEMCG && BLK_CGROUP 967 default y 968 969menuconfig CGROUP_SCHED 970 bool "CPU controller" 971 default n 972 help 973 This feature lets CPU scheduler recognize task groups and control CPU 974 bandwidth allocation to such task groups. It uses cgroups to group 975 tasks. 976 977if CGROUP_SCHED 978config FAIR_GROUP_SCHED 979 bool "Group scheduling for SCHED_OTHER" 980 depends on CGROUP_SCHED 981 default CGROUP_SCHED 982 983config CFS_BANDWIDTH 984 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 985 depends on FAIR_GROUP_SCHED 986 default n 987 help 988 This option allows users to define CPU bandwidth rates (limits) for 989 tasks running within the fair group scheduler. Groups with no limit 990 set are considered to be unconstrained and will run with no 991 restriction. 992 See Documentation/scheduler/sched-bwc.rst for more information. 993 994config RT_GROUP_SCHED 995 bool "Group scheduling for SCHED_RR/FIFO" 996 depends on CGROUP_SCHED 997 default n 998 help 999 This feature lets you explicitly allocate real CPU bandwidth 1000 to task groups. If enabled, it will also make it impossible to 1001 schedule realtime tasks for non-root users until you allocate 1002 realtime bandwidth for them. 1003 See Documentation/scheduler/sched-rt-group.rst for more information. 1004 1005endif #CGROUP_SCHED 1006 1007config UCLAMP_TASK_GROUP 1008 bool "Utilization clamping per group of tasks" 1009 depends on CGROUP_SCHED 1010 depends on UCLAMP_TASK 1011 default n 1012 help 1013 This feature enables the scheduler to track the clamped utilization 1014 of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 1015 1016 When this option is enabled, the user can specify a min and max 1017 CPU bandwidth which is allowed for each single task in a group. 1018 The max bandwidth allows to clamp the maximum frequency a task 1019 can use, while the min bandwidth allows to define a minimum 1020 frequency a task will always use. 1021 1022 When task group based utilization clamping is enabled, an eventually 1023 specified task-specific clamp value is constrained by the cgroup 1024 specified clamp value. Both minimum and maximum task clamping cannot 1025 be bigger than the corresponding clamping defined at task group level. 1026 1027 If in doubt, say N. 1028 1029config CGROUP_PIDS 1030 bool "PIDs controller" 1031 help 1032 Provides enforcement of process number limits in the scope of a 1033 cgroup. Any attempt to fork more processes than is allowed in the 1034 cgroup will fail. PIDs are fundamentally a global resource because it 1035 is fairly trivial to reach PID exhaustion before you reach even a 1036 conservative kmemcg limit. As a result, it is possible to grind a 1037 system to halt without being limited by other cgroup policies. The 1038 PIDs controller is designed to stop this from happening. 1039 1040 It should be noted that organisational operations (such as attaching 1041 to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 1042 since the PIDs limit only affects a process's ability to fork, not to 1043 attach to a cgroup. 1044 1045config CGROUP_RDMA 1046 bool "RDMA controller" 1047 help 1048 Provides enforcement of RDMA resources defined by IB stack. 1049 It is fairly easy for consumers to exhaust RDMA resources, which 1050 can result into resource unavailability to other consumers. 1051 RDMA controller is designed to stop this from happening. 1052 Attaching processes with active RDMA resources to the cgroup 1053 hierarchy is allowed even if can cross the hierarchy's limit. 1054 1055config CGROUP_FREEZER 1056 bool "Freezer controller" 1057 help 1058 Provides a way to freeze and unfreeze all tasks in a 1059 cgroup. 1060 1061 This option affects the ORIGINAL cgroup interface. The cgroup2 memory 1062 controller includes important in-kernel memory consumers per default. 1063 1064 If you're using cgroup2, say N. 1065 1066config CGROUP_HUGETLB 1067 bool "HugeTLB controller" 1068 depends on HUGETLB_PAGE 1069 select PAGE_COUNTER 1070 default n 1071 help 1072 Provides a cgroup controller for HugeTLB pages. 1073 When you enable this, you can put a per cgroup limit on HugeTLB usage. 1074 The limit is enforced during page fault. Since HugeTLB doesn't 1075 support page reclaim, enforcing the limit at page fault time implies 1076 that, the application will get SIGBUS signal if it tries to access 1077 HugeTLB pages beyond its limit. This requires the application to know 1078 beforehand how much HugeTLB pages it would require for its use. The 1079 control group is tracked in the third page lru pointer. This means 1080 that we cannot use the controller with huge page less than 3 pages. 1081 1082config CPUSETS 1083 bool "Cpuset controller" 1084 depends on SMP 1085 help 1086 This option will let you create and manage CPUSETs which 1087 allow dynamically partitioning a system into sets of CPUs and 1088 Memory Nodes and assigning tasks to run only within those sets. 1089 This is primarily useful on large SMP or NUMA systems. 1090 1091 Say N if unsure. 1092 1093config PROC_PID_CPUSET 1094 bool "Include legacy /proc/<pid>/cpuset file" 1095 depends on CPUSETS 1096 default y 1097 1098config CGROUP_DEVICE 1099 bool "Device controller" 1100 help 1101 Provides a cgroup controller implementing whitelists for 1102 devices which a process in the cgroup can mknod or open. 1103 1104config CGROUP_CPUACCT 1105 bool "Simple CPU accounting controller" 1106 help 1107 Provides a simple controller for monitoring the 1108 total CPU consumed by the tasks in a cgroup. 1109 1110config CGROUP_PERF 1111 bool "Perf controller" 1112 depends on PERF_EVENTS 1113 help 1114 This option extends the perf per-cpu mode to restrict monitoring 1115 to threads which belong to the cgroup specified and run on the 1116 designated cpu. Or this can be used to have cgroup ID in samples 1117 so that it can monitor performance events among cgroups. 1118 1119 Say N if unsure. 1120 1121config CGROUP_BPF 1122 bool "Support for eBPF programs attached to cgroups" 1123 depends on BPF_SYSCALL 1124 select SOCK_CGROUP_DATA 1125 help 1126 Allow attaching eBPF programs to a cgroup using the bpf(2) 1127 syscall command BPF_PROG_ATTACH. 1128 1129 In which context these programs are accessed depends on the type 1130 of attachment. For instance, programs that are attached using 1131 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 1132 inet sockets. 1133 1134config CGROUP_MISC 1135 bool "Misc resource controller" 1136 default n 1137 help 1138 Provides a controller for miscellaneous resources on a host. 1139 1140 Miscellaneous scalar resources are the resources on the host system 1141 which cannot be abstracted like the other cgroups. This controller 1142 tracks and limits the miscellaneous resources used by a process 1143 attached to a cgroup hierarchy. 1144 1145 For more information, please check misc cgroup section in 1146 /Documentation/admin-guide/cgroup-v2.rst. 1147 1148config CGROUP_DEBUG 1149 bool "Debug controller" 1150 default n 1151 depends on DEBUG_KERNEL 1152 help 1153 This option enables a simple controller that exports 1154 debugging information about the cgroups framework. This 1155 controller is for control cgroup debugging only. Its 1156 interfaces are not stable. 1157 1158 Say N. 1159 1160config SOCK_CGROUP_DATA 1161 bool 1162 default n 1163 1164endif # CGROUPS 1165 1166menuconfig NAMESPACES 1167 bool "Namespaces support" if EXPERT 1168 depends on MULTIUSER 1169 default !EXPERT 1170 help 1171 Provides the way to make tasks work with different objects using 1172 the same id. For example same IPC id may refer to different objects 1173 or same user id or pid may refer to different tasks when used in 1174 different namespaces. 1175 1176if NAMESPACES 1177 1178config UTS_NS 1179 bool "UTS namespace" 1180 default y 1181 help 1182 In this namespace tasks see different info provided with the 1183 uname() system call 1184 1185config TIME_NS 1186 bool "TIME namespace" 1187 depends on GENERIC_VDSO_TIME_NS 1188 default y 1189 help 1190 In this namespace boottime and monotonic clocks can be set. 1191 The time will keep going with the same pace. 1192 1193config IPC_NS 1194 bool "IPC namespace" 1195 depends on (SYSVIPC || POSIX_MQUEUE) 1196 default y 1197 help 1198 In this namespace tasks work with IPC ids which correspond to 1199 different IPC objects in different namespaces. 1200 1201config USER_NS 1202 bool "User namespace" 1203 default n 1204 help 1205 This allows containers, i.e. vservers, to use user namespaces 1206 to provide different user info for different servers. 1207 1208 When user namespaces are enabled in the kernel it is 1209 recommended that the MEMCG option also be enabled and that 1210 user-space use the memory control groups to limit the amount 1211 of memory a memory unprivileged users can use. 1212 1213 If unsure, say N. 1214 1215config PID_NS 1216 bool "PID Namespaces" 1217 default y 1218 help 1219 Support process id namespaces. This allows having multiple 1220 processes with the same pid as long as they are in different 1221 pid namespaces. This is a building block of containers. 1222 1223config NET_NS 1224 bool "Network namespace" 1225 depends on NET 1226 default y 1227 help 1228 Allow user space to create what appear to be multiple instances 1229 of the network stack. 1230 1231endif # NAMESPACES 1232 1233config CHECKPOINT_RESTORE 1234 bool "Checkpoint/restore support" 1235 select PROC_CHILDREN 1236 select KCMP 1237 default n 1238 help 1239 Enables additional kernel features in a sake of checkpoint/restore. 1240 In particular it adds auxiliary prctl codes to setup process text, 1241 data and heap segment sizes, and a few additional /proc filesystem 1242 entries. 1243 1244 If unsure, say N here. 1245 1246config SCHED_AUTOGROUP 1247 bool "Automatic process group scheduling" 1248 select CGROUPS 1249 select CGROUP_SCHED 1250 select FAIR_GROUP_SCHED 1251 help 1252 This option optimizes the scheduler for common desktop workloads by 1253 automatically creating and populating task groups. This separation 1254 of workloads isolates aggressive CPU burners (like build jobs) from 1255 desktop applications. Task group autogeneration is currently based 1256 upon task session. 1257 1258config SYSFS_DEPRECATED 1259 bool "Enable deprecated sysfs features to support old userspace tools" 1260 depends on SYSFS 1261 default n 1262 help 1263 This option adds code that switches the layout of the "block" class 1264 devices, to not show up in /sys/class/block/, but only in 1265 /sys/block/. 1266 1267 This switch is only active when the sysfs.deprecated=1 boot option is 1268 passed or the SYSFS_DEPRECATED_V2 option is set. 1269 1270 This option allows new kernels to run on old distributions and tools, 1271 which might get confused by /sys/class/block/. Since 2007/2008 all 1272 major distributions and tools handle this just fine. 1273 1274 Recent distributions and userspace tools after 2009/2010 depend on 1275 the existence of /sys/class/block/, and will not work with this 1276 option enabled. 1277 1278 Only if you are using a new kernel on an old distribution, you might 1279 need to say Y here. 1280 1281config SYSFS_DEPRECATED_V2 1282 bool "Enable deprecated sysfs features by default" 1283 default n 1284 depends on SYSFS 1285 depends on SYSFS_DEPRECATED 1286 help 1287 Enable deprecated sysfs by default. 1288 1289 See the CONFIG_SYSFS_DEPRECATED option for more details about this 1290 option. 1291 1292 Only if you are using a new kernel on an old distribution, you might 1293 need to say Y here. Even then, odds are you would not need it 1294 enabled, you can always pass the boot option if absolutely necessary. 1295 1296config RELAY 1297 bool "Kernel->user space relay support (formerly relayfs)" 1298 select IRQ_WORK 1299 help 1300 This option enables support for relay interface support in 1301 certain file systems (such as debugfs). 1302 It is designed to provide an efficient mechanism for tools and 1303 facilities to relay large amounts of data from kernel space to 1304 user space. 1305 1306 If unsure, say N. 1307 1308config BLK_DEV_INITRD 1309 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1310 help 1311 The initial RAM filesystem is a ramfs which is loaded by the 1312 boot loader (loadlin or lilo) and that is mounted as root 1313 before the normal boot procedure. It is typically used to 1314 load modules needed to mount the "real" root file system, 1315 etc. See <file:Documentation/admin-guide/initrd.rst> for details. 1316 1317 If RAM disk support (BLK_DEV_RAM) is also included, this 1318 also enables initial RAM disk (initrd) support and adds 1319 15 Kbytes (more on some other architectures) to the kernel size. 1320 1321 If unsure say Y. 1322 1323if BLK_DEV_INITRD 1324 1325source "usr/Kconfig" 1326 1327endif 1328 1329config BOOT_CONFIG 1330 bool "Boot config support" 1331 select BLK_DEV_INITRD 1332 help 1333 Extra boot config allows system admin to pass a config file as 1334 complemental extension of kernel cmdline when booting. 1335 The boot config file must be attached at the end of initramfs 1336 with checksum, size and magic word. 1337 See <file:Documentation/admin-guide/bootconfig.rst> for details. 1338 1339 If unsure, say Y. 1340 1341choice 1342 prompt "Compiler optimization level" 1343 default CC_OPTIMIZE_FOR_PERFORMANCE 1344 1345config CC_OPTIMIZE_FOR_PERFORMANCE 1346 bool "Optimize for performance (-O2)" 1347 help 1348 This is the default optimization level for the kernel, building 1349 with the "-O2" compiler flag for best performance and most 1350 helpful compile-time warnings. 1351 1352config CC_OPTIMIZE_FOR_PERFORMANCE_O3 1353 bool "Optimize more for performance (-O3)" 1354 depends on ARC 1355 help 1356 Choosing this option will pass "-O3" to your compiler to optimize 1357 the kernel yet more for performance. 1358 1359config CC_OPTIMIZE_FOR_SIZE 1360 bool "Optimize for size (-Os)" 1361 help 1362 Choosing this option will pass "-Os" to your compiler resulting 1363 in a smaller kernel. 1364 1365endchoice 1366 1367config HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1368 bool 1369 help 1370 This requires that the arch annotates or otherwise protects 1371 its external entry points from being discarded. Linker scripts 1372 must also merge .text.*, .data.*, and .bss.* correctly into 1373 output sections. Care must be taken not to pull in unrelated 1374 sections (e.g., '.text.init'). Typically '.' in section names 1375 is used to distinguish them from label names / C identifiers. 1376 1377config LD_DEAD_CODE_DATA_ELIMINATION 1378 bool "Dead code and data elimination (EXPERIMENTAL)" 1379 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1380 depends on EXPERT 1381 depends on $(cc-option,-ffunction-sections -fdata-sections) 1382 depends on $(ld-option,--gc-sections) 1383 help 1384 Enable this if you want to do dead code and data elimination with 1385 the linker by compiling with -ffunction-sections -fdata-sections, 1386 and linking with --gc-sections. 1387 1388 This can reduce on disk and in-memory size of the kernel 1389 code and static data, particularly for small configs and 1390 on small systems. This has the possibility of introducing 1391 silently broken kernel if the required annotations are not 1392 present. This option is not well tested yet, so use at your 1393 own risk. 1394 1395config LD_ORPHAN_WARN 1396 def_bool y 1397 depends on ARCH_WANT_LD_ORPHAN_WARN 1398 depends on !LD_IS_LLD || LLD_VERSION >= 110000 1399 depends on $(ld-option,--orphan-handling=warn) 1400 1401config SYSCTL 1402 bool 1403 1404config HAVE_UID16 1405 bool 1406 1407config SYSCTL_EXCEPTION_TRACE 1408 bool 1409 help 1410 Enable support for /proc/sys/debug/exception-trace. 1411 1412config SYSCTL_ARCH_UNALIGN_NO_WARN 1413 bool 1414 help 1415 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1416 Allows arch to define/use @no_unaligned_warning to possibly warn 1417 about unaligned access emulation going on under the hood. 1418 1419config SYSCTL_ARCH_UNALIGN_ALLOW 1420 bool 1421 help 1422 Enable support for /proc/sys/kernel/unaligned-trap 1423 Allows arches to define/use @unaligned_enabled to runtime toggle 1424 the unaligned access emulation. 1425 see arch/parisc/kernel/unaligned.c for reference 1426 1427config HAVE_PCSPKR_PLATFORM 1428 bool 1429 1430# interpreter that classic socket filters depend on 1431config BPF 1432 bool 1433 1434menuconfig EXPERT 1435 bool "Configure standard kernel features (expert users)" 1436 # Unhide debug options, to make the on-by-default options visible 1437 select DEBUG_KERNEL 1438 help 1439 This option allows certain base kernel options and settings 1440 to be disabled or tweaked. This is for specialized 1441 environments which can tolerate a "non-standard" kernel. 1442 Only use this if you really know what you are doing. 1443 1444config UID16 1445 bool "Enable 16-bit UID system calls" if EXPERT 1446 depends on HAVE_UID16 && MULTIUSER 1447 default y 1448 help 1449 This enables the legacy 16-bit UID syscall wrappers. 1450 1451config MULTIUSER 1452 bool "Multiple users, groups and capabilities support" if EXPERT 1453 default y 1454 help 1455 This option enables support for non-root users, groups and 1456 capabilities. 1457 1458 If you say N here, all processes will run with UID 0, GID 0, and all 1459 possible capabilities. Saying N here also compiles out support for 1460 system calls related to UIDs, GIDs, and capabilities, such as setuid, 1461 setgid, and capset. 1462 1463 If unsure, say Y here. 1464 1465config SGETMASK_SYSCALL 1466 bool "sgetmask/ssetmask syscalls support" if EXPERT 1467 def_bool PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1468 help 1469 sys_sgetmask and sys_ssetmask are obsolete system calls 1470 no longer supported in libc but still enabled by default in some 1471 architectures. 1472 1473 If unsure, leave the default option here. 1474 1475config SYSFS_SYSCALL 1476 bool "Sysfs syscall support" if EXPERT 1477 default y 1478 help 1479 sys_sysfs is an obsolete system call no longer supported in libc. 1480 Note that disabling this option is more secure but might break 1481 compatibility with some systems. 1482 1483 If unsure say Y here. 1484 1485config FHANDLE 1486 bool "open by fhandle syscalls" if EXPERT 1487 select EXPORTFS 1488 default y 1489 help 1490 If you say Y here, a user level program will be able to map 1491 file names to handle and then later use the handle for 1492 different file system operations. This is useful in implementing 1493 userspace file servers, which now track files using handles instead 1494 of names. The handle would remain the same even if file names 1495 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1496 syscalls. 1497 1498config POSIX_TIMERS 1499 bool "Posix Clocks & timers" if EXPERT 1500 default y 1501 help 1502 This includes native support for POSIX timers to the kernel. 1503 Some embedded systems have no use for them and therefore they 1504 can be configured out to reduce the size of the kernel image. 1505 1506 When this option is disabled, the following syscalls won't be 1507 available: timer_create, timer_gettime: timer_getoverrun, 1508 timer_settime, timer_delete, clock_adjtime, getitimer, 1509 setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1510 clock_getres and clock_nanosleep syscalls will be limited to 1511 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1512 1513 If unsure say y. 1514 1515config PRINTK 1516 default y 1517 bool "Enable support for printk" if EXPERT 1518 select IRQ_WORK 1519 help 1520 This option enables normal printk support. Removing it 1521 eliminates most of the message strings from the kernel image 1522 and makes the kernel more or less silent. As this makes it 1523 very difficult to diagnose system problems, saying N here is 1524 strongly discouraged. 1525 1526config BUG 1527 bool "BUG() support" if EXPERT 1528 default y 1529 help 1530 Disabling this option eliminates support for BUG and WARN, reducing 1531 the size of your kernel image and potentially quietly ignoring 1532 numerous fatal conditions. You should only consider disabling this 1533 option for embedded systems with no facilities for reporting errors. 1534 Just say Y. 1535 1536config ELF_CORE 1537 depends on COREDUMP 1538 default y 1539 bool "Enable ELF core dumps" if EXPERT 1540 help 1541 Enable support for generating core dumps. Disabling saves about 4k. 1542 1543 1544config PCSPKR_PLATFORM 1545 bool "Enable PC-Speaker support" if EXPERT 1546 depends on HAVE_PCSPKR_PLATFORM 1547 select I8253_LOCK 1548 default y 1549 help 1550 This option allows to disable the internal PC-Speaker 1551 support, saving some memory. 1552 1553config BASE_FULL 1554 default y 1555 bool "Enable full-sized data structures for core" if EXPERT 1556 help 1557 Disabling this option reduces the size of miscellaneous core 1558 kernel data structures. This saves memory on small machines, 1559 but may reduce performance. 1560 1561config FUTEX 1562 bool "Enable futex support" if EXPERT 1563 default y 1564 imply RT_MUTEXES 1565 help 1566 Disabling this option will cause the kernel to be built without 1567 support for "fast userspace mutexes". The resulting kernel may not 1568 run glibc-based applications correctly. 1569 1570config FUTEX_PI 1571 bool 1572 depends on FUTEX && RT_MUTEXES 1573 default y 1574 1575config HAVE_FUTEX_CMPXCHG 1576 bool 1577 depends on FUTEX 1578 help 1579 Architectures should select this if futex_atomic_cmpxchg_inatomic() 1580 is implemented and always working. This removes a couple of runtime 1581 checks. 1582 1583config EPOLL 1584 bool "Enable eventpoll support" if EXPERT 1585 default y 1586 help 1587 Disabling this option will cause the kernel to be built without 1588 support for epoll family of system calls. 1589 1590config SIGNALFD 1591 bool "Enable signalfd() system call" if EXPERT 1592 default y 1593 help 1594 Enable the signalfd() system call that allows to receive signals 1595 on a file descriptor. 1596 1597 If unsure, say Y. 1598 1599config TIMERFD 1600 bool "Enable timerfd() system call" if EXPERT 1601 default y 1602 help 1603 Enable the timerfd() system call that allows to receive timer 1604 events on a file descriptor. 1605 1606 If unsure, say Y. 1607 1608config EVENTFD 1609 bool "Enable eventfd() system call" if EXPERT 1610 default y 1611 help 1612 Enable the eventfd() system call that allows to receive both 1613 kernel notification (ie. KAIO) or userspace notifications. 1614 1615 If unsure, say Y. 1616 1617config SHMEM 1618 bool "Use full shmem filesystem" if EXPERT 1619 default y 1620 depends on MMU 1621 help 1622 The shmem is an internal filesystem used to manage shared memory. 1623 It is backed by swap and manages resource limits. It is also exported 1624 to userspace as tmpfs if TMPFS is enabled. Disabling this 1625 option replaces shmem and tmpfs with the much simpler ramfs code, 1626 which may be appropriate on small systems without swap. 1627 1628config AIO 1629 bool "Enable AIO support" if EXPERT 1630 default y 1631 help 1632 This option enables POSIX asynchronous I/O which may by used 1633 by some high performance threaded applications. Disabling 1634 this option saves about 7k. 1635 1636config IO_URING 1637 bool "Enable IO uring support" if EXPERT 1638 select IO_WQ 1639 default y 1640 help 1641 This option enables support for the io_uring interface, enabling 1642 applications to submit and complete IO through submission and 1643 completion rings that are shared between the kernel and application. 1644 1645config ADVISE_SYSCALLS 1646 bool "Enable madvise/fadvise syscalls" if EXPERT 1647 default y 1648 help 1649 This option enables the madvise and fadvise syscalls, used by 1650 applications to advise the kernel about their future memory or file 1651 usage, improving performance. If building an embedded system where no 1652 applications use these syscalls, you can disable this option to save 1653 space. 1654 1655config HAVE_ARCH_USERFAULTFD_WP 1656 bool 1657 help 1658 Arch has userfaultfd write protection support 1659 1660config HAVE_ARCH_USERFAULTFD_MINOR 1661 bool 1662 help 1663 Arch has userfaultfd minor fault support 1664 1665config MEMBARRIER 1666 bool "Enable membarrier() system call" if EXPERT 1667 default y 1668 help 1669 Enable the membarrier() system call that allows issuing memory 1670 barriers across all running threads, which can be used to distribute 1671 the cost of user-space memory barriers asymmetrically by transforming 1672 pairs of memory barriers into pairs consisting of membarrier() and a 1673 compiler barrier. 1674 1675 If unsure, say Y. 1676 1677config KALLSYMS 1678 bool "Load all symbols for debugging/ksymoops" if EXPERT 1679 default y 1680 help 1681 Say Y here to let the kernel print out symbolic crash information and 1682 symbolic stack backtraces. This increases the size of the kernel 1683 somewhat, as all symbols have to be loaded into the kernel image. 1684 1685config KALLSYMS_ALL 1686 bool "Include all symbols in kallsyms" 1687 depends on DEBUG_KERNEL && KALLSYMS 1688 help 1689 Normally kallsyms only contains the symbols of functions for nicer 1690 OOPS messages and backtraces (i.e., symbols from the text and inittext 1691 sections). This is sufficient for most cases. And only in very rare 1692 cases (e.g., when a debugger is used) all symbols are required (e.g., 1693 names of variables from the data sections, etc). 1694 1695 This option makes sure that all symbols are loaded into the kernel 1696 image (i.e., symbols from all sections) in cost of increased kernel 1697 size (depending on the kernel configuration, it may be 300KiB or 1698 something like this). 1699 1700 Say N unless you really need all symbols. 1701 1702config KALLSYMS_ABSOLUTE_PERCPU 1703 bool 1704 depends on KALLSYMS 1705 default X86_64 && SMP 1706 1707config KALLSYMS_BASE_RELATIVE 1708 bool 1709 depends on KALLSYMS 1710 default !IA64 1711 help 1712 Instead of emitting them as absolute values in the native word size, 1713 emit the symbol references in the kallsyms table as 32-bit entries, 1714 each containing a relative value in the range [base, base + U32_MAX] 1715 or, when KALLSYMS_ABSOLUTE_PERCPU is in effect, each containing either 1716 an absolute value in the range [0, S32_MAX] or a relative value in the 1717 range [base, base + S32_MAX], where base is the lowest relative symbol 1718 address encountered in the image. 1719 1720 On 64-bit builds, this reduces the size of the address table by 50%, 1721 but more importantly, it results in entries whose values are build 1722 time constants, and no relocation pass is required at runtime to fix 1723 up the entries based on the runtime load address of the kernel. 1724 1725# end of the "standard kernel features (expert users)" menu 1726 1727# syscall, maps, verifier 1728 1729config USERFAULTFD 1730 bool "Enable userfaultfd() system call" 1731 depends on MMU 1732 help 1733 Enable the userfaultfd() system call that allows to intercept and 1734 handle page faults in userland. 1735 1736config ARCH_HAS_MEMBARRIER_CALLBACKS 1737 bool 1738 1739config ARCH_HAS_MEMBARRIER_SYNC_CORE 1740 bool 1741 1742config KCMP 1743 bool "Enable kcmp() system call" if EXPERT 1744 help 1745 Enable the kernel resource comparison system call. It provides 1746 user-space with the ability to compare two processes to see if they 1747 share a common resource, such as a file descriptor or even virtual 1748 memory space. 1749 1750 If unsure, say N. 1751 1752config RSEQ 1753 bool "Enable rseq() system call" if EXPERT 1754 default y 1755 depends on HAVE_RSEQ 1756 select MEMBARRIER 1757 help 1758 Enable the restartable sequences system call. It provides a 1759 user-space cache for the current CPU number value, which 1760 speeds up getting the current CPU number from user-space, 1761 as well as an ABI to speed up user-space operations on 1762 per-CPU data. 1763 1764 If unsure, say Y. 1765 1766config DEBUG_RSEQ 1767 default n 1768 bool "Enabled debugging of rseq() system call" if EXPERT 1769 depends on RSEQ && DEBUG_KERNEL 1770 help 1771 Enable extra debugging checks for the rseq system call. 1772 1773 If unsure, say N. 1774 1775config EMBEDDED 1776 bool "Embedded system" 1777 select EXPERT 1778 help 1779 This option should be enabled if compiling the kernel for 1780 an embedded system so certain expert options are available 1781 for configuration. 1782 1783config HAVE_PERF_EVENTS 1784 bool 1785 help 1786 See tools/perf/design.txt for details. 1787 1788config PERF_USE_VMALLOC 1789 bool 1790 help 1791 See tools/perf/design.txt for details 1792 1793config PC104 1794 bool "PC/104 support" if EXPERT 1795 help 1796 Expose PC/104 form factor device drivers and options available for 1797 selection and configuration. Enable this option if your target 1798 machine has a PC/104 bus. 1799 1800menu "Kernel Performance Events And Counters" 1801 1802config PERF_EVENTS 1803 bool "Kernel performance events and counters" 1804 default y if PROFILING 1805 depends on HAVE_PERF_EVENTS 1806 select IRQ_WORK 1807 select SRCU 1808 help 1809 Enable kernel support for various performance events provided 1810 by software and hardware. 1811 1812 Software events are supported either built-in or via the 1813 use of generic tracepoints. 1814 1815 Most modern CPUs support performance events via performance 1816 counter registers. These registers count the number of certain 1817 types of hw events: such as instructions executed, cachemisses 1818 suffered, or branches mis-predicted - without slowing down the 1819 kernel or applications. These registers can also trigger interrupts 1820 when a threshold number of events have passed - and can thus be 1821 used to profile the code that runs on that CPU. 1822 1823 The Linux Performance Event subsystem provides an abstraction of 1824 these software and hardware event capabilities, available via a 1825 system call and used by the "perf" utility in tools/perf/. It 1826 provides per task and per CPU counters, and it provides event 1827 capabilities on top of those. 1828 1829 Say Y if unsure. 1830 1831config DEBUG_PERF_USE_VMALLOC 1832 default n 1833 bool "Debug: use vmalloc to back perf mmap() buffers" 1834 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 1835 select PERF_USE_VMALLOC 1836 help 1837 Use vmalloc memory to back perf mmap() buffers. 1838 1839 Mostly useful for debugging the vmalloc code on platforms 1840 that don't require it. 1841 1842 Say N if unsure. 1843 1844endmenu 1845 1846config VM_EVENT_COUNTERS 1847 default y 1848 bool "Enable VM event counters for /proc/vmstat" if EXPERT 1849 help 1850 VM event counters are needed for event counts to be shown. 1851 This option allows the disabling of the VM event counters 1852 on EXPERT systems. /proc/vmstat will only show page counts 1853 if VM event counters are disabled. 1854 1855config SLUB_DEBUG 1856 default y 1857 bool "Enable SLUB debugging support" if EXPERT 1858 depends on SLUB && SYSFS 1859 help 1860 SLUB has extensive debug support features. Disabling these can 1861 result in significant savings in code size. This also disables 1862 SLUB sysfs support. /sys/slab will not exist and there will be 1863 no support for cache validation etc. 1864 1865config COMPAT_BRK 1866 bool "Disable heap randomization" 1867 default y 1868 help 1869 Randomizing heap placement makes heap exploits harder, but it 1870 also breaks ancient binaries (including anything libc5 based). 1871 This option changes the bootup default to heap randomization 1872 disabled, and can be overridden at runtime by setting 1873 /proc/sys/kernel/randomize_va_space to 2. 1874 1875 On non-ancient distros (post-2000 ones) N is usually a safe choice. 1876 1877choice 1878 prompt "Choose SLAB allocator" 1879 default SLUB 1880 help 1881 This option allows to select a slab allocator. 1882 1883config SLAB 1884 bool "SLAB" 1885 select HAVE_HARDENED_USERCOPY_ALLOCATOR 1886 help 1887 The regular slab allocator that is established and known to work 1888 well in all environments. It organizes cache hot objects in 1889 per cpu and per node queues. 1890 1891config SLUB 1892 bool "SLUB (Unqueued Allocator)" 1893 select HAVE_HARDENED_USERCOPY_ALLOCATOR 1894 help 1895 SLUB is a slab allocator that minimizes cache line usage 1896 instead of managing queues of cached objects (SLAB approach). 1897 Per cpu caching is realized using slabs of objects instead 1898 of queues of objects. SLUB can use memory efficiently 1899 and has enhanced diagnostics. SLUB is the default choice for 1900 a slab allocator. 1901 1902config SLOB 1903 depends on EXPERT 1904 bool "SLOB (Simple Allocator)" 1905 help 1906 SLOB replaces the stock allocator with a drastically simpler 1907 allocator. SLOB is generally more space efficient but 1908 does not perform as well on large systems. 1909 1910endchoice 1911 1912config SLAB_MERGE_DEFAULT 1913 bool "Allow slab caches to be merged" 1914 default y 1915 help 1916 For reduced kernel memory fragmentation, slab caches can be 1917 merged when they share the same size and other characteristics. 1918 This carries a risk of kernel heap overflows being able to 1919 overwrite objects from merged caches (and more easily control 1920 cache layout), which makes such heap attacks easier to exploit 1921 by attackers. By keeping caches unmerged, these kinds of exploits 1922 can usually only damage objects in the same cache. To disable 1923 merging at runtime, "slab_nomerge" can be passed on the kernel 1924 command line. 1925 1926config SLAB_FREELIST_RANDOM 1927 bool "Randomize slab freelist" 1928 depends on SLAB || SLUB 1929 help 1930 Randomizes the freelist order used on creating new pages. This 1931 security feature reduces the predictability of the kernel slab 1932 allocator against heap overflows. 1933 1934config SLAB_FREELIST_HARDENED 1935 bool "Harden slab freelist metadata" 1936 depends on SLAB || SLUB 1937 help 1938 Many kernel heap attacks try to target slab cache metadata and 1939 other infrastructure. This options makes minor performance 1940 sacrifices to harden the kernel slab allocator against common 1941 freelist exploit methods. Some slab implementations have more 1942 sanity-checking than others. This option is most effective with 1943 CONFIG_SLUB. 1944 1945config SHUFFLE_PAGE_ALLOCATOR 1946 bool "Page allocator randomization" 1947 default SLAB_FREELIST_RANDOM && ACPI_NUMA 1948 help 1949 Randomization of the page allocator improves the average 1950 utilization of a direct-mapped memory-side-cache. See section 1951 5.2.27 Heterogeneous Memory Attribute Table (HMAT) in the ACPI 1952 6.2a specification for an example of how a platform advertises 1953 the presence of a memory-side-cache. There are also incidental 1954 security benefits as it reduces the predictability of page 1955 allocations to compliment SLAB_FREELIST_RANDOM, but the 1956 default granularity of shuffling on the "MAX_ORDER - 1" i.e, 1957 10th order of pages is selected based on cache utilization 1958 benefits on x86. 1959 1960 While the randomization improves cache utilization it may 1961 negatively impact workloads on platforms without a cache. For 1962 this reason, by default, the randomization is enabled only 1963 after runtime detection of a direct-mapped memory-side-cache. 1964 Otherwise, the randomization may be force enabled with the 1965 'page_alloc.shuffle' kernel command line parameter. 1966 1967 Say Y if unsure. 1968 1969config SLUB_CPU_PARTIAL 1970 default y 1971 depends on SLUB && SMP 1972 bool "SLUB per cpu partial cache" 1973 help 1974 Per cpu partial caches accelerate objects allocation and freeing 1975 that is local to a processor at the price of more indeterminism 1976 in the latency of the free. On overflow these caches will be cleared 1977 which requires the taking of locks that may cause latency spikes. 1978 Typically one would choose no for a realtime system. 1979 1980config MMAP_ALLOW_UNINITIALIZED 1981 bool "Allow mmapped anonymous memory to be uninitialized" 1982 depends on EXPERT && !MMU 1983 default n 1984 help 1985 Normally, and according to the Linux spec, anonymous memory obtained 1986 from mmap() has its contents cleared before it is passed to 1987 userspace. Enabling this config option allows you to request that 1988 mmap() skip that if it is given an MAP_UNINITIALIZED flag, thus 1989 providing a huge performance boost. If this option is not enabled, 1990 then the flag will be ignored. 1991 1992 This is taken advantage of by uClibc's malloc(), and also by 1993 ELF-FDPIC binfmt's brk and stack allocator. 1994 1995 Because of the obvious security issues, this option should only be 1996 enabled on embedded devices where you control what is run in 1997 userspace. Since that isn't generally a problem on no-MMU systems, 1998 it is normally safe to say Y here. 1999 2000 See Documentation/admin-guide/mm/nommu-mmap.rst for more information. 2001 2002config SYSTEM_DATA_VERIFICATION 2003 def_bool n 2004 select SYSTEM_TRUSTED_KEYRING 2005 select KEYS 2006 select CRYPTO 2007 select CRYPTO_RSA 2008 select ASYMMETRIC_KEY_TYPE 2009 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 2010 select ASN1 2011 select OID_REGISTRY 2012 select X509_CERTIFICATE_PARSER 2013 select PKCS7_MESSAGE_PARSER 2014 help 2015 Provide PKCS#7 message verification using the contents of the system 2016 trusted keyring to provide public keys. This then can be used for 2017 module verification, kexec image verification and firmware blob 2018 verification. 2019 2020config PROFILING 2021 bool "Profiling support" 2022 help 2023 Say Y here to enable the extended profiling support mechanisms used 2024 by profilers. 2025 2026# 2027# Place an empty function call at each tracepoint site. Can be 2028# dynamically changed for a probe function. 2029# 2030config TRACEPOINTS 2031 bool 2032 2033endmenu # General setup 2034 2035source "arch/Kconfig" 2036 2037config RT_MUTEXES 2038 bool 2039 2040config BASE_SMALL 2041 int 2042 default 0 if BASE_FULL 2043 default 1 if !BASE_FULL 2044 2045config MODULE_SIG_FORMAT 2046 def_bool n 2047 select SYSTEM_DATA_VERIFICATION 2048 2049menuconfig MODULES 2050 bool "Enable loadable module support" 2051 modules 2052 help 2053 Kernel modules are small pieces of compiled code which can 2054 be inserted in the running kernel, rather than being 2055 permanently built into the kernel. You use the "modprobe" 2056 tool to add (and sometimes remove) them. If you say Y here, 2057 many parts of the kernel can be built as modules (by 2058 answering M instead of Y where indicated): this is most 2059 useful for infrequently used options which are not required 2060 for booting. For more information, see the man pages for 2061 modprobe, lsmod, modinfo, insmod and rmmod. 2062 2063 If you say Y here, you will need to run "make 2064 modules_install" to put the modules under /lib/modules/ 2065 where modprobe can find them (you may need to be root to do 2066 this). 2067 2068 If unsure, say Y. 2069 2070if MODULES 2071 2072config MODULE_FORCE_LOAD 2073 bool "Forced module loading" 2074 default n 2075 help 2076 Allow loading of modules without version information (ie. modprobe 2077 --force). Forced module loading sets the 'F' (forced) taint flag and 2078 is usually a really bad idea. 2079 2080config MODULE_UNLOAD 2081 bool "Module unloading" 2082 help 2083 Without this option you will not be able to unload any 2084 modules (note that some modules may not be unloadable 2085 anyway), which makes your kernel smaller, faster 2086 and simpler. If unsure, say Y. 2087 2088config MODULE_FORCE_UNLOAD 2089 bool "Forced module unloading" 2090 depends on MODULE_UNLOAD 2091 help 2092 This option allows you to force a module to unload, even if the 2093 kernel believes it is unsafe: the kernel will remove the module 2094 without waiting for anyone to stop using it (using the -f option to 2095 rmmod). This is mainly for kernel developers and desperate users. 2096 If unsure, say N. 2097 2098config MODVERSIONS 2099 bool "Module versioning support" 2100 help 2101 Usually, you have to use modules compiled with your kernel. 2102 Saying Y here makes it sometimes possible to use modules 2103 compiled for different kernels, by adding enough information 2104 to the modules to (hopefully) spot any changes which would 2105 make them incompatible with the kernel you are running. If 2106 unsure, say N. 2107 2108config ASM_MODVERSIONS 2109 bool 2110 default HAVE_ASM_MODVERSIONS && MODVERSIONS 2111 help 2112 This enables module versioning for exported symbols also from 2113 assembly. This can be enabled only when the target architecture 2114 supports it. 2115 2116config MODULE_REL_CRCS 2117 bool 2118 depends on MODVERSIONS 2119 2120config MODULE_SRCVERSION_ALL 2121 bool "Source checksum for all modules" 2122 help 2123 Modules which contain a MODULE_VERSION get an extra "srcversion" 2124 field inserted into their modinfo section, which contains a 2125 sum of the source files which made it. This helps maintainers 2126 see exactly which source was used to build a module (since 2127 others sometimes change the module source without updating 2128 the version). With this option, such a "srcversion" field 2129 will be created for all modules. If unsure, say N. 2130 2131config MODULE_SIG 2132 bool "Module signature verification" 2133 select MODULE_SIG_FORMAT 2134 help 2135 Check modules for valid signatures upon load: the signature 2136 is simply appended to the module. For more information see 2137 <file:Documentation/admin-guide/module-signing.rst>. 2138 2139 Note that this option adds the OpenSSL development packages as a 2140 kernel build dependency so that the signing tool can use its crypto 2141 library. 2142 2143 You should enable this option if you wish to use either 2144 CONFIG_SECURITY_LOCKDOWN_LSM or lockdown functionality imposed via 2145 another LSM - otherwise unsigned modules will be loadable regardless 2146 of the lockdown policy. 2147 2148 !!!WARNING!!! If you enable this option, you MUST make sure that the 2149 module DOES NOT get stripped after being signed. This includes the 2150 debuginfo strip done by some packagers (such as rpmbuild) and 2151 inclusion into an initramfs that wants the module size reduced. 2152 2153config MODULE_SIG_FORCE 2154 bool "Require modules to be validly signed" 2155 depends on MODULE_SIG 2156 help 2157 Reject unsigned modules or signed modules for which we don't have a 2158 key. Without this, such modules will simply taint the kernel. 2159 2160config MODULE_SIG_ALL 2161 bool "Automatically sign all modules" 2162 default y 2163 depends on MODULE_SIG || IMA_APPRAISE_MODSIG 2164 help 2165 Sign all modules during make modules_install. Without this option, 2166 modules must be signed manually, using the scripts/sign-file tool. 2167 2168comment "Do not forget to sign required modules with scripts/sign-file" 2169 depends on MODULE_SIG_FORCE && !MODULE_SIG_ALL 2170 2171choice 2172 prompt "Which hash algorithm should modules be signed with?" 2173 depends on MODULE_SIG || IMA_APPRAISE_MODSIG 2174 help 2175 This determines which sort of hashing algorithm will be used during 2176 signature generation. This algorithm _must_ be built into the kernel 2177 directly so that signature verification can take place. It is not 2178 possible to load a signed module containing the algorithm to check 2179 the signature on that module. 2180 2181config MODULE_SIG_SHA1 2182 bool "Sign modules with SHA-1" 2183 select CRYPTO_SHA1 2184 2185config MODULE_SIG_SHA224 2186 bool "Sign modules with SHA-224" 2187 select CRYPTO_SHA256 2188 2189config MODULE_SIG_SHA256 2190 bool "Sign modules with SHA-256" 2191 select CRYPTO_SHA256 2192 2193config MODULE_SIG_SHA384 2194 bool "Sign modules with SHA-384" 2195 select CRYPTO_SHA512 2196 2197config MODULE_SIG_SHA512 2198 bool "Sign modules with SHA-512" 2199 select CRYPTO_SHA512 2200 2201endchoice 2202 2203config MODULE_SIG_HASH 2204 string 2205 depends on MODULE_SIG || IMA_APPRAISE_MODSIG 2206 default "sha1" if MODULE_SIG_SHA1 2207 default "sha224" if MODULE_SIG_SHA224 2208 default "sha256" if MODULE_SIG_SHA256 2209 default "sha384" if MODULE_SIG_SHA384 2210 default "sha512" if MODULE_SIG_SHA512 2211 2212choice 2213 prompt "Module compression mode" 2214 help 2215 This option allows you to choose the algorithm which will be used to 2216 compress modules when 'make modules_install' is run. (or, you can 2217 choose to not compress modules at all.) 2218 2219 External modules will also be compressed in the same way during the 2220 installation. 2221 2222 For modules inside an initrd or initramfs, it's more efficient to 2223 compress the whole initrd or initramfs instead. 2224 2225 This is fully compatible with signed modules. 2226 2227 Please note that the tool used to load modules needs to support the 2228 corresponding algorithm. module-init-tools MAY support gzip, and kmod 2229 MAY support gzip, xz and zstd. 2230 2231 Your build system needs to provide the appropriate compression tool 2232 to compress the modules. 2233 2234 If in doubt, select 'None'. 2235 2236config MODULE_COMPRESS_NONE 2237 bool "None" 2238 help 2239 Do not compress modules. The installed modules are suffixed 2240 with .ko. 2241 2242config MODULE_COMPRESS_GZIP 2243 bool "GZIP" 2244 help 2245 Compress modules with GZIP. The installed modules are suffixed 2246 with .ko.gz. 2247 2248config MODULE_COMPRESS_XZ 2249 bool "XZ" 2250 help 2251 Compress modules with XZ. The installed modules are suffixed 2252 with .ko.xz. 2253 2254config MODULE_COMPRESS_ZSTD 2255 bool "ZSTD" 2256 help 2257 Compress modules with ZSTD. The installed modules are suffixed 2258 with .ko.zst. 2259 2260endchoice 2261 2262config MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS 2263 bool "Allow loading of modules with missing namespace imports" 2264 help 2265 Symbols exported with EXPORT_SYMBOL_NS*() are considered exported in 2266 a namespace. A module that makes use of a symbol exported with such a 2267 namespace is required to import the namespace via MODULE_IMPORT_NS(). 2268 There is no technical reason to enforce correct namespace imports, 2269 but it creates consistency between symbols defining namespaces and 2270 users importing namespaces they make use of. This option relaxes this 2271 requirement and lifts the enforcement when loading a module. 2272 2273 If unsure, say N. 2274 2275config MODPROBE_PATH 2276 string "Path to modprobe binary" 2277 default "/sbin/modprobe" 2278 help 2279 When kernel code requests a module, it does so by calling 2280 the "modprobe" userspace utility. This option allows you to 2281 set the path where that binary is found. This can be changed 2282 at runtime via the sysctl file 2283 /proc/sys/kernel/modprobe. Setting this to the empty string 2284 removes the kernel's ability to request modules (but 2285 userspace can still load modules explicitly). 2286 2287config TRIM_UNUSED_KSYMS 2288 bool "Trim unused exported kernel symbols" if EXPERT 2289 depends on !COMPILE_TEST 2290 help 2291 The kernel and some modules make many symbols available for 2292 other modules to use via EXPORT_SYMBOL() and variants. Depending 2293 on the set of modules being selected in your kernel configuration, 2294 many of those exported symbols might never be used. 2295 2296 This option allows for unused exported symbols to be dropped from 2297 the build. In turn, this provides the compiler more opportunities 2298 (especially when using LTO) for optimizing the code and reducing 2299 binary size. This might have some security advantages as well. 2300 2301 If unsure, or if you need to build out-of-tree modules, say N. 2302 2303config UNUSED_KSYMS_WHITELIST 2304 string "Whitelist of symbols to keep in ksymtab" 2305 depends on TRIM_UNUSED_KSYMS 2306 help 2307 By default, all unused exported symbols will be un-exported from the 2308 build when TRIM_UNUSED_KSYMS is selected. 2309 2310 UNUSED_KSYMS_WHITELIST allows to whitelist symbols that must be kept 2311 exported at all times, even in absence of in-tree users. The value to 2312 set here is the path to a text file containing the list of symbols, 2313 one per line. The path can be absolute, or relative to the kernel 2314 source tree. 2315 2316endif # MODULES 2317 2318config MODULES_TREE_LOOKUP 2319 def_bool y 2320 depends on PERF_EVENTS || TRACING || CFI_CLANG 2321 2322config INIT_ALL_POSSIBLE 2323 bool 2324 help 2325 Back when each arch used to define their own cpu_online_mask and 2326 cpu_possible_mask, some of them chose to initialize cpu_possible_mask 2327 with all 1s, and others with all 0s. When they were centralised, 2328 it was better to provide this option than to break all the archs 2329 and have several arch maintainers pursuing me down dark alleys. 2330 2331source "block/Kconfig" 2332 2333config PREEMPT_NOTIFIERS 2334 bool 2335 2336config PADATA 2337 depends on SMP 2338 bool 2339 2340config ASN1 2341 tristate 2342 help 2343 Build a simple ASN.1 grammar compiler that produces a bytecode output 2344 that can be interpreted by the ASN.1 stream decoder and used to 2345 inform it as to what tags are to be expected in a stream and what 2346 functions to call on what tags. 2347 2348source "kernel/Kconfig.locks" 2349 2350config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 2351 bool 2352 2353config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 2354 bool 2355 2356# It may be useful for an architecture to override the definitions of the 2357# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 2358# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 2359# different calling convention for syscalls. They can also override the 2360# macros for not-implemented syscalls in kernel/sys_ni.c and 2361# kernel/time/posix-stubs.c. All these overrides need to be available in 2362# <asm/syscall_wrapper.h>. 2363config ARCH_HAS_SYSCALL_WRAPPER 2364 def_bool n 2365