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 help 996 Provides control over the memory footprint of tasks in a cgroup. 997 998config MEMCG_NMI_UNSAFE 999 bool 1000 depends on MEMCG 1001 depends on HAVE_NMI 1002 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && !ARCH_HAVE_NMI_SAFE_CMPXCHG 1003 default y 1004 1005config MEMCG_NMI_SAFETY_REQUIRES_ATOMIC 1006 bool 1007 depends on MEMCG 1008 depends on HAVE_NMI 1009 depends on !ARCH_HAS_NMI_SAFE_THIS_CPU_OPS && ARCH_HAVE_NMI_SAFE_CMPXCHG 1010 default y 1011 1012config MEMCG_V1 1013 bool "Legacy cgroup v1 memory controller" 1014 depends on MEMCG 1015 default n 1016 help 1017 Legacy cgroup v1 memory controller which has been deprecated by 1018 cgroup v2 implementation. The v1 is there for legacy applications 1019 which haven't migrated to the new cgroup v2 interface yet. If you 1020 do not have any such application then you are completely fine leaving 1021 this option disabled. 1022 1023 Please note that feature set of the legacy memory controller is likely 1024 going to shrink due to deprecation process. New deployments with v1 1025 controller are highly discouraged. 1026 1027 Say N if unsure. 1028 1029config BLK_CGROUP 1030 bool "IO controller" 1031 depends on BLOCK 1032 default n 1033 help 1034 Generic block IO controller cgroup interface. This is the common 1035 cgroup interface which should be used by various IO controlling 1036 policies. 1037 1038 Currently, CFQ IO scheduler uses it to recognize task groups and 1039 control disk bandwidth allocation (proportional time slice allocation) 1040 to such task groups. It is also used by bio throttling logic in 1041 block layer to implement upper limit in IO rates on a device. 1042 1043 This option only enables generic Block IO controller infrastructure. 1044 One needs to also enable actual IO controlling logic/policy. For 1045 enabling proportional weight division of disk bandwidth in CFQ, set 1046 CONFIG_BFQ_GROUP_IOSCHED=y; for enabling throttling policy, set 1047 CONFIG_BLK_DEV_THROTTLING=y. 1048 1049 See Documentation/admin-guide/cgroup-v1/blkio-controller.rst for more information. 1050 1051config CGROUP_WRITEBACK 1052 bool 1053 depends on MEMCG && BLK_CGROUP 1054 default y 1055 1056menuconfig CGROUP_SCHED 1057 bool "CPU controller" 1058 default n 1059 help 1060 This feature lets CPU scheduler recognize task groups and control CPU 1061 bandwidth allocation to such task groups. It uses cgroups to group 1062 tasks. 1063 1064if CGROUP_SCHED 1065config GROUP_SCHED_WEIGHT 1066 def_bool n 1067 1068config GROUP_SCHED_BANDWIDTH 1069 def_bool n 1070 1071config FAIR_GROUP_SCHED 1072 bool "Group scheduling for SCHED_OTHER" 1073 depends on CGROUP_SCHED 1074 select GROUP_SCHED_WEIGHT 1075 default CGROUP_SCHED 1076 1077config CFS_BANDWIDTH 1078 bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED" 1079 depends on FAIR_GROUP_SCHED 1080 select GROUP_SCHED_BANDWIDTH 1081 default n 1082 help 1083 This option allows users to define CPU bandwidth rates (limits) for 1084 tasks running within the fair group scheduler. Groups with no limit 1085 set are considered to be unconstrained and will run with no 1086 restriction. 1087 See Documentation/scheduler/sched-bwc.rst for more information. 1088 1089config RT_GROUP_SCHED 1090 bool "Group scheduling for SCHED_RR/FIFO" 1091 depends on CGROUP_SCHED 1092 default n 1093 help 1094 This feature lets you explicitly allocate real CPU bandwidth 1095 to task groups. If enabled, it will also make it impossible to 1096 schedule realtime tasks for non-root users until you allocate 1097 realtime bandwidth for them. 1098 See Documentation/scheduler/sched-rt-group.rst for more information. 1099 1100config RT_GROUP_SCHED_DEFAULT_DISABLED 1101 bool "Require boot parameter to enable group scheduling for SCHED_RR/FIFO" 1102 depends on RT_GROUP_SCHED 1103 default n 1104 help 1105 When set, the RT group scheduling is disabled by default. The option 1106 is in inverted form so that mere RT_GROUP_SCHED enables the group 1107 scheduling. 1108 1109 Say N if unsure. 1110 1111config EXT_GROUP_SCHED 1112 bool 1113 depends on SCHED_CLASS_EXT && CGROUP_SCHED 1114 select GROUP_SCHED_WEIGHT 1115 select GROUP_SCHED_BANDWIDTH 1116 default y 1117 1118endif #CGROUP_SCHED 1119 1120config SCHED_MM_CID 1121 def_bool y 1122 depends on SMP && RSEQ 1123 1124config UCLAMP_TASK_GROUP 1125 bool "Utilization clamping per group of tasks" 1126 depends on CGROUP_SCHED 1127 depends on UCLAMP_TASK 1128 default n 1129 help 1130 This feature enables the scheduler to track the clamped utilization 1131 of each CPU based on RUNNABLE tasks currently scheduled on that CPU. 1132 1133 When this option is enabled, the user can specify a min and max 1134 CPU bandwidth which is allowed for each single task in a group. 1135 The max bandwidth allows to clamp the maximum frequency a task 1136 can use, while the min bandwidth allows to define a minimum 1137 frequency a task will always use. 1138 1139 When task group based utilization clamping is enabled, an eventually 1140 specified task-specific clamp value is constrained by the cgroup 1141 specified clamp value. Both minimum and maximum task clamping cannot 1142 be bigger than the corresponding clamping defined at task group level. 1143 1144 If in doubt, say N. 1145 1146config CGROUP_PIDS 1147 bool "PIDs controller" 1148 help 1149 Provides enforcement of process number limits in the scope of a 1150 cgroup. Any attempt to fork more processes than is allowed in the 1151 cgroup will fail. PIDs are fundamentally a global resource because it 1152 is fairly trivial to reach PID exhaustion before you reach even a 1153 conservative kmemcg limit. As a result, it is possible to grind a 1154 system to halt without being limited by other cgroup policies. The 1155 PIDs controller is designed to stop this from happening. 1156 1157 It should be noted that organisational operations (such as attaching 1158 to a cgroup hierarchy) will *not* be blocked by the PIDs controller, 1159 since the PIDs limit only affects a process's ability to fork, not to 1160 attach to a cgroup. 1161 1162config CGROUP_RDMA 1163 bool "RDMA controller" 1164 help 1165 Provides enforcement of RDMA resources defined by IB stack. 1166 It is fairly easy for consumers to exhaust RDMA resources, which 1167 can result into resource unavailability to other consumers. 1168 RDMA controller is designed to stop this from happening. 1169 Attaching processes with active RDMA resources to the cgroup 1170 hierarchy is allowed even if can cross the hierarchy's limit. 1171 1172config CGROUP_DMEM 1173 bool "Device memory controller (DMEM)" 1174 select PAGE_COUNTER 1175 help 1176 The DMEM controller allows compatible devices to restrict device 1177 memory usage based on the cgroup hierarchy. 1178 1179 As an example, it allows you to restrict VRAM usage for applications 1180 in the DRM subsystem. 1181 1182config CGROUP_FREEZER 1183 bool "Freezer controller" 1184 help 1185 Provides a way to freeze and unfreeze all tasks in a 1186 cgroup. 1187 1188 This option affects the ORIGINAL cgroup interface. The cgroup2 memory 1189 controller includes important in-kernel memory consumers per default. 1190 1191 If you're using cgroup2, say N. 1192 1193config CGROUP_HUGETLB 1194 bool "HugeTLB controller" 1195 depends on HUGETLB_PAGE 1196 select PAGE_COUNTER 1197 default n 1198 help 1199 Provides a cgroup controller for HugeTLB pages. 1200 When you enable this, you can put a per cgroup limit on HugeTLB usage. 1201 The limit is enforced during page fault. Since HugeTLB doesn't 1202 support page reclaim, enforcing the limit at page fault time implies 1203 that, the application will get SIGBUS signal if it tries to access 1204 HugeTLB pages beyond its limit. This requires the application to know 1205 beforehand how much HugeTLB pages it would require for its use. The 1206 control group is tracked in the third page lru pointer. This means 1207 that we cannot use the controller with huge page less than 3 pages. 1208 1209config CPUSETS 1210 bool "Cpuset controller" 1211 depends on SMP 1212 select UNION_FIND 1213 help 1214 This option will let you create and manage CPUSETs which 1215 allow dynamically partitioning a system into sets of CPUs and 1216 Memory Nodes and assigning tasks to run only within those sets. 1217 This is primarily useful on large SMP or NUMA systems. 1218 1219 Say N if unsure. 1220 1221config CPUSETS_V1 1222 bool "Legacy cgroup v1 cpusets controller" 1223 depends on CPUSETS 1224 default n 1225 help 1226 Legacy cgroup v1 cpusets controller which has been deprecated by 1227 cgroup v2 implementation. The v1 is there for legacy applications 1228 which haven't migrated to the new cgroup v2 interface yet. Legacy 1229 interface includes cpuset filesystem and /proc/<pid>/cpuset. If you 1230 do not have any such application then you are completely fine leaving 1231 this option disabled. 1232 1233 Say N if unsure. 1234 1235config PROC_PID_CPUSET 1236 bool "Include legacy /proc/<pid>/cpuset file" 1237 depends on CPUSETS_V1 1238 default y 1239 1240config CGROUP_DEVICE 1241 bool "Device controller" 1242 help 1243 Provides a cgroup controller implementing whitelists for 1244 devices which a process in the cgroup can mknod or open. 1245 1246config CGROUP_CPUACCT 1247 bool "Simple CPU accounting controller" 1248 help 1249 Provides a simple controller for monitoring the 1250 total CPU consumed by the tasks in a cgroup. 1251 1252config CGROUP_PERF 1253 bool "Perf controller" 1254 depends on PERF_EVENTS 1255 help 1256 This option extends the perf per-cpu mode to restrict monitoring 1257 to threads which belong to the cgroup specified and run on the 1258 designated cpu. Or this can be used to have cgroup ID in samples 1259 so that it can monitor performance events among cgroups. 1260 1261 Say N if unsure. 1262 1263config CGROUP_BPF 1264 bool "Support for eBPF programs attached to cgroups" 1265 depends on BPF_SYSCALL 1266 select SOCK_CGROUP_DATA 1267 help 1268 Allow attaching eBPF programs to a cgroup using the bpf(2) 1269 syscall command BPF_PROG_ATTACH. 1270 1271 In which context these programs are accessed depends on the type 1272 of attachment. For instance, programs that are attached using 1273 BPF_CGROUP_INET_INGRESS will be executed on the ingress path of 1274 inet sockets. 1275 1276config CGROUP_MISC 1277 bool "Misc resource controller" 1278 default n 1279 help 1280 Provides a controller for miscellaneous resources on a host. 1281 1282 Miscellaneous scalar resources are the resources on the host system 1283 which cannot be abstracted like the other cgroups. This controller 1284 tracks and limits the miscellaneous resources used by a process 1285 attached to a cgroup hierarchy. 1286 1287 For more information, please check misc cgroup section in 1288 /Documentation/admin-guide/cgroup-v2.rst. 1289 1290config CGROUP_DEBUG 1291 bool "Debug controller" 1292 default n 1293 depends on DEBUG_KERNEL 1294 help 1295 This option enables a simple controller that exports 1296 debugging information about the cgroups framework. This 1297 controller is for control cgroup debugging only. Its 1298 interfaces are not stable. 1299 1300 Say N. 1301 1302config SOCK_CGROUP_DATA 1303 bool 1304 default n 1305 1306endif # CGROUPS 1307 1308menuconfig NAMESPACES 1309 bool "Namespaces support" if EXPERT 1310 depends on MULTIUSER 1311 default !EXPERT 1312 help 1313 Provides the way to make tasks work with different objects using 1314 the same id. For example same IPC id may refer to different objects 1315 or same user id or pid may refer to different tasks when used in 1316 different namespaces. 1317 1318if NAMESPACES 1319 1320config UTS_NS 1321 bool "UTS namespace" 1322 default y 1323 help 1324 In this namespace tasks see different info provided with the 1325 uname() system call 1326 1327config TIME_NS 1328 bool "TIME namespace" 1329 depends on GENERIC_VDSO_TIME_NS 1330 default y 1331 help 1332 In this namespace boottime and monotonic clocks can be set. 1333 The time will keep going with the same pace. 1334 1335config IPC_NS 1336 bool "IPC namespace" 1337 depends on (SYSVIPC || POSIX_MQUEUE) 1338 default y 1339 help 1340 In this namespace tasks work with IPC ids which correspond to 1341 different IPC objects in different namespaces. 1342 1343config USER_NS 1344 bool "User namespace" 1345 default n 1346 help 1347 This allows containers, i.e. vservers, to use user namespaces 1348 to provide different user info for different servers. 1349 1350 When user namespaces are enabled in the kernel it is 1351 recommended that the MEMCG option also be enabled and that 1352 user-space use the memory control groups to limit the amount 1353 of memory a memory unprivileged users can use. 1354 1355 If unsure, say N. 1356 1357config PID_NS 1358 bool "PID Namespaces" 1359 default y 1360 help 1361 Support process id namespaces. This allows having multiple 1362 processes with the same pid as long as they are in different 1363 pid namespaces. This is a building block of containers. 1364 1365config NET_NS 1366 bool "Network namespace" 1367 depends on NET 1368 default y 1369 help 1370 Allow user space to create what appear to be multiple instances 1371 of the network stack. 1372 1373endif # NAMESPACES 1374 1375config CHECKPOINT_RESTORE 1376 bool "Checkpoint/restore support" 1377 depends on PROC_FS 1378 select PROC_CHILDREN 1379 select KCMP 1380 default n 1381 help 1382 Enables additional kernel features in a sake of checkpoint/restore. 1383 In particular it adds auxiliary prctl codes to setup process text, 1384 data and heap segment sizes, and a few additional /proc filesystem 1385 entries. 1386 1387 If unsure, say N here. 1388 1389config SCHED_AUTOGROUP 1390 bool "Automatic process group scheduling" 1391 select CGROUPS 1392 select CGROUP_SCHED 1393 select FAIR_GROUP_SCHED 1394 help 1395 This option optimizes the scheduler for common desktop workloads by 1396 automatically creating and populating task groups. This separation 1397 of workloads isolates aggressive CPU burners (like build jobs) from 1398 desktop applications. Task group autogeneration is currently based 1399 upon task session. 1400 1401config RELAY 1402 bool "Kernel->user space relay support (formerly relayfs)" 1403 select IRQ_WORK 1404 help 1405 This option enables support for relay interface support in 1406 certain file systems (such as debugfs). 1407 It is designed to provide an efficient mechanism for tools and 1408 facilities to relay large amounts of data from kernel space to 1409 user space. 1410 1411 If unsure, say N. 1412 1413config BLK_DEV_INITRD 1414 bool "Initial RAM filesystem and RAM disk (initramfs/initrd) support" 1415 help 1416 The initial RAM filesystem is a ramfs which is loaded by the 1417 boot loader (loadlin or lilo) and that is mounted as root 1418 before the normal boot procedure. It is typically used to 1419 load modules needed to mount the "real" root file system, 1420 etc. See <file:Documentation/admin-guide/initrd.rst> for details. 1421 1422 If RAM disk support (BLK_DEV_RAM) is also included, this 1423 also enables initial RAM disk (initrd) support and adds 1424 15 Kbytes (more on some other architectures) to the kernel size. 1425 1426 If unsure say Y. 1427 1428if BLK_DEV_INITRD 1429 1430source "usr/Kconfig" 1431 1432endif 1433 1434config BOOT_CONFIG 1435 bool "Boot config support" 1436 select BLK_DEV_INITRD if !BOOT_CONFIG_EMBED 1437 help 1438 Extra boot config allows system admin to pass a config file as 1439 complemental extension of kernel cmdline when booting. 1440 The boot config file must be attached at the end of initramfs 1441 with checksum, size and magic word. 1442 See <file:Documentation/admin-guide/bootconfig.rst> for details. 1443 1444 If unsure, say Y. 1445 1446config BOOT_CONFIG_FORCE 1447 bool "Force unconditional bootconfig processing" 1448 depends on BOOT_CONFIG 1449 default y if BOOT_CONFIG_EMBED 1450 help 1451 With this Kconfig option set, BOOT_CONFIG processing is carried 1452 out even when the "bootconfig" kernel-boot parameter is omitted. 1453 In fact, with this Kconfig option set, there is no way to 1454 make the kernel ignore the BOOT_CONFIG-supplied kernel-boot 1455 parameters. 1456 1457 If unsure, say N. 1458 1459config BOOT_CONFIG_EMBED 1460 bool "Embed bootconfig file in the kernel" 1461 depends on BOOT_CONFIG 1462 help 1463 Embed a bootconfig file given by BOOT_CONFIG_EMBED_FILE in the 1464 kernel. Usually, the bootconfig file is loaded with the initrd 1465 image. But if the system doesn't support initrd, this option will 1466 help you by embedding a bootconfig file while building the kernel. 1467 1468 If unsure, say N. 1469 1470config BOOT_CONFIG_EMBED_FILE 1471 string "Embedded bootconfig file path" 1472 depends on BOOT_CONFIG_EMBED 1473 help 1474 Specify a bootconfig file which will be embedded to the kernel. 1475 This bootconfig will be used if there is no initrd or no other 1476 bootconfig in the initrd. 1477 1478config INITRAMFS_PRESERVE_MTIME 1479 bool "Preserve cpio archive mtimes in initramfs" 1480 default y 1481 help 1482 Each entry in an initramfs cpio archive carries an mtime value. When 1483 enabled, extracted cpio items take this mtime, with directory mtime 1484 setting deferred until after creation of any child entries. 1485 1486 If unsure, say Y. 1487 1488config INITRAMFS_TEST 1489 bool "Test initramfs cpio archive extraction" if !KUNIT_ALL_TESTS 1490 depends on BLK_DEV_INITRD && KUNIT=y 1491 default KUNIT_ALL_TESTS 1492 help 1493 Build KUnit tests for initramfs. See Documentation/dev-tools/kunit 1494 1495choice 1496 prompt "Compiler optimization level" 1497 default CC_OPTIMIZE_FOR_PERFORMANCE 1498 1499config CC_OPTIMIZE_FOR_PERFORMANCE 1500 bool "Optimize for performance (-O2)" 1501 help 1502 This is the default optimization level for the kernel, building 1503 with the "-O2" compiler flag for best performance and most 1504 helpful compile-time warnings. 1505 1506config CC_OPTIMIZE_FOR_SIZE 1507 bool "Optimize for size (-Os)" 1508 help 1509 Choosing this option will pass "-Os" to your compiler resulting 1510 in a smaller kernel. 1511 1512endchoice 1513 1514config HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1515 bool 1516 help 1517 This requires that the arch annotates or otherwise protects 1518 its external entry points from being discarded. Linker scripts 1519 must also merge .text.*, .data.*, and .bss.* correctly into 1520 output sections. Care must be taken not to pull in unrelated 1521 sections (e.g., '.text.init'). Typically '.' in section names 1522 is used to distinguish them from label names / C identifiers. 1523 1524config LD_DEAD_CODE_DATA_ELIMINATION 1525 bool "Dead code and data elimination (EXPERIMENTAL)" 1526 depends on HAVE_LD_DEAD_CODE_DATA_ELIMINATION 1527 depends on EXPERT 1528 depends on $(cc-option,-ffunction-sections -fdata-sections) 1529 depends on $(ld-option,--gc-sections) 1530 help 1531 Enable this if you want to do dead code and data elimination with 1532 the linker by compiling with -ffunction-sections -fdata-sections, 1533 and linking with --gc-sections. 1534 1535 This can reduce on disk and in-memory size of the kernel 1536 code and static data, particularly for small configs and 1537 on small systems. This has the possibility of introducing 1538 silently broken kernel if the required annotations are not 1539 present. This option is not well tested yet, so use at your 1540 own risk. 1541 1542config LD_ORPHAN_WARN 1543 def_bool y 1544 depends on ARCH_WANT_LD_ORPHAN_WARN 1545 depends on $(ld-option,--orphan-handling=warn) 1546 depends on $(ld-option,--orphan-handling=error) 1547 1548config LD_ORPHAN_WARN_LEVEL 1549 string 1550 depends on LD_ORPHAN_WARN 1551 default "error" if WERROR 1552 default "warn" 1553 1554config SYSCTL 1555 bool 1556 1557config HAVE_UID16 1558 bool 1559 1560config SYSCTL_EXCEPTION_TRACE 1561 bool 1562 help 1563 Enable support for /proc/sys/debug/exception-trace. 1564 1565config SYSCTL_ARCH_UNALIGN_NO_WARN 1566 bool 1567 help 1568 Enable support for /proc/sys/kernel/ignore-unaligned-usertrap 1569 Allows arch to define/use @no_unaligned_warning to possibly warn 1570 about unaligned access emulation going on under the hood. 1571 1572config SYSCTL_ARCH_UNALIGN_ALLOW 1573 bool 1574 help 1575 Enable support for /proc/sys/kernel/unaligned-trap 1576 Allows arches to define/use @unaligned_enabled to runtime toggle 1577 the unaligned access emulation. 1578 see arch/parisc/kernel/unaligned.c for reference 1579 1580config SYSFS_SYSCALL 1581 bool "Sysfs syscall support" 1582 default n 1583 help 1584 sys_sysfs is an obsolete system call no longer supported in libc. 1585 Note that disabling this option is more secure but might break 1586 compatibility with some systems. 1587 1588 If unsure say N here. 1589 1590config HAVE_PCSPKR_PLATFORM 1591 bool 1592 1593menuconfig EXPERT 1594 bool "Configure standard kernel features (expert users)" 1595 # Unhide debug options, to make the on-by-default options visible 1596 select DEBUG_KERNEL 1597 help 1598 This option allows certain base kernel options and settings 1599 to be disabled or tweaked. This is for specialized 1600 environments which can tolerate a "non-standard" kernel. 1601 Only use this if you really know what you are doing. 1602 1603config UID16 1604 bool "Enable 16-bit UID system calls" if EXPERT 1605 depends on HAVE_UID16 && MULTIUSER 1606 default y 1607 help 1608 This enables the legacy 16-bit UID syscall wrappers. 1609 1610config MULTIUSER 1611 bool "Multiple users, groups and capabilities support" if EXPERT 1612 default y 1613 help 1614 This option enables support for non-root users, groups and 1615 capabilities. 1616 1617 If you say N here, all processes will run with UID 0, GID 0, and all 1618 possible capabilities. Saying N here also compiles out support for 1619 system calls related to UIDs, GIDs, and capabilities, such as setuid, 1620 setgid, and capset. 1621 1622 If unsure, say Y here. 1623 1624config SGETMASK_SYSCALL 1625 bool "sgetmask/ssetmask syscalls support" if EXPERT 1626 default PARISC || M68K || PPC || MIPS || X86 || SPARC || MICROBLAZE || SUPERH 1627 help 1628 sys_sgetmask and sys_ssetmask are obsolete system calls 1629 no longer supported in libc but still enabled by default in some 1630 architectures. 1631 1632 If unsure, leave the default option here. 1633 1634config FHANDLE 1635 bool "open by fhandle syscalls" if EXPERT 1636 select EXPORTFS 1637 default y 1638 help 1639 If you say Y here, a user level program will be able to map 1640 file names to handle and then later use the handle for 1641 different file system operations. This is useful in implementing 1642 userspace file servers, which now track files using handles instead 1643 of names. The handle would remain the same even if file names 1644 get renamed. Enables open_by_handle_at(2) and name_to_handle_at(2) 1645 syscalls. 1646 1647config POSIX_TIMERS 1648 bool "Posix Clocks & timers" if EXPERT 1649 default y 1650 help 1651 This includes native support for POSIX timers to the kernel. 1652 Some embedded systems have no use for them and therefore they 1653 can be configured out to reduce the size of the kernel image. 1654 1655 When this option is disabled, the following syscalls won't be 1656 available: timer_create, timer_gettime: timer_getoverrun, 1657 timer_settime, timer_delete, clock_adjtime, getitimer, 1658 setitimer, alarm. Furthermore, the clock_settime, clock_gettime, 1659 clock_getres and clock_nanosleep syscalls will be limited to 1660 CLOCK_REALTIME, CLOCK_MONOTONIC and CLOCK_BOOTTIME only. 1661 1662 If unsure say y. 1663 1664config PRINTK 1665 default y 1666 bool "Enable support for printk" if EXPERT 1667 select IRQ_WORK 1668 help 1669 This option enables normal printk support. Removing it 1670 eliminates most of the message strings from the kernel image 1671 and makes the kernel more or less silent. As this makes it 1672 very difficult to diagnose system problems, saying N here is 1673 strongly discouraged. 1674 1675config BUG 1676 bool "BUG() support" if EXPERT 1677 default y 1678 help 1679 Disabling this option eliminates support for BUG and WARN, reducing 1680 the size of your kernel image and potentially quietly ignoring 1681 numerous fatal conditions. You should only consider disabling this 1682 option for embedded systems with no facilities for reporting errors. 1683 Just say Y. 1684 1685config ELF_CORE 1686 depends on COREDUMP 1687 default y 1688 bool "Enable ELF core dumps" if EXPERT 1689 help 1690 Enable support for generating core dumps. Disabling saves about 4k. 1691 1692 1693config PCSPKR_PLATFORM 1694 bool "Enable PC-Speaker support" if EXPERT 1695 depends on HAVE_PCSPKR_PLATFORM 1696 select I8253_LOCK 1697 default y 1698 help 1699 This option allows to disable the internal PC-Speaker 1700 support, saving some memory. 1701 1702config BASE_SMALL 1703 bool "Enable smaller-sized data structures for core" if EXPERT 1704 help 1705 Enabling this option reduces the size of miscellaneous core 1706 kernel data structures. This saves memory on small machines, 1707 but may reduce performance. 1708 1709config FUTEX 1710 bool "Enable futex support" if EXPERT 1711 depends on !(SPARC32 && SMP) 1712 default y 1713 imply RT_MUTEXES 1714 help 1715 Disabling this option will cause the kernel to be built without 1716 support for "fast userspace mutexes". The resulting kernel may not 1717 run glibc-based applications correctly. 1718 1719config FUTEX_PI 1720 bool 1721 depends on FUTEX && RT_MUTEXES 1722 default y 1723 1724config FUTEX_PRIVATE_HASH 1725 bool 1726 depends on FUTEX && !BASE_SMALL && MMU 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