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 RUSTC_VERSION 64 int 65 default $(rustc-version) 66 help 67 It does not depend on `RUST` since that one may need to use the version 68 in a `depends on`. 69 70config RUST_IS_AVAILABLE 71 def_bool $(success,$(srctree)/scripts/rust_is_available.sh) 72 help 73 This shows whether a suitable Rust toolchain is available (found). 74 75 Please see Documentation/rust/quick-start.rst for instructions on how 76 to satisfy the build requirements of Rust support. 77 78 In particular, the Makefile target 'rustavailable' is useful to check 79 why the Rust toolchain is not being detected. 80 81config RUSTC_LLVM_VERSION 82 int 83 default $(rustc-llvm-version) 84 85config CC_CAN_LINK 86 bool 87 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m64-flag)) if 64BIT 88 default $(success,$(srctree)/scripts/cc-can-link.sh $(CC) $(CLANG_FLAGS) $(USERCFLAGS) $(USERLDFLAGS) $(m32-flag)) 89 90# Fixed in GCC 14, 13.3, 12.4 and 11.5 91# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113921 92config GCC_ASM_GOTO_OUTPUT_BROKEN 93 bool 94 depends on CC_IS_GCC 95 default y if GCC_VERSION < 110500 96 default y if GCC_VERSION >= 120000 && GCC_VERSION < 120400 97 default y if GCC_VERSION >= 130000 && GCC_VERSION < 130300 98 99config CC_HAS_ASM_GOTO_OUTPUT 100 def_bool y 101 depends on !GCC_ASM_GOTO_OUTPUT_BROKEN 102 depends on $(success,echo 'int foo(int x) { asm goto ("": "=r"(x) ::: bar); return x; bar: return 0; }' | $(CC) -x c - -c -o /dev/null) 103 104config CC_HAS_ASM_GOTO_TIED_OUTPUT 105 depends on CC_HAS_ASM_GOTO_OUTPUT 106 # Detect buggy gcc and clang, fixed in gcc-11 clang-14. 107 def_bool $(success,echo 'int foo(int *x) { asm goto (".long (%l[bar]) - .": "+m"(*x) ::: bar); return *x; bar: return 0; }' | $CC -x c - -c -o /dev/null) 108 109config TOOLS_SUPPORT_RELR 110 def_bool $(success,env "CC=$(CC)" "LD=$(LD)" "NM=$(NM)" "OBJCOPY=$(OBJCOPY)" $(srctree)/scripts/tools-support-relr.sh) 111 112config CC_HAS_ASM_INLINE 113 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 114 115config CC_HAS_NO_PROFILE_FN_ATTR 116 def_bool $(success,echo '__attribute__((no_profile_instrument_function)) int x();' | $(CC) -x c - -c -o /dev/null -Werror) 117 118config CC_HAS_COUNTED_BY 119 bool 120 # clang needs to be at least 19.1.3 to avoid __bdos miscalculations 121 # https://github.com/llvm/llvm-project/pull/110497 122 # https://github.com/llvm/llvm-project/pull/112636 123 default y if CC_IS_CLANG && CLANG_VERSION >= 190103 124 # supported since gcc 15.1.0 125 # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108896 126 default y if CC_IS_GCC && GCC_VERSION >= 150100 127 128config CC_HAS_MULTIDIMENSIONAL_NONSTRING 129 def_bool $(success,echo 'char tag[][4] __attribute__((__nonstring__)) = { };' | $(CC) $(CLANG_FLAGS) -x c - -c -o /dev/null -Werror) 130 131config LD_CAN_USE_KEEP_IN_OVERLAY 132 # ld.lld prior to 21.0.0 did not support KEEP within an overlay description 133 # https://github.com/llvm/llvm-project/pull/130661 134 def_bool LD_IS_BFD || LLD_VERSION >= 210000 135 136config RUSTC_HAS_COERCE_POINTEE 137 def_bool RUSTC_VERSION >= 108400 138 139config RUSTC_HAS_SPAN_FILE 140 def_bool RUSTC_VERSION >= 108800 141 142config RUSTC_HAS_UNNECESSARY_TRANSMUTES 143 def_bool RUSTC_VERSION >= 108800 144 145config PAHOLE_VERSION 146 int 147 default $(shell,$(srctree)/scripts/pahole-version.sh $(PAHOLE)) 148 149config CONSTRUCTORS 150 bool 151 152config IRQ_WORK 153 def_bool y if SMP 154 155config BUILDTIME_TABLE_SORT 156 bool 157 158config THREAD_INFO_IN_TASK 159 bool 160 help 161 Select this to move thread_info off the stack into task_struct. To 162 make this work, an arch will need to remove all thread_info fields 163 except flags and fix any runtime bugs. 164 165 One subtle change that will be needed is to use try_get_task_stack() 166 and put_task_stack() in save_thread_stack_tsk() and get_wchan(). 167 168menu "General setup" 169 170config BROKEN 171 bool 172 173config BROKEN_ON_SMP 174 bool 175 depends on BROKEN || !SMP 176 default y 177 178config INIT_ENV_ARG_LIMIT 179 int 180 default 32 if !UML 181 default 128 if UML 182 help 183 Maximum of each of the number of arguments and environment 184 variables passed to init from the kernel command line. 185 186config COMPILE_TEST 187 bool "Compile also drivers which will not load" 188 depends on HAS_IOMEM 189 help 190 Some drivers can be compiled on a different platform than they are 191 intended to be run on. Despite they cannot be loaded there (or even 192 when they load they cannot be used due to missing HW support), 193 developers still, opposing to distributors, might want to build such 194 drivers to compile-test them. 195 196 If you are a developer and want to build everything available, say Y 197 here. If you are a user/distributor, say N here to exclude useless 198 drivers to be distributed. 199 200config WERROR 201 bool "Compile the kernel with warnings as errors" 202 default COMPILE_TEST 203 help 204 A kernel build should not cause any compiler warnings, and this 205 enables the '-Werror' (for C) and '-Dwarnings' (for Rust) flags 206 to enforce that rule by default. Certain warnings from other tools 207 such as the linker may be upgraded to errors with this option as 208 well. 209 210 However, if you have a new (or very old) compiler or linker with odd 211 and unusual warnings, or you have some architecture with problems, 212 you may need to disable this config option in order to 213 successfully build the kernel. 214 215 If in doubt, say Y. 216 217config UAPI_HEADER_TEST 218 bool "Compile test UAPI headers" 219 depends on HEADERS_INSTALL && CC_CAN_LINK 220 help 221 Compile test headers exported to user-space to ensure they are 222 self-contained, i.e. compilable as standalone units. 223 224 If you are a developer or tester and want to ensure the exported 225 headers are self-contained, say Y here. Otherwise, choose N. 226 227config LOCALVERSION 228 string "Local version - append to kernel release" 229 help 230 Append an extra string to the end of your kernel version. 231 This will show up when you type uname, for example. 232 The string you set here will be appended after the contents of 233 any files with a filename matching localversion* in your 234 object and source tree, in that order. Your total string can 235 be a maximum of 64 characters. 236 237config LOCALVERSION_AUTO 238 bool "Automatically append version information to the version string" 239 default y 240 depends on !COMPILE_TEST 241 help 242 This will try to automatically determine if the current tree is a 243 release tree by looking for git tags that belong to the current 244 top of tree revision. 245 246 A string of the format -gxxxxxxxx will be added to the localversion 247 if a git-based tree is found. The string generated by this will be 248 appended after any matching localversion* files, and after the value 249 set in CONFIG_LOCALVERSION. 250 251 (The actual string used here is the first 12 characters produced 252 by running the command: 253 254 $ git rev-parse --verify HEAD 255 256 which is done within the script "scripts/setlocalversion".) 257 258config BUILD_SALT 259 string "Build ID Salt" 260 default "" 261 help 262 The build ID is used to link binaries and their debug info. Setting 263 this option will use the value in the calculation of the build id. 264 This is mostly useful for distributions which want to ensure the 265 build is unique between builds. It's safe to leave the default. 266 267config HAVE_KERNEL_GZIP 268 bool 269 270config HAVE_KERNEL_BZIP2 271 bool 272 273config HAVE_KERNEL_LZMA 274 bool 275 276config HAVE_KERNEL_XZ 277 bool 278 279config HAVE_KERNEL_LZO 280 bool 281 282config HAVE_KERNEL_LZ4 283 bool 284 285config HAVE_KERNEL_ZSTD 286 bool 287 288config HAVE_KERNEL_UNCOMPRESSED 289 bool 290 291choice 292 prompt "Kernel compression mode" 293 default KERNEL_GZIP 294 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 295 help 296 The linux kernel is a kind of self-extracting executable. 297 Several compression algorithms are available, which differ 298 in efficiency, compression and decompression speed. 299 Compression speed is only relevant when building a kernel. 300 Decompression speed is relevant at each boot. 301 302 If you have any problems with bzip2 or lzma compressed 303 kernels, mail me (Alain Knaff) <alain@knaff.lu>. (An older 304 version of this functionality (bzip2 only), for 2.4, was 305 supplied by Christian Ludwig) 306 307 High compression options are mostly useful for users, who 308 are low on disk space (embedded systems), but for whom ram 309 size matters less. 310 311 If in doubt, select 'gzip' 312 313config KERNEL_GZIP 314 bool "Gzip" 315 depends on HAVE_KERNEL_GZIP 316 help 317 The old and tried gzip compression. It provides a good balance 318 between compression ratio and decompression speed. 319 320config KERNEL_BZIP2 321 bool "Bzip2" 322 depends on HAVE_KERNEL_BZIP2 323 help 324 Its compression ratio and speed is intermediate. 325 Decompression speed is slowest among the choices. The kernel 326 size is about 10% smaller with bzip2, in comparison to gzip. 327 Bzip2 uses a large amount of memory. For modern kernels you 328 will need at least 8MB RAM or more for booting. 329 330config KERNEL_LZMA 331 bool "LZMA" 332 depends on HAVE_KERNEL_LZMA 333 help 334 This compression algorithm's ratio is best. Decompression speed 335 is between gzip and bzip2. Compression is slowest. 336 The kernel size is about 33% smaller with LZMA in comparison to gzip. 337 338config KERNEL_XZ 339 bool "XZ" 340 depends on HAVE_KERNEL_XZ 341 help 342 XZ uses the LZMA2 algorithm and instruction set specific 343 BCJ filters which can improve compression ratio of executable 344 code. The size of the kernel is about 30% smaller with XZ in 345 comparison to gzip. On architectures for which there is a BCJ 346 filter (i386, x86_64, ARM, ARM64, RISC-V, big endian PowerPC, 347 and SPARC), XZ will create a few percent smaller kernel than 348 plain LZMA. 349 350 The speed is about the same as with LZMA: The decompression 351 speed of XZ is better than that of bzip2 but worse than gzip 352 and LZO. Compression is slow. 353 354config KERNEL_LZO 355 bool "LZO" 356 depends on HAVE_KERNEL_LZO 357 help 358 Its compression ratio is the poorest among the choices. The kernel 359 size is about 10% bigger than gzip; however its speed 360 (both compression and decompression) is the fastest. 361 362config KERNEL_LZ4 363 bool "LZ4" 364 depends on HAVE_KERNEL_LZ4 365 help 366 LZ4 is an LZ77-type compressor with a fixed, byte-oriented encoding. 367 A preliminary version of LZ4 de/compression tool is available at 368 <https://code.google.com/p/lz4/>. 369 370 Its compression ratio is worse than LZO. The size of the kernel 371 is about 8% bigger than LZO. But the decompression speed is 372 faster than LZO. 373 374config KERNEL_ZSTD 375 bool "ZSTD" 376 depends on HAVE_KERNEL_ZSTD 377 help 378 ZSTD is a compression algorithm targeting intermediate compression 379 with fast decompression speed. It will compress better than GZIP and 380 decompress around the same speed as LZO, but slower than LZ4. You 381 will need at least 192 KB RAM or more for booting. The zstd command 382 line tool is required for compression. 383 384config KERNEL_UNCOMPRESSED 385 bool "None" 386 depends on HAVE_KERNEL_UNCOMPRESSED 387 help 388 Produce uncompressed kernel image. This option is usually not what 389 you want. It is useful for debugging the kernel in slow simulation 390 environments, where decompressing and moving the kernel is awfully 391 slow. This option allows early boot code to skip the decompressor 392 and jump right at uncompressed kernel image. 393 394endchoice 395 396config DEFAULT_INIT 397 string "Default init path" 398 default "" 399 help 400 This option determines the default init for the system if no init= 401 option is passed on the kernel command line. If the requested path is 402 not present, we will still then move on to attempting further 403 locations (e.g. /sbin/init, etc). If this is empty, we will just use 404 the fallback list when init= is not passed. 405 406config DEFAULT_HOSTNAME 407 string "Default hostname" 408 default "(none)" 409 help 410 This option determines the default system hostname before userspace 411 calls sethostname(2). The kernel traditionally uses "(none)" here, 412 but you may wish to use a different default here to make a minimal 413 system more usable with less configuration. 414 415config SYSVIPC 416 bool "System V IPC" 417 help 418 Inter Process Communication is a suite of library functions and 419 system calls which let processes (running programs) synchronize and 420 exchange information. It is generally considered to be a good thing, 421 and some programs won't run unless you say Y here. In particular, if 422 you want to run the DOS emulator dosemu under Linux (read the 423 DOSEMU-HOWTO, available from <http://www.tldp.org/docs.html#howto>), 424 you'll need to say Y here. 425 426 You can find documentation about IPC with "info ipc" and also in 427 section 6.4 of the Linux Programmer's Guide, available from 428 <http://www.tldp.org/guides.html>. 429 430config SYSVIPC_SYSCTL 431 bool 432 depends on SYSVIPC 433 depends on SYSCTL 434 default y 435 436config SYSVIPC_COMPAT 437 def_bool y 438 depends on COMPAT && SYSVIPC 439 440config POSIX_MQUEUE 441 bool "POSIX Message Queues" 442 depends on NET 443 help 444 POSIX variant of message queues is a part of IPC. In POSIX message 445 queues every message has a priority which decides about succession 446 of receiving it by a process. If you want to compile and run 447 programs written e.g. for Solaris with use of its POSIX message 448 queues (functions mq_*) say Y here. 449 450 POSIX message queues are visible as a filesystem called 'mqueue' 451 and can be mounted somewhere if you want to do filesystem 452 operations on message queues. 453 454 If unsure, say Y. 455 456config POSIX_MQUEUE_SYSCTL 457 bool 458 depends on POSIX_MQUEUE 459 depends on SYSCTL 460 default y 461 462config WATCH_QUEUE 463 bool "General notification queue" 464 default n 465 help 466 467 This is a general notification queue for the kernel to pass events to 468 userspace by splicing them into pipes. It can be used in conjunction 469 with watches for key/keyring change notifications and device 470 notifications. 471 472 See Documentation/core-api/watch_queue.rst 473 474config CROSS_MEMORY_ATTACH 475 bool "Enable process_vm_readv/writev syscalls" 476 depends on MMU 477 default y 478 help 479 Enabling this option adds the system calls process_vm_readv and 480 process_vm_writev which allow a process with the correct privileges 481 to directly read from or write to another process' address space. 482 See the man page for more details. 483 484config AUDIT 485 bool "Auditing support" 486 depends on NET 487 help 488 Enable auditing infrastructure that can be used with another 489 kernel subsystem, such as SELinux (which requires this for 490 logging of avc messages output). System call auditing is included 491 on architectures which support it. 492 493config HAVE_ARCH_AUDITSYSCALL 494 bool 495 496config AUDITSYSCALL 497 def_bool y 498 depends on AUDIT && HAVE_ARCH_AUDITSYSCALL 499 select FSNOTIFY 500 501source "kernel/irq/Kconfig" 502source "kernel/time/Kconfig" 503source "kernel/bpf/Kconfig" 504source "kernel/Kconfig.preempt" 505 506menu "CPU/Task time and stats accounting" 507 508config VIRT_CPU_ACCOUNTING 509 bool 510 511choice 512 prompt "Cputime accounting" 513 default TICK_CPU_ACCOUNTING 514 515# Kind of a stub config for the pure tick based cputime accounting 516config TICK_CPU_ACCOUNTING 517 bool "Simple tick based cputime accounting" 518 depends on !S390 && !NO_HZ_FULL 519 help 520 This is the basic tick based cputime accounting that maintains 521 statistics about user, system and idle time spent on per jiffies 522 granularity. 523 524 If unsure, say Y. 525 526config VIRT_CPU_ACCOUNTING_NATIVE 527 bool "Deterministic task and CPU time accounting" 528 depends on HAVE_VIRT_CPU_ACCOUNTING && !NO_HZ_FULL 529 select VIRT_CPU_ACCOUNTING 530 help 531 Select this option to enable more accurate task and CPU time 532 accounting. This is done by reading a CPU counter on each 533 kernel entry and exit and on transitions within the kernel 534 between system, softirq and hardirq state, so there is a 535 small performance impact. In the case of s390 or IBM POWER > 5, 536 this also enables accounting of stolen time on logically-partitioned 537 systems. 538 539config VIRT_CPU_ACCOUNTING_GEN 540 bool "Full dynticks CPU time accounting" 541 depends on HAVE_CONTEXT_TRACKING_USER 542 depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 543 depends on GENERIC_CLOCKEVENTS 544 select VIRT_CPU_ACCOUNTING 545 select CONTEXT_TRACKING_USER 546 help 547 Select this option to enable task and CPU time accounting on full 548 dynticks systems. This accounting is implemented by watching every 549 kernel-user boundaries using the context tracking subsystem. 550 The accounting is thus performed at the expense of some significant 551 overhead. 552 553 For now this is only useful if you are working on the full 554 dynticks subsystem development. 555 556 If unsure, say N. 557 558endchoice 559 560config IRQ_TIME_ACCOUNTING 561 bool "Fine granularity task level IRQ time accounting" 562 depends on HAVE_IRQ_TIME_ACCOUNTING && !VIRT_CPU_ACCOUNTING_NATIVE 563 help 564 Select this option to enable fine granularity task irq time 565 accounting. This is done by reading a timestamp on each 566 transitions between softirq and hardirq state, so there can be a 567 small performance impact. 568 569 If in doubt, say N here. 570 571config HAVE_SCHED_AVG_IRQ 572 def_bool y 573 depends on IRQ_TIME_ACCOUNTING || PARAVIRT_TIME_ACCOUNTING 574 depends on SMP 575 576config SCHED_HW_PRESSURE 577 bool 578 default y if ARM && ARM_CPU_TOPOLOGY 579 default y if ARM64 580 depends on SMP 581 depends on CPU_FREQ_THERMAL 582 help 583 Select this option to enable HW pressure accounting in the 584 scheduler. HW pressure is the value conveyed to the scheduler 585 that reflects the reduction in CPU compute capacity resulted from 586 HW throttling. HW throttling occurs when the performance of 587 a CPU is capped due to high operating temperatures as an example. 588 589 If selected, the scheduler will be able to balance tasks accordingly, 590 i.e. put less load on throttled CPUs than on non/less throttled ones. 591 592 This requires the architecture to implement 593 arch_update_hw_pressure() and arch_scale_thermal_pressure(). 594 595config BSD_PROCESS_ACCT 596 bool "BSD Process Accounting" 597 depends on MULTIUSER 598 help 599 If you say Y here, a user level program will be able to instruct the 600 kernel (via a special system call) to write process accounting 601 information to a file: whenever a process exits, information about 602 that process will be appended to the file by the kernel. The 603 information includes things such as creation time, owning user, 604 command name, memory usage, controlling terminal etc. (the complete 605 list is in the struct acct in <file:include/linux/acct.h>). It is 606 up to the user level program to do useful things with this 607 information. This is generally a good idea, so say Y. 608 609config BSD_PROCESS_ACCT_V3 610 bool "BSD Process Accounting version 3 file format" 611 depends on BSD_PROCESS_ACCT 612 default n 613 help 614 If you say Y here, the process accounting information is written 615 in a new file format that also logs the process IDs of each 616 process and its parent. Note that this file format is incompatible 617 with previous v0/v1/v2 file formats, so you will need updated tools 618 for processing it. A preliminary version of these tools is available 619 at <http://www.gnu.org/software/acct/>. 620 621config TASKSTATS 622 bool "Export task/process statistics through netlink" 623 depends on NET 624 depends on MULTIUSER 625 default n 626 help 627 Export selected statistics for tasks/processes through the 628 generic netlink interface. Unlike BSD process accounting, the 629 statistics are available during the lifetime of tasks/processes as 630 responses to commands. Like BSD accounting, they are sent to user 631 space on task exit. 632 633 Say N if unsure. 634 635config TASK_DELAY_ACCT 636 bool "Enable per-task delay accounting" 637 depends on TASKSTATS 638 select SCHED_INFO 639 help 640 Collect information on time spent by a task waiting for system 641 resources like cpu, synchronous block I/O completion and swapping 642 in pages. Such statistics can help in setting a task's priorities 643 relative to other tasks for cpu, io, rss limits etc. 644 645 Say N if unsure. 646 647config TASK_XACCT 648 bool "Enable extended accounting over taskstats" 649 depends on TASKSTATS 650 help 651 Collect extended task accounting data and send the data 652 to userland for processing over the taskstats interface. 653 654 Say N if unsure. 655 656config TASK_IO_ACCOUNTING 657 bool "Enable per-task storage I/O accounting" 658 depends on TASK_XACCT 659 help 660 Collect information on the number of bytes of storage I/O which this 661 task has caused. 662 663 Say N if unsure. 664 665config PSI 666 bool "Pressure stall information tracking" 667 select KERNFS 668 help 669 Collect metrics that indicate how overcommitted the CPU, memory, 670 and IO capacity are in the system. 671 672 If you say Y here, the kernel will create /proc/pressure/ with the 673 pressure statistics files cpu, memory, and io. These will indicate 674 the share of walltime in which some or all tasks in the system are 675 delayed due to contention of the respective resource. 676 677 In kernels with cgroup support, cgroups (cgroup2 only) will 678 have cpu.pressure, memory.pressure, and io.pressure files, 679 which aggregate pressure stalls for the grouped tasks only. 680 681 For more details see Documentation/accounting/psi.rst. 682 683 Say N if unsure. 684 685config PSI_DEFAULT_DISABLED 686 bool "Require boot parameter to enable pressure stall information tracking" 687 default n 688 depends on PSI 689 help 690 If set, pressure stall information tracking will be disabled 691 per default but can be enabled through passing psi=1 on the 692 kernel commandline during boot. 693 694 This feature adds some code to the task wakeup and sleep 695 paths of the scheduler. The overhead is too low to affect 696 common scheduling-intense workloads in practice (such as 697 webservers, memcache), but it does show up in artificial 698 scheduler stress tests, such as hackbench. 699 700 If you are paranoid and not sure what the kernel will be 701 used for, say Y. 702 703 Say N if unsure. 704 705endmenu # "CPU/Task time and stats accounting" 706 707config CPU_ISOLATION 708 bool "CPU isolation" 709 depends on SMP 710 default y 711 help 712 Make sure that CPUs running critical tasks are not disturbed by 713 any source of "noise" such as unbound workqueues, timers, kthreads... 714 Unbound jobs get offloaded to housekeeping CPUs. This is driven by 715 the "isolcpus=" boot parameter. 716 717 Say Y if unsure. 718 719source "kernel/rcu/Kconfig" 720 721config IKCONFIG 722 tristate "Kernel .config support" 723 help 724 This option enables the complete Linux kernel ".config" file 725 contents to be saved in the kernel. It provides documentation 726 of which kernel options are used in a running kernel or in an 727 on-disk kernel. This information can be extracted from the kernel 728 image file with the script scripts/extract-ikconfig and used as 729 input to rebuild the current kernel or to build another kernel. 730 It can also be extracted from a running kernel by reading 731 /proc/config.gz if enabled (below). 732 733config IKCONFIG_PROC 734 bool "Enable access to .config through /proc/config.gz" 735 depends on IKCONFIG && PROC_FS 736 help 737 This option enables access to the kernel configuration file 738 through /proc/config.gz. 739 740config IKHEADERS 741 tristate "Enable kernel headers through /sys/kernel/kheaders.tar.xz" 742 depends on SYSFS 743 help 744 This option enables access to the in-kernel headers that are generated during 745 the build process. These can be used to build eBPF tracing programs, 746 or similar programs. If you build the headers as a module, a module called 747 kheaders.ko is built which can be loaded on-demand to get access to headers. 748 749config LOG_BUF_SHIFT 750 int "Kernel log buffer size (16 => 64KB, 17 => 128KB)" 751 range 12 25 752 default 17 753 depends on PRINTK 754 help 755 Select the minimal kernel log buffer size as a power of 2. 756 The final size is affected by LOG_CPU_MAX_BUF_SHIFT config 757 parameter, see below. Any higher size also might be forced 758 by "log_buf_len" boot parameter. 759 760 Examples: 761 17 => 128 KB 762 16 => 64 KB 763 15 => 32 KB 764 14 => 16 KB 765 13 => 8 KB 766 12 => 4 KB 767 768config LOG_CPU_MAX_BUF_SHIFT 769 int "CPU kernel log buffer size contribution (13 => 8 KB, 17 => 128KB)" 770 depends on SMP 771 range 0 21 772 default 0 if BASE_SMALL 773 default 12 774 depends on PRINTK 775 help 776 This option allows to increase the default ring buffer size 777 according to the number of CPUs. The value defines the contribution 778 of each CPU as a power of 2. The used space is typically only few 779 lines however it might be much more when problems are reported, 780 e.g. backtraces. 781 782 The increased size means that a new buffer has to be allocated and 783 the original static one is unused. It makes sense only on systems 784 with more CPUs. Therefore this value is used only when the sum of 785 contributions is greater than the half of the default kernel ring 786 buffer as defined by LOG_BUF_SHIFT. The default values are set 787 so that more than 16 CPUs are needed to trigger the allocation. 788 789 Also this option is ignored when "log_buf_len" kernel parameter is 790 used as it forces an exact (power of two) size of the ring buffer. 791 792 The number of possible CPUs is used for this computation ignoring 793 hotplugging making the computation optimal for the worst case 794 scenario while allowing a simple algorithm to be used from bootup. 795 796 Examples shift values and their meaning: 797 17 => 128 KB for each CPU 798 16 => 64 KB for each CPU 799 15 => 32 KB for each CPU 800 14 => 16 KB for each CPU 801 13 => 8 KB for each CPU 802 12 => 4 KB for each CPU 803 804config PRINTK_INDEX 805 bool "Printk indexing debugfs interface" 806 depends on PRINTK && DEBUG_FS 807 help 808 Add support for indexing of all printk formats known at compile time 809 at <debugfs>/printk/index/<module>. 810 811 This can be used as part of maintaining daemons which monitor 812 /dev/kmsg, as it permits auditing the printk formats present in a 813 kernel, allowing detection of cases where monitored printks are 814 changed or no longer present. 815 816 There is no additional runtime cost to printk with this enabled. 817 818# 819# Architectures with an unreliable sched_clock() should select this: 820# 821config HAVE_UNSTABLE_SCHED_CLOCK 822 bool 823 824config GENERIC_SCHED_CLOCK 825 bool 826 827menu "Scheduler features" 828 829config UCLAMP_TASK 830 bool "Enable utilization clamping for RT/FAIR tasks" 831 depends on CPU_FREQ_GOV_SCHEDUTIL 832 help 833 This feature enables the scheduler to track the clamped utilization 834 of each CPU based on RUNNABLE tasks scheduled on that CPU. 835 836 With this option, the user can specify the min and max CPU 837 utilization allowed for RUNNABLE tasks. The max utilization defines 838 the maximum frequency a task should use while the min utilization 839 defines the minimum frequency it should use. 840 841 Both min and max utilization clamp values are hints to the scheduler, 842 aiming at improving its frequency selection policy, but they do not 843 enforce or grant any specific bandwidth for tasks. 844 845 If in doubt, say N. 846 847config UCLAMP_BUCKETS_COUNT 848 int "Number of supported utilization clamp buckets" 849 range 5 20 850 default 5 851 depends on UCLAMP_TASK 852 help 853 Defines the number of clamp buckets to use. The range of each bucket 854 will be SCHED_CAPACITY_SCALE/UCLAMP_BUCKETS_COUNT. The higher the 855 number of clamp buckets the finer their granularity and the higher 856 the precision of clamping aggregation and tracking at run-time. 857 858 For example, with the minimum configuration value we will have 5 859 clamp buckets tracking 20% utilization each. A 25% boosted tasks will 860 be refcounted in the [20..39]% bucket and will set the bucket clamp 861 effective value to 25%. 862 If a second 30% boosted task should be co-scheduled on the same CPU, 863 that task will be refcounted in the same bucket of the first task and 864 it will boost the bucket clamp effective value to 30%. 865 The clamp effective value of a bucket is reset to its nominal value 866 (20% in the example above) when there are no more tasks refcounted in 867 that bucket. 868 869 An additional boost/capping margin can be added to some tasks. In the 870 example above the 25% task will be boosted to 30% until it exits the 871 CPU. If that should be considered not acceptable on certain systems, 872 it's always possible to reduce the margin by increasing the number of 873 clamp buckets to trade off used memory for run-time tracking 874 precision. 875 876 If in doubt, use the default value. 877 878endmenu 879 880# 881# For architectures that want to enable the support for NUMA-affine scheduler 882# balancing logic: 883# 884config ARCH_SUPPORTS_NUMA_BALANCING 885 bool 886 887# 888# For architectures that prefer to flush all TLBs after a number of pages 889# are unmapped instead of sending one IPI per page to flush. The architecture 890# must provide guarantees on what happens if a clean TLB cache entry is 891# written after the unmap. Details are in mm/rmap.c near the check for 892# should_defer_flush. The architecture should also consider if the full flush 893# and the refill costs are offset by the savings of sending fewer IPIs. 894config ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH 895 bool 896 897config CC_HAS_INT128 898 def_bool !$(cc-option,$(m64-flag) -D__SIZEOF_INT128__=0) && 64BIT 899 900config CC_IMPLICIT_FALLTHROUGH 901 string 902 default "-Wimplicit-fallthrough=5" if CC_IS_GCC && $(cc-option,-Wimplicit-fallthrough=5) 903 default "-Wimplicit-fallthrough" if CC_IS_CLANG && $(cc-option,-Wunreachable-code-fallthrough) 904 905# Currently, disable gcc-10+ array-bounds globally. 906# It's still broken in gcc-13, so no upper bound yet. 907config GCC10_NO_ARRAY_BOUNDS 908 def_bool y 909 910config CC_NO_ARRAY_BOUNDS 911 bool 912 default y if CC_IS_GCC && GCC_VERSION >= 90000 && GCC10_NO_ARRAY_BOUNDS 913 914# Currently, disable -Wstringop-overflow for GCC globally. 915config GCC_NO_STRINGOP_OVERFLOW 916 def_bool y 917 918config CC_NO_STRINGOP_OVERFLOW 919 bool 920 default y if CC_IS_GCC && GCC_NO_STRINGOP_OVERFLOW 921 922config CC_STRINGOP_OVERFLOW 923 bool 924 default y if CC_IS_GCC && !CC_NO_STRINGOP_OVERFLOW 925 926# 927# For architectures that know their GCC __int128 support is sound 928# 929config ARCH_SUPPORTS_INT128 930 bool 931 932# For architectures that (ab)use NUMA to represent different memory regions 933# all cpu-local but of different latencies, such as SuperH. 934# 935config ARCH_WANT_NUMA_VARIABLE_LOCALITY 936 bool 937 938config NUMA_BALANCING 939 bool "Memory placement aware NUMA scheduler" 940 depends on ARCH_SUPPORTS_NUMA_BALANCING 941 depends on !ARCH_WANT_NUMA_VARIABLE_LOCALITY 942 depends on SMP && NUMA && MIGRATION && !PREEMPT_RT 943 help 944 This option adds support for automatic NUMA aware memory/task placement. 945 The mechanism is quite primitive and is based on migrating memory when 946 it has references to the node the task is running on. 947 948 This system will be inactive on UMA systems. 949 950config NUMA_BALANCING_DEFAULT_ENABLED 951 bool "Automatically enable NUMA aware memory/task placement" 952 default y 953 depends on NUMA_BALANCING 954 help 955 If set, automatic NUMA balancing will be enabled if running on a NUMA 956 machine. 957 958config SLAB_OBJ_EXT 959 bool 960 961menuconfig CGROUPS 962 bool "Control Group support" 963 select KERNFS 964 help 965 This option adds support for grouping sets of processes together, for 966 use with process control subsystems such as Cpusets, CFS, memory 967 controls or device isolation. 968 See 969 - Documentation/scheduler/sched-design-CFS.rst (CFS) 970 - Documentation/admin-guide/cgroup-v1/ (features for grouping, isolation 971 and resource control) 972 973 Say N if unsure. 974 975if CGROUPS 976 977config PAGE_COUNTER 978 bool 979 980config CGROUP_FAVOR_DYNMODS 981 bool "Favor dynamic modification latency reduction by default" 982 help 983 This option enables the "favordynmods" mount option by default 984 which reduces the latencies of dynamic cgroup modifications such 985 as task migrations and controller on/offs at the cost of making 986 hot path operations such as forks and exits more expensive. 987 988 Say N if unsure. 989 990config MEMCG 991 bool "Memory controller" 992 select PAGE_COUNTER 993 select EVENTFD 994 select SLAB_OBJ_EXT 995 select VM_EVENT_COUNTERS 996 help 997 Provides control over the memory footprint of tasks in a cgroup. 998 999config MEMCG_NMI_UNSAFE 1000 bool 1001 depends on MEMCG 1002 depends on HAVE_NMI 1003 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !ARCH_HAVE_NMI_SAFE_CMPXCHG 1004 default y 1005 1006config MEMCG_NMI_SAFETY_REQUIRES_ATOMIC 1007 bool 1008 depends on MEMCG 1009 depends on HAVE_NMI 1010 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && ARCH_HAVE_NMI_SAFE_CMPXCHG 1011 default y 1012 1013config MEMCG_V1 1014 bool "Legacy cgroup v1 memory controller" 1015 depends on MEMCG 1016 default n 1017 help 1018 Legacy cgroup v1 memory controller which has been deprecated by 1019 cgroup v2 implementation. The v1 is there for legacy applications 1020 which haven't migrated to the new cgroup v2 interface yet. If you 1021 do not have any such application then you are completely fine leaving 1022 this option disabled. 1023 1024 Please note that feature set of the legacy memory controller is likely 1025 going to shrink due to deprecation process. New deployments with v1 1026 controller are highly discouraged. 1027 1028 Say N if unsure. 1029 1030config BLK_CGROUP 1031 bool "IO controller" 1032 depends on BLOCK 1033 default n 1034 help 1035 Generic block IO controller cgroup interface. This is the common 1036 cgroup interface which should be used by various IO controlling 1037 policies. 1038 1039 Currently, CFQ IO scheduler uses it to recognize task groups and 1040 control disk bandwidth allocation (proportional time slice allocation) 1041 to such task groups. It is also used by bio throttling logic in 1042 block layer to implement upper limit in IO rates on a device. 1043 1044 This option only enables generic Block IO controller infrastructure. 1045 One needs to also enable actual IO controlling logic/policy. For 1046 enabling proportional weight division of disk bandwidth in CFQ, set 1047 CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 1048 CONFIG_BLK_DEV_THROTTLING=y. 1049 1050 See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 1051 1052config CGROUP_WRITEBACK 1053 bool 1054 depends on MEMCG && BLK_CGROUP 1055 default y 1056 1057menuconfig CGROUP_SCHED 1058 bool "CPU controller" 1059 default n 1060 help 1061 This feature lets CPU scheduler recognize task groups and control CPU 1062 bandwidth allocation to such task groups. It uses cgroups to group 1063 tasks. 1064 1065if CGROUP_SCHED 1066config GROUP_SCHED_WEIGHT 1067 def_bool n 1068 1069config FAIR_GROUP_SCHED 1070 bool "Group scheduling for SCHED_OTHER" 1071 depends on CGROUP_SCHED 1072 select GROUP_SCHED_WEIGHT 1073 default CGROUP_SCHED 1074 1075config CFS_BANDWIDTH 1076 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 1077 depends on FAIR_GROUP_SCHED 1078 default n 1079 help 1080 This option allows users to define CPU bandwidth rates (limits) for 1081 tasks running within the fair group scheduler. Groups with no limit 1082 set are considered to be unconstrained and will run with no 1083 restriction. 1084 See Documentation/scheduler/sched-bwc.rst for more information. 1085 1086config RT_GROUP_SCHED 1087 bool "Group scheduling for SCHED_RR/FIFO" 1088 depends on CGROUP_SCHED 1089 default n 1090 help 1091 This feature lets you explicitly allocate real CPU bandwidth 1092 to task groups. If enabled, it will also make it impossible to 1093 schedule realtime tasks for non-root users until you allocate 1094 realtime bandwidth for them. 1095 See Documentation/scheduler/sched-rt-group.rst for more information. 1096 1097config RT_GROUP_SCHED_DEFAULT_DISABLED 1098 bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO" 1099 depends on RT_GROUP_SCHED 1100 default n 1101 help 1102 When set, the RT group scheduling is disabled by default. The option 1103 is in inverted form so that mere RT_GROUP_SCHED enables the group 1104 scheduling. 1105 1106 Say N if unsure. 1107 1108config EXT_GROUP_SCHED 1109 bool 1110 depends on SCHED_CLASS_EXT && CGROUP_SCHED 1111 select GROUP_SCHED_WEIGHT 1112 default y 1113 1114endif #CGROUP_SCHED 1115 1116config SCHED_MM_CID 1117 def_bool y 1118 depends on SMP && RSEQ 1119 1120config UCLAMP_TASK_GROUP 1121 bool "Utilization clamping per group of tasks" 1122 depends on CGROUP_SCHED 1123 depends on UCLAMP_TASK 1124 default n 1125 help 1126 This feature enables the scheduler to track the clamped utilization 1127 of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 1128 1129 When this option is enabled, the user can specify a min and max 1130 CPU bandwidth which is allowed for each single task in a group. 1131 The max bandwidth allows to clamp the maximum frequency a task 1132 can use, while the min bandwidth allows to define a minimum 1133 frequency a task will always use. 1134 1135 When task group based utilization clamping is enabled, an eventually 1136 specified task-specific clamp value is constrained by the cgroup 1137 specified clamp value. Both minimum and maximum task clamping cannot 1138 be bigger than the corresponding clamping defined at task group level. 1139 1140 If in doubt, say N. 1141 1142config CGROUP_PIDS 1143 bool "PIDs controller" 1144 help 1145 Provides enforcement of process number limits in the scope of a 1146 cgroup. Any attempt to fork more processes than is allowed in the 1147 cgroup will fail. PIDs are fundamentally a global resource because it 1148 is fairly trivial to reach PID exhaustion before you reach even a 1149 conservative kmemcg limit. As a result, it is possible to grind a 1150 system to halt without being limited by other cgroup policies. The 1151 PIDs controller is designed to stop this from happening. 1152 1153 It should be noted that organisational operations (such as attaching 1154 to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 1155 since the PIDs limit only affects a process's ability to fork, not to 1156 attach to a cgroup. 1157 1158config CGROUP_RDMA 1159 bool "RDMA controller" 1160 help 1161 Provides enforcement of RDMA resources defined by IB stack. 1162 It is fairly easy for consumers to exhaust RDMA resources, which 1163 can result into resource unavailability to other consumers. 1164 RDMA controller is designed to stop this from happening. 1165 Attaching processes with active RDMA resources to the cgroup 1166 hierarchy is allowed even if can cross the hierarchy's limit. 1167 1168config CGROUP_DMEM 1169 bool "Device memory controller (DMEM)" 1170 select PAGE_COUNTER 1171 help 1172 The DMEM controller allows compatible devices to restrict device 1173 memory usage based on the cgroup hierarchy. 1174 1175 As an example, it allows you to restrict VRAM usage for applications 1176 in the DRM subsystem. 1177 1178config CGROUP_FREEZER 1179 bool "Freezer controller" 1180 help 1181 Provides a way to freeze and unfreeze all tasks in a 1182 cgroup. 1183 1184 This option affects the ORIGINAL cgroup interface. The cgroup2 memory 1185 controller includes important in-kernel memory consumers per default. 1186 1187 If you're using cgroup2, say N. 1188 1189config CGROUP_HUGETLB 1190 bool "HugeTLB controller" 1191 depends on HUGETLB_PAGE 1192 select PAGE_COUNTER 1193 default n 1194 help 1195 Provides a cgroup controller for HugeTLB pages. 1196 When you enable this, you can put a per cgroup limit on HugeTLB usage. 1197 The limit is enforced during page fault. Since HugeTLB doesn't 1198 support page reclaim, enforcing the limit at page fault time implies 1199 that, the application will get SIGBUS signal if it tries to access 1200 HugeTLB pages beyond its limit. This requires the application to know 1201 beforehand how much HugeTLB pages it would require for its use. The 1202 control group is tracked in the third page lru pointer. This means 1203 that we cannot use the controller with huge page less than 3 pages. 1204 1205config CPUSETS 1206 bool "Cpuset controller" 1207 depends on SMP 1208 select UNION_FIND 1209 help 1210 This option will let you create and manage CPUSETs which 1211 allow dynamically partitioning a system into sets of CPUs and 1212 Memory Nodes and assigning tasks to run only within those sets. 1213 This is primarily useful on large SMP or NUMA systems. 1214 1215 Say N if unsure. 1216 1217config CPUSETS_V1 1218 bool "Legacy cgroup v1 cpusets controller" 1219 depends on CPUSETS 1220 default n 1221 help 1222 Legacy cgroup v1 cpusets controller which has been deprecated by 1223 cgroup v2 implementation. The v1 is there for legacy applications 1224 which haven't migrated to the new cgroup v2 interface yet. Legacy 1225 interface includes cpuset filesystem and /proc/<pid>/cpuset. If you 1226 do not have any such application then you are completely fine leaving 1227 this option disabled. 1228 1229 Say N if unsure. 1230 1231config PROC_PID_CPUSET 1232 bool "Include legacy /proc/<pid>/cpuset file" 1233 depends on CPUSETS_V1 1234 default y 1235 1236config CGROUP_DEVICE 1237 bool "Device controller" 1238 help 1239 Provides a cgroup controller implementing whitelists for 1240 devices which a process in the cgroup can mknod or open. 1241 1242config CGROUP_CPUACCT 1243 bool "Simple CPU accounting controller" 1244 help 1245 Provides a simple controller for monitoring the 1246 total CPU consumed by the tasks in a cgroup. 1247 1248config CGROUP_PERF 1249 bool "Perf controller" 1250 depends on PERF_EVENTS 1251 help 1252 This option extends the perf per-cpu mode to restrict monitoring 1253 to threads which belong to the cgroup specified and run on the 1254 designated cpu. Or this can be used to have cgroup ID in samples 1255 so that it can monitor performance events among cgroups. 1256 1257 Say N if unsure. 1258 1259config CGROUP_BPF 1260 bool "Support for eBPF programs attached to cgroups" 1261 depends on BPF_SYSCALL 1262 select SOCK_CGROUP_DATA 1263 help 1264 Allow attaching eBPF programs to a cgroup using the bpf(2) 1265 syscall command BPF_PROG_ATTACH. 1266 1267 In which context these programs are accessed depends on the type 1268 of attachment. For instance, programs that are attached using 1269 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 1270 inet sockets. 1271 1272config CGROUP_MISC 1273 bool "Misc resource controller" 1274 default n 1275 help 1276 Provides a controller for miscellaneous resources on a host. 1277 1278 Miscellaneous scalar resources are the resources on the host system 1279 which cannot be abstracted like the other cgroups. This controller 1280 tracks and limits the miscellaneous resources used by a process 1281 attached to a cgroup hierarchy. 1282 1283 For more information, please check misc cgroup section in 1284 /Documentation/admin-guide/cgroup-v2.rst. 1285 1286config CGROUP_DEBUG 1287 bool "Debug controller" 1288 default n 1289 depends on DEBUG_KERNEL 1290 help 1291 This option enables a simple controller that exports 1292 debugging information about the cgroups framework. This 1293 controller is for control cgroup debugging only. Its 1294 interfaces are not stable. 1295 1296 Say N. 1297 1298config SOCK_CGROUP_DATA 1299 bool 1300 default n 1301 1302endif # CGROUPS 1303 1304menuconfig NAMESPACES 1305 bool "Namespaces support" if EXPERT 1306 depends on MULTIUSER 1307 default !EXPERT 1308 help 1309 Provides the way to make tasks work with different objects using 1310 the same id. For example same IPC id may refer to different objects 1311 or same user id or pid may refer to different tasks when used in 1312 different namespaces. 1313 1314if NAMESPACES 1315 1316config UTS_NS 1317 bool "UTS namespace" 1318 default y 1319 help 1320 In this namespace tasks see different info provided with the 1321 uname() system call 1322 1323config TIME_NS 1324 bool "TIME namespace" 1325 depends on GENERIC_VDSO_TIME_NS 1326 default y 1327 help 1328 In this namespace boottime and monotonic clocks can be set. 1329 The time will keep going with the same pace. 1330 1331config IPC_NS 1332 bool "IPC namespace" 1333 depends on (SYSVIPC || POSIX_MQUEUE) 1334 default y 1335 help 1336 In this namespace tasks work with IPC ids which correspond to 1337 different IPC objects in different namespaces. 1338 1339config USER_NS 1340 bool "User namespace" 1341 default n 1342 help 1343 This allows containers, i.e. vservers, to use user namespaces 1344 to provide different user info for different servers. 1345 1346 When user namespaces are enabled in the kernel it is 1347 recommended that the MEMCG option also be enabled and that 1348 user-space use the memory control groups to limit the amount 1349 of memory a memory unprivileged users can use. 1350 1351 If unsure, say N. 1352 1353config PID_NS 1354 bool "PID Namespaces" 1355 default y 1356 help 1357 Support process id namespaces. This allows having multiple 1358 processes with the same pid as long as they are in different 1359 pid namespaces. This is a building block of containers. 1360 1361config NET_NS 1362 bool "Network namespace" 1363 depends on NET 1364 default y 1365 help 1366 Allow user space to create what appear to be multiple instances 1367 of the network stack. 1368 1369endif # NAMESPACES 1370 1371config CHECKPOINT_RESTORE 1372 bool "Checkpoint/restore support" 1373 depends on PROC_FS 1374 select PROC_CHILDREN 1375 select KCMP 1376 default n 1377 help 1378 Enables additional kernel features in a sake of checkpoint/restore. 1379 In particular it adds auxiliary prctl codes to setup process text, 1380 data and heap segment sizes, and a few additional /proc filesystem 1381 entries. 1382 1383 If unsure, say N here. 1384 1385config SCHED_AUTOGROUP 1386 bool "Automatic process group scheduling" 1387 select CGROUPS 1388 select CGROUP_SCHED 1389 select FAIR_GROUP_SCHED 1390 help 1391 This option optimizes the scheduler for common desktop workloads by 1392 automatically creating and populating task groups. This separation 1393 of workloads isolates aggressive CPU burners (like build jobs) from 1394 desktop applications. Task group autogeneration is currently based 1395 upon task session. 1396 1397config RELAY 1398 bool "Kernel->user space relay support (formerly relayfs)" 1399 select IRQ_WORK 1400 help 1401 This option enables support for relay interface support in 1402 certain file systems (such as debugfs). 1403 It is designed to provide an efficient mechanism for tools and 1404 facilities to relay large amounts of data from kernel space to 1405 user space. 1406 1407 If unsure, say N. 1408 1409config BLK_DEV_INITRD 1410 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1411 help 1412 The initial RAM filesystem is a ramfs which is loaded by the 1413 boot loader (loadlin or lilo) and that is mounted as root 1414 before the normal boot procedure. It is typically used to 1415 load modules needed to mount the "real" root file system, 1416 etc. See <file:Documentation/admin-guide/initrd.rst> for details. 1417 1418 If RAM disk support (BLK_DEV_RAM) is also included, this 1419 also enables initial RAM disk (initrd) support and adds 1420 15 Kbytes (more on some other architectures) to the kernel size. 1421 1422 If unsure say Y. 1423 1424if BLK_DEV_INITRD 1425 1426source "usr/Kconfig" 1427 1428endif 1429 1430config BOOT_CONFIG 1431 bool "Boot config support" 1432 select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 1433 help 1434 Extra boot config allows system admin to pass a config file as 1435 complemental extension of kernel cmdline when booting. 1436 The boot config file must be attached at the end of initramfs 1437 with checksum, size and magic word. 1438 See <file:Documentation/admin-guide/bootconfig.rst> for details. 1439 1440 If unsure, say Y. 1441 1442config BOOT_CONFIG_FORCE 1443 bool "Force unconditional bootconfig processing" 1444 depends on BOOT_CONFIG 1445 default y if BOOT_CONFIG_EMBED 1446 help 1447 With this Kconfig option set, BOOT_CONFIG processing is carried 1448 out even when the "bootconfig" kernel-boot parameter is omitted. 1449 In fact, with this Kconfig option set, there is no way to 1450 make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 1451 parameters. 1452 1453 If unsure, say N. 1454 1455config BOOT_CONFIG_EMBED 1456 bool "Embed bootconfig file in the kernel" 1457 depends on BOOT_CONFIG 1458 help 1459 Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 1460 kernel. Usually, the bootconfig file is loaded with the initrd 1461 image. But if the system doesn't support initrd, this option will 1462 help you by embedding a bootconfig file while building the kernel. 1463 1464 If unsure, say N. 1465 1466config BOOT_CONFIG_EMBED_FILE 1467 string "Embedded bootconfig file path" 1468 depends on BOOT_CONFIG_EMBED 1469 help 1470 Specify a bootconfig file which will be embedded to the kernel. 1471 This bootconfig will be used if there is no initrd or no other 1472 bootconfig in the initrd. 1473 1474config INITRAMFS_PRESERVE_MTIME 1475 bool "Preserve cpio archive mtimes in initramfs" 1476 default y 1477 help 1478 Each entry in an initramfs cpio archive carries an mtime value. When 1479 enabled, extracted cpio items take this mtime, with directory mtime 1480 setting deferred until after creation of any child entries. 1481 1482 If unsure, say Y. 1483 1484config INITRAMFS_TEST 1485 bool "Test initramfs cpio archive extraction" if !KUNIT_ALL_TESTS 1486 depends on BLK_DEV_INITRD && KUNIT=y 1487 default KUNIT_ALL_TESTS 1488 help 1489 Build KUnit tests for initramfs. See Documentation/dev-tools/kunit 1490 1491choice 1492 prompt "Compiler optimization level" 1493 default CC_OPTIMIZE_FOR_PERFORMANCE 1494 1495config CC_OPTIMIZE_FOR_PERFORMANCE 1496 bool "Optimize for performance (-O2)" 1497 help 1498 This is the default optimization level for the kernel, building 1499 with the "-O2" compiler flag for best performance and most 1500 helpful compile-time warnings. 1501 1502config CC_OPTIMIZE_FOR_SIZE 1503 bool "Optimize for size (-Os)" 1504 help 1505 Choosing this option will pass "-Os" to your compiler resulting 1506 in a smaller kernel. 1507 1508endchoice 1509 1510config HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1511 bool 1512 help 1513 This requires that the arch annotates or otherwise protects 1514 its external entry points from being discarded. Linker scripts 1515 must also merge .text.*, .data.*, and .bss.* correctly into 1516 output sections. Care must be taken not to pull in unrelated 1517 sections (e.g., '.text.init'). Typically '.' in section names 1518 is used to distinguish them from label names / C identifiers. 1519 1520config LD_DEAD_CODE_DATA_ELIMINATION 1521 bool "Dead code and data elimination (EXPERIMENTAL)" 1522 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1523 depends on EXPERT 1524 depends on $(cc-option,-ffunction-sections -fdata-sections) 1525 depends on $(ld-option,--gc-sections) 1526 help 1527 Enable this if you want to do dead code and data elimination with 1528 the linker by compiling with -ffunction-sections -fdata-sections, 1529 and linking with --gc-sections. 1530 1531 This can reduce on disk and in-memory size of the kernel 1532 code and static data, particularly for small configs and 1533 on small systems. This has the possibility of introducing 1534 silently broken kernel if the required annotations are not 1535 present. This option is not well tested yet, so use at your 1536 own risk. 1537 1538config LD_ORPHAN_WARN 1539 def_bool y 1540 depends on ARCH_WANT_LD_ORPHAN_WARN 1541 depends on $(ld-option,--orphan-handling=warn) 1542 depends on $(ld-option,--orphan-handling=error) 1543 1544config LD_ORPHAN_WARN_LEVEL 1545 string 1546 depends on LD_ORPHAN_WARN 1547 default "error" if WERROR 1548 default "warn" 1549 1550config SYSCTL 1551 bool 1552 1553config HAVE_UID16 1554 bool 1555 1556config SYSCTL_EXCEPTION_TRACE 1557 bool 1558 help 1559 Enable support for /proc/sys/debug/exception-trace. 1560 1561config SYSCTL_ARCH_UNALIGN_NO_WARN 1562 bool 1563 help 1564 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1565 Allows arch to define/use @no_unaligned_warning to possibly warn 1566 about unaligned access emulation going on under the hood. 1567 1568config SYSCTL_ARCH_UNALIGN_ALLOW 1569 bool 1570 help 1571 Enable support for /proc/sys/kernel/unaligned-trap 1572 Allows arches to define/use @unaligned_enabled to runtime toggle 1573 the unaligned access emulation. 1574 see arch/parisc/kernel/unaligned.c for reference 1575 1576config SYSFS_SYSCALL 1577 bool "Sysfs syscall support" 1578 default n 1579 help 1580 sys_sysfs is an obsolete system call no longer supported in libc. 1581 Note that disabling this option is more secure but might break 1582 compatibility with some systems. 1583 1584 If unsure say N here. 1585 1586config HAVE_PCSPKR_PLATFORM 1587 bool 1588 1589menuconfig EXPERT 1590 bool "Configure standard kernel features (expert users)" 1591 # Unhide debug options, to make the on-by-default options visible 1592 select DEBUG_KERNEL 1593 help 1594 This option allows certain base kernel options and settings 1595 to be disabled or tweaked. This is for specialized 1596 environments which can tolerate a "non-standard" kernel. 1597 Only use this if you really know what you are doing. 1598 1599config UID16 1600 bool "Enable 16-bit UID system calls" if EXPERT 1601 depends on HAVE_UID16 && MULTIUSER 1602 default y 1603 help 1604 This enables the legacy 16-bit UID syscall wrappers. 1605 1606config MULTIUSER 1607 bool "Multiple users, groups and capabilities support" if EXPERT 1608 default y 1609 help 1610 This option enables support for non-root users, groups and 1611 capabilities. 1612 1613 If you say N here, all processes will run with UID 0, GID 0, and all 1614 possible capabilities. Saying N here also compiles out support for 1615 system calls related to UIDs, GIDs, and capabilities, such as setuid, 1616 setgid, and capset. 1617 1618 If unsure, say Y here. 1619 1620config SGETMASK_SYSCALL 1621 bool "sgetmask/ssetmask syscalls support" if EXPERT 1622 default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1623 help 1624 sys_sgetmask and sys_ssetmask are obsolete system calls 1625 no longer supported in libc but still enabled by default in some 1626 architectures. 1627 1628 If unsure, leave the default option here. 1629 1630config FHANDLE 1631 bool "open by fhandle syscalls" if EXPERT 1632 select EXPORTFS 1633 default y 1634 help 1635 If you say Y here, a user level program will be able to map 1636 file names to handle and then later use the handle for 1637 different file system operations. This is useful in implementing 1638 userspace file servers, which now track files using handles instead 1639 of names. The handle would remain the same even if file names 1640 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1641 syscalls. 1642 1643config POSIX_TIMERS 1644 bool "Posix Clocks & timers" if EXPERT 1645 default y 1646 help 1647 This includes native support for POSIX timers to the kernel. 1648 Some embedded systems have no use for them and therefore they 1649 can be configured out to reduce the size of the kernel image. 1650 1651 When this option is disabled, the following syscalls won't be 1652 available: timer_create, timer_gettime: timer_getoverrun, 1653 timer_settime, timer_delete, clock_adjtime, getitimer, 1654 setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1655 clock_getres and clock_nanosleep syscalls will be limited to 1656 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1657 1658 If unsure say y. 1659 1660config PRINTK 1661 default y 1662 bool "Enable support for printk" if EXPERT 1663 select IRQ_WORK 1664 help 1665 This option enables normal printk support. Removing it 1666 eliminates most of the message strings from the kernel image 1667 and makes the kernel more or less silent. As this makes it 1668 very difficult to diagnose system problems, saying N here is 1669 strongly discouraged. 1670 1671config BUG 1672 bool "BUG() support" if EXPERT 1673 default y 1674 help 1675 Disabling this option eliminates support for BUG and WARN, reducing 1676 the size of your kernel image and potentially quietly ignoring 1677 numerous fatal conditions. You should only consider disabling this 1678 option for embedded systems with no facilities for reporting errors. 1679 Just say Y. 1680 1681config ELF_CORE 1682 depends on COREDUMP 1683 default y 1684 bool "Enable ELF core dumps" if EXPERT 1685 help 1686 Enable support for generating core dumps. Disabling saves about 4k. 1687 1688 1689config PCSPKR_PLATFORM 1690 bool "Enable PC-Speaker support" if EXPERT 1691 depends on HAVE_PCSPKR_PLATFORM 1692 select I8253_LOCK 1693 default y 1694 help 1695 This option allows to disable the internal PC-Speaker 1696 support, saving some memory. 1697 1698config BASE_SMALL 1699 bool "Enable smaller-sized data structures for core" if EXPERT 1700 help 1701 Enabling this option reduces the size of miscellaneous core 1702 kernel data structures. This saves memory on small machines, 1703 but may reduce performance. 1704 1705config FUTEX 1706 bool "Enable futex support" if EXPERT 1707 depends on !(SPARC32 && SMP) 1708 default y 1709 imply RT_MUTEXES 1710 help 1711 Disabling this option will cause the kernel to be built without 1712 support for "fast userspace mutexes". The resulting kernel may not 1713 run glibc-based applications correctly. 1714 1715config FUTEX_PI 1716 bool 1717 depends on FUTEX && RT_MUTEXES 1718 default y 1719 1720# 1721# marked broken for performance reasons; gives us one more cycle to sort things out. 1722# 1723config FUTEX_PRIVATE_HASH 1724 bool 1725 depends on FUTEX && !BASE_SMALL && MMU 1726 depends on BROKEN 1727 default y 1728 1729config FUTEX_MPOL 1730 bool 1731 depends on FUTEX && NUMA 1732 default y 1733 1734config EPOLL 1735 bool "Enable eventpoll support" if EXPERT 1736 default y 1737 help 1738 Disabling this option will cause the kernel to be built without 1739 support for epoll family of system calls. 1740 1741config SIGNALFD 1742 bool "Enable signalfd() system call" if EXPERT 1743 default y 1744 help 1745 Enable the signalfd() system call that allows to receive signals 1746 on a file descriptor. 1747 1748 If unsure, say Y. 1749 1750config TIMERFD 1751 bool "Enable timerfd() system call" if EXPERT 1752 default y 1753 help 1754 Enable the timerfd() system call that allows to receive timer 1755 events on a file descriptor. 1756 1757 If unsure, say Y. 1758 1759config EVENTFD 1760 bool "Enable eventfd() system call" if EXPERT 1761 default y 1762 help 1763 Enable the eventfd() system call that allows to receive both 1764 kernel notification (ie. KAIO) or userspace notifications. 1765 1766 If unsure, say Y. 1767 1768config SHMEM 1769 bool "Use full shmem filesystem" if EXPERT 1770 default y 1771 depends on MMU 1772 help 1773 The shmem is an internal filesystem used to manage shared memory. 1774 It is backed by swap and manages resource limits. It is also exported 1775 to userspace as tmpfs if TMPFS is enabled. Disabling this 1776 option replaces shmem and tmpfs with the much simpler ramfs code, 1777 which may be appropriate on small systems without swap. 1778 1779config AIO 1780 bool "Enable AIO support" if EXPERT 1781 default y 1782 help 1783 This option enables POSIX asynchronous I/O which may by used 1784 by some high performance threaded applications. Disabling 1785 this option saves about 7k. 1786 1787config IO_URING 1788 bool "Enable IO uring support" if EXPERT 1789 select IO_WQ 1790 default y 1791 help 1792 This option enables support for the io_uring interface, enabling 1793 applications to submit and complete IO through submission and 1794 completion rings that are shared between the kernel and application. 1795 1796config GCOV_PROFILE_URING 1797 bool "Enable GCOV profiling on the io_uring subsystem" 1798 depends on GCOV_KERNEL 1799 help 1800 Enable GCOV profiling on the io_uring subsystem, to facilitate 1801 code coverage testing. 1802 1803 If unsure, say N. 1804 1805 Note that this will have a negative impact on the performance of 1806 the io_uring subsystem, hence this should only be enabled for 1807 specific test purposes. 1808 1809config ADVISE_SYSCALLS 1810 bool "Enable madvise/fadvise syscalls" if EXPERT 1811 default y 1812 help 1813 This option enables the madvise and fadvise syscalls, used by 1814 applications to advise the kernel about their future memory or file 1815 usage, improving performance. If building an embedded system where no 1816 applications use these syscalls, you can disable this option to save 1817 space. 1818 1819config MEMBARRIER 1820 bool "Enable membarrier() system call" if EXPERT 1821 default y 1822 help 1823 Enable the membarrier() system call that allows issuing memory 1824 barriers across all running threads, which can be used to distribute 1825 the cost of user-space memory barriers asymmetrically by transforming 1826 pairs of memory barriers into pairs consisting of membarrier() and a 1827 compiler barrier. 1828 1829 If unsure, say Y. 1830 1831config KCMP 1832 bool "Enable kcmp() system call" if EXPERT 1833 help 1834 Enable the kernel resource comparison system call. It provides 1835 user-space with the ability to compare two processes to see if they 1836 share a common resource, such as a file descriptor or even virtual 1837 memory space. 1838 1839 If unsure, say N. 1840 1841config RSEQ 1842 bool "Enable rseq() system call" if EXPERT 1843 default y 1844 depends on HAVE_RSEQ 1845 select MEMBARRIER 1846 help 1847 Enable the restartable sequences system call. It provides a 1848 user-space cache for the current CPU number value, which 1849 speeds up getting the current CPU number from user-space, 1850 as well as an ABI to speed up user-space operations on 1851 per-CPU data. 1852 1853 If unsure, say Y. 1854 1855config DEBUG_RSEQ 1856 default n 1857 bool "Enable debugging of rseq() system call" if EXPERT 1858 depends on RSEQ && DEBUG_KERNEL 1859 help 1860 Enable extra debugging checks for the rseq system call. 1861 1862 If unsure, say N. 1863 1864config CACHESTAT_SYSCALL 1865 bool "Enable cachestat() system call" if EXPERT 1866 default y 1867 help 1868 Enable the cachestat system call, which queries the page cache 1869 statistics of a file (number of cached pages, dirty pages, 1870 pages marked for writeback, (recently) evicted pages). 1871 1872 If unsure say Y here. 1873 1874config PC104 1875 bool "PC/104 support" if EXPERT 1876 help 1877 Expose PC/104 form factor device drivers and options available for 1878 selection and configuration. Enable this option if your target 1879 machine has a PC/104 bus. 1880 1881config KALLSYMS 1882 bool "Load all symbols for debugging/ksymoops" if EXPERT 1883 default y 1884 help 1885 Say Y here to let the kernel print out symbolic crash information and 1886 symbolic stack backtraces. This increases the size of the kernel 1887 somewhat, as all symbols have to be loaded into the kernel image. 1888 1889config KALLSYMS_SELFTEST 1890 bool "Test the basic functions and performance of kallsyms" 1891 depends on KALLSYMS 1892 default n 1893 help 1894 Test the basic functions and performance of some interfaces, such as 1895 kallsyms_lookup_name. It also calculates the compression rate of the 1896 kallsyms compression algorithm for the current symbol set. 1897 1898 Start self-test automatically after system startup. Suggest executing 1899 "dmesg | grep kallsyms_selftest" to collect test results. "finish" is 1900 displayed in the last line, indicating that the test is complete. 1901 1902config KALLSYMS_ALL 1903 bool "Include all symbols in kallsyms" 1904 depends on DEBUG_KERNEL && KALLSYMS 1905 help 1906 Normally kallsyms only contains the symbols of functions for nicer 1907 OOPS messages and backtraces (i.e., symbols from the text and inittext 1908 sections). This is sufficient for most cases. And only if you want to 1909 enable kernel live patching, or other less common use cases (e.g., 1910 when a debugger is used) all symbols are required (i.e., names of 1911 variables from the data sections, etc). 1912 1913 This option makes sure that all symbols are loaded into the kernel 1914 image (i.e., symbols from all sections) in cost of increased kernel 1915 size (depending on the kernel configuration, it may be 300KiB or 1916 something like this). 1917 1918 Say N unless you really need all symbols, or kernel live patching. 1919 1920# end of the "standard kernel features (expert users)" menu 1921 1922config ARCH_HAS_MEMBARRIER_CALLBACKS 1923 bool 1924 1925config ARCH_HAS_MEMBARRIER_SYNC_CORE 1926 bool 1927 1928config ARCH_SUPPORTS_MSEAL_SYSTEM_MAPPINGS 1929 bool 1930 help 1931 Control MSEAL_SYSTEM_MAPPINGS access based on architecture. 1932 1933 A 64-bit kernel is required for the memory sealing feature. 1934 No specific hardware features from the CPU are needed. 1935 1936 To enable this feature, the architecture needs to update their 1937 special mappings calls to include the sealing flag and confirm 1938 that it doesn't unmap/remap system mappings during the life 1939 time of the process. The existence of this flag for an architecture 1940 implies that it does not require the remapping of the system 1941 mappings during process lifetime, so sealing these mappings is safe 1942 from a kernel perspective. 1943 1944 After the architecture enables this, a distribution can set 1945 CONFIG_MSEAL_SYSTEM_MAPPING to manage access to the feature. 1946 1947 For complete descriptions of memory sealing, please see 1948 Documentation/userspace-api/mseal.rst 1949 1950config HAVE_PERF_EVENTS 1951 bool 1952 help 1953 See tools/perf/design.txt for details. 1954 1955config GUEST_PERF_EVENTS 1956 bool 1957 depends on HAVE_PERF_EVENTS 1958 1959config PERF_USE_VMALLOC 1960 bool 1961 help 1962 See tools/perf/design.txt for details 1963 1964menu "Kernel Performance Events And Counters" 1965 1966config PERF_EVENTS 1967 bool "Kernel performance events and counters" 1968 default y if PROFILING 1969 depends on HAVE_PERF_EVENTS 1970 select IRQ_WORK 1971 help 1972 Enable kernel support for various performance events provided 1973 by software and hardware. 1974 1975 Software events are supported either built-in or via the 1976 use of generic tracepoints. 1977 1978 Most modern CPUs support performance events via performance 1979 counter registers. These registers count the number of certain 1980 types of hw events: such as instructions executed, cachemisses 1981 suffered, or branches mis-predicted - without slowing down the 1982 kernel or applications. These registers can also trigger interrupts 1983 when a threshold number of events have passed - and can thus be 1984 used to profile the code that runs on that CPU. 1985 1986 The Linux Performance Event subsystem provides an abstraction of 1987 these software and hardware event capabilities, available via a 1988 system call and used by the "perf" utility in tools/perf/. It 1989 provides per task and per CPU counters, and it provides event 1990 capabilities on top of those. 1991 1992 Say Y if unsure. 1993 1994config DEBUG_PERF_USE_VMALLOC 1995 default n 1996 bool "Debug: use vmalloc to back perf mmap() buffers" 1997 depends on PERF_EVENTS && DEBUG_KERNEL && !PPC 1998 select PERF_USE_VMALLOC 1999 help 2000 Use vmalloc memory to back perf mmap() buffers. 2001 2002 Mostly useful for debugging the vmalloc code on platforms 2003 that don't require it. 2004 2005 Say N if unsure. 2006 2007endmenu 2008 2009config SYSTEM_DATA_VERIFICATION 2010 def_bool n 2011 select SYSTEM_TRUSTED_KEYRING 2012 select KEYS 2013 select CRYPTO 2014 select CRYPTO_RSA 2015 select ASYMMETRIC_KEY_TYPE 2016 select ASYMMETRIC_PUBLIC_KEY_SUBTYPE 2017 select ASN1 2018 select OID_REGISTRY 2019 select X509_CERTIFICATE_PARSER 2020 select PKCS7_MESSAGE_PARSER 2021 help 2022 Provide PKCS#7 message verification using the contents of the system 2023 trusted keyring to provide public keys. This then can be used for 2024 module verification, kexec image verification and firmware blob 2025 verification. 2026 2027config PROFILING 2028 bool "Profiling support" 2029 help 2030 Say Y here to enable the extended profiling support mechanisms used 2031 by profilers. 2032 2033config RUST 2034 bool "Rust support" 2035 depends on HAVE_RUST 2036 depends on RUST_IS_AVAILABLE 2037 select EXTENDED_MODVERSIONS if MODVERSIONS 2038 depends on !MODVERSIONS || GENDWARFKSYMS 2039 depends on !GCC_PLUGIN_RANDSTRUCT 2040 depends on !RANDSTRUCT 2041 depends on !DEBUG_INFO_BTF || (PAHOLE_HAS_LANG_EXCLUDE && !LTO) 2042 depends on !CFI_CLANG || HAVE_CFI_ICALL_NORMALIZE_INTEGERS_RUSTC 2043 select CFI_ICALL_NORMALIZE_INTEGERS if CFI_CLANG 2044 depends on !CALL_PADDING || RUSTC_VERSION >= 108100 2045 depends on !KASAN_SW_TAGS 2046 depends on !(MITIGATION_RETHUNK && KASAN) || RUSTC_VERSION >= 108300 2047 help 2048 Enables Rust support in the kernel. 2049 2050 This allows other Rust-related options, like drivers written in Rust, 2051 to be selected. 2052 2053 It is also required to be able to load external kernel modules 2054 written in Rust. 2055 2056 See Documentation/rust/ for more information. 2057 2058 If unsure, say N. 2059 2060config RUSTC_VERSION_TEXT 2061 string 2062 depends on RUST 2063 default "$(RUSTC_VERSION_TEXT)" 2064 help 2065 See `CC_VERSION_TEXT`. 2066 2067config BINDGEN_VERSION_TEXT 2068 string 2069 depends on RUST 2070 # The dummy parameter `workaround-for-0.69.0` is required to support 0.69.0 2071 # (https://github.com/rust-lang/rust-bindgen/pull/2678) and 0.71.0 2072 # (https://github.com/rust-lang/rust-bindgen/pull/3040). It can be removed 2073 # when the minimum version is upgraded past the latter (0.69.1 and 0.71.1 2074 # both fixed the issue). 2075 default "$(shell,$(BINDGEN) --version workaround-for-0.69.0 2>/dev/null)" 2076 2077# 2078# Place an empty function call at each tracepoint site. Can be 2079# dynamically changed for a probe function. 2080# 2081config TRACEPOINTS 2082 bool 2083 select TASKS_TRACE_RCU 2084 2085source "kernel/Kconfig.kexec" 2086 2087endmenu # General setup 2088 2089source "arch/Kconfig" 2090 2091config RT_MUTEXES 2092 bool 2093 default y if PREEMPT_RT 2094 2095config MODULE_SIG_FORMAT 2096 def_bool n 2097 select SYSTEM_DATA_VERIFICATION 2098 2099source "kernel/module/Kconfig" 2100 2101config INIT_ALL_POSSIBLE 2102 bool 2103 help 2104 Back when each arch used to define their own cpu_online_mask and 2105 cpu_possible_mask, some of them chose to initialize cpu_possible_mask 2106 with all 1s, and others with all 0s. When they were centralised, 2107 it was better to provide this option than to break all the archs 2108 and have several arch maintainers pursuing me down dark alleys. 2109 2110source "block/Kconfig" 2111 2112config PREEMPT_NOTIFIERS 2113 bool 2114 2115config PADATA 2116 depends on SMP 2117 bool 2118 2119config ASN1 2120 tristate 2121 help 2122 Build a simple ASN.1 grammar compiler that produces a bytecode output 2123 that can be interpreted by the ASN.1 stream decoder and used to 2124 inform it as to what tags are to be expected in a stream and what 2125 functions to call on what tags. 2126 2127source "kernel/Kconfig.locks" 2128 2129config ARCH_HAS_NON_OVERLAPPING_ADDRESS_SPACE 2130 bool 2131 2132config ARCH_HAS_PREPARE_SYNC_CORE_CMD 2133 bool 2134 2135config ARCH_HAS_SYNC_CORE_BEFORE_USERMODE 2136 bool 2137 2138# It may be useful for an architecture to override the definitions of the 2139# SYSCALL_DEFINE() and __SYSCALL_DEFINEx() macros in <linux/syscalls.h> 2140# and the COMPAT_ variants in <linux/compat.h>, in particular to use a 2141# different calling convention for syscalls. They can also override the 2142# macros for not-implemented syscalls in kernel/sys_ni.c and 2143# kernel/time/posix-stubs.c. All these overrides need to be available in 2144# <asm/syscall_wrapper.h>. 2145config ARCH_HAS_SYSCALL_WRAPPER 2146 def_bool n 2147